Skip to topic | Skip to bottom
Home

Tesi
Tesi.AvanzamentoLavorir1.25 - 16 Dec 2005 - 21:51 - PaoloPancalditopic end

Start of topic | Skip to actions

21.4 - Installazione Virtual PC

In questi giorni ho recuperato una versione di Virtual PC 2004 (l'ultima) e finalmente oggi sono riuscito a installarlo sul pc. Tutto andato a buon fine. Letta la documentazione a riguardo e primi approcci con l'applicazione.

22.4 - VMC e SO

Prime prove di creazione delle macchine virtuali (VMC) e relativa installazione dei SO. La creazione della vmc in sè è alquanto semplice, Virtual PC (VPC) crea 2 file, uno di dimensioni ridotte contenente i dati dell' hard disk virtuale in cui sarà contenuto il SO, e un altro contenente "l'immagine" del sistema operativo e tutte le relative modifiche apportate: ogni programma sopra installato, i file creati, ecc... verranno memorizzati tutti all'interno di questo unico enorme file. Ovviamente piu' recente sarà il SO montato e maggiore sarà la memoria RAM richiesta per fare girare tutto il sistema.

Sistema operativo guest Memoria minima Spazio minimo su disco rigido
Win 95 32 MB 500 MB
Win 98, Win 98 SE 64 MB 500 MB
Win ME 96 MB 2 GB
Win NT 4.0 SP6 o + 32 MB 500 MB
Win 2000 Prof 96 MB 2 GB
Win XP Home e Prof 128 MB 2 GB

In questo modo grazie a VPC è possibile gestire diverse macchine, i diversi SO, e quindi testare il comporatamento e l'efficienza delle applicazioni senza perdere tempo e senza dover riavviare ogni volta il computer. Il problema maggiore è che VPC richiede una quantità enorme di memoria, quindi consiglio di avviare una macchina alla volta, testare l'applicazione, salvare lil risultato, chiudere l'ambiente e procedere con le successive verifiche una per volta.

Per creare la VMC e il relativo hard disk è sufficiente specificare la directory in cui sarà memorizzato il file e successivamente selezioanre il relativo SO che si intende installare. Per fare questo è disponibile una scelta abbastanza vasta di opzioni tra le diverse versioni di Windows, Linux e altri SO meno noti.

Ovviamente VPC non mette a disposizione anche i SO, quelli è necessario comprarli smile

Io ho fatto la prova con Windows 98. Inizialmente ho avuto un po' di problemi: non riuscivo a montare il cd di installazione, inoltre ho dovuto attivare il supporto per dischi rigidi grandi, altrimenti l'installazione non andava a buon fine ma veniva generato un errore dovuto alla mancata scrittura del file per incompatibilità con la partizione NTFS in cui esso risiede. In ogni modo sono riuscito a completare l'installazione con successo, notando comunque un notevole impiego di tempo nella iniziale ricerca delle periferiche e caricamento dei relativi driver.

25.4 / 26.4 - Problemi

Inizio a documentarmi sulle effettive capacità di VPC, caratteristiche tecniche e possibilità di interagire con lui tramite linea di comando o tramite script. Sono sorti 2 problemi:

VirtualPC NON puo' emulare Mac

No perchè Mac OS è scritto per una architettura proprietaria.
No perchè Mac OS necessità di un processore virtuale diverso da quello usato per emulare Win e Linux; lo stesso Virtual PC per Mac non può emulare se stesso, emula solo SO Windows.
Da visualwin.com :
Mac OS runs on a Mac, which is not the same type of computer as one that runs Windows. Macs use PowerPC processors where Windows computers use x86 processors. There is an effort to run Mac OS on an x86 called PearPC.
Lo stesso VMware, software antagonista di Microsoft nel campo dei pc virtuali, NON supporta Mac OS come sistema operativo guest (quello installato nei pc virtuali).

SO supportati da Virtual PC:
Virtual PC supporta i seguenti sistemi operativi: Windows 95, Windows 98, Windows ME, Windows NT 4.0 Workstation, Windows 2000 Professional, Windows XP, MS-DOS, OS/2 Warp Version 4 Fix Pack 15, OS/2 Warp Convenience Pack 1 e OS/2 Warp Convenience Pack 2, oltre a sistemi operativi Windows Server e a molti altri sistemi operativi di altri produttori, inclusi Red Hat Linux, Novell NetWare e altri ancora
by http://www.microsoft.com/windows/virtualpc/evaluation/techoverview.mspx

VirtualPC NON è gestibile tramite script

Ho considerato 2 possibili metodi di interazione con VPC:
- Uso delle Command-Line (integrate nel software dai produttori)
- Creazione di script tramite programmazione ad oggetti

Il problema è che le command-line disponibili per VPC sono davvero povere, permettono l'avvio di una VMC, del SO, e il settaggio di pochi altri parametri (altezza finestra, fullscreen, ...). D'altra parte la documentazione non fa riferimento a gestione delle macchine host tramite script e linguaggi di programmazione. Mi sono informato sul newsgroup ufficiale, microsoft.public.virtualpc, e questa è stata la risposta:
Virtual PC has no scripting interface, COM object, or any other way you would be able to program it. That is only possible with Virtual Server.

Microsoft per l'appunto ha messo sul mercato un altro software, molto più potente, chiamato Virtual Server (VS).
A differenza di VPC, questa applicazione è in grado di accettare comandi tramite script.

28.4 - Informazioni su Microsoft VirtualServer 2005

Technical Overview

Administration of Virtual Server 2005 is easy because of standard server management tools and a simple Web-based management interface. Comprehensive scripted control through a robust and fully documented COM API enables automated deployment and configuration of connected virtual machines.

Deployment Through scripted control of portable, connected virtual machines, Virtual Server 2005 enables automated configuration and deployment.

Comprehensive COM API Virtual Server supports a full-featured COM API that contains 42 interfaces and hundreds of calls, allowing scripts to control nearly every aspect of the product. Because the scripting model is based on COM, users are not tied to a specific scripting language but can choose from Microsoft Visual Basic, C#, Perl, and many other modern development languages. Furthermore, scripts can be triggered by certain events within Virtual Server. Customers benefit from greater ease of customization and automation using the Virtual Server COM API. The scripting API makes Virtual Server 2005 a powerful platform for virtualization solutions by:

  • Enabling programmatic control over the configuration and administration of virtual machines.
  • Automating virtual machine deployment and operations.
  • Helping customers to integrate virtual machines into their existing IT infrastructural operations for reduced cost and enhanced manageability.

Guest operating system requirements

Although Virtual Server 2005 can run virtually all major x86-based server operating environments, Microsoft Product Support Services supports * only the following guest operating systems using Virtual Server 2005:

  • Any 32-bit version of the Microsoft Windows Server 2003 operating systems, except Datacenter Edition
  • Microsoft Windows NT® Server 4.0 with Service Pack 6a
  • Any Microsoft Windows 2000 Server operating system, except Datacenter Edition
  • Windows XP SP2 (for Virtual Server SP1 only)

* Optimizes for compute, storage and networking performance

- - - -

In sostanza è possibile "virtualizzare" qualsiasi sistema operativo, anche Linux, ma Microsoft si limita a fornire supporto solo ai propri SO; se sorgono problemi con "Linux virtualizzato" Microsoft non dà supporto.

02.05 - Cambio di programma

Accertata l'impossibilità di utilizzare Virtual Pc per lo sviluppo della mia tesi, ho rivolto la mia attenzione su VirtualServer: Inizio a creare l'applicazione in C#.

03.05 - Analisi classi di VirtualServer e installazione Windows 95

Ho analizzato le classi esistenti da utilizzare per il mio progetto. Inoltre ho cercato di installare Windows 95 ma ho avuto un po' di problemi: ho ricevuto un primo errore in quanto il SO non veniva installato in una partizione NTFS, da qui la necessità di usare fdisk per partizionare l'hard-disk "virtuale" in Fat. Successivamente ho ricevuto l'errore SU-0013.

04.05 - Primi successi

Completata con successo l'installazione di Windows 95. Positiva anche la connessione con il Server Virtuale, dopo un paio di tentativi sono riuscito a farmi restituire la versione del Server.

09.05 - Passaggio da C# a VB.NET

Abbandono l'idea di sviluppare l'applicazione con C#. L'estrema efficacia di Visual Basic .NET nella creazione di interfacce utente e l'enorme quantità di informzioni trovate su internet a riguardo mi hanno convinto a passare a VB.NET.

10.05 - Interagendo con VS...

Oggi ho ricreato l'interfaccia utente , la connessione a VirtualServer e ho iniziato a interagire con lui per farmi restituire valori, versioni,... Avevo pensato di creare dinamicamente un elenco delle VMC disponibili con i relativi SO installati. Purtroppo ho constato l'impossibilità di VS di restituirmi tali SO nel caso in cui la "macchina virtuale" su cui risiedono sia spenta. Ho deciso pertanto di creare un file di configurazione (.xml) che verrà scritto a mano e richiamato dall'applicazione per le impostazioni di routine.

11.05 - Interagisco

Tramite il mio form riesco a interagire con le VMC: Accendo, spengo, salvo, riesumo... Sorti problemi con il form. Non è visibile al resto dei moduli (istanza non è globale???)

12.05 - Problema con Form Multipli... finalmente risolto!

Con VB.NET è cambiato l'utilizzo di form multipli rispetto alle sue versioni precedenti. In VB6 viene automaticamente creata un'istanza predefinita per ogni form e si accede all'istanza utilizzando il nome del form. Invece in .NET non ci sono istanze predefinite: un form si riferisce esclusivamente alla classe che lo rappresenta e tale classe non può essere utilizzata senza averne prima creato un'istanza. Il secondo problema è che, in VB6, queste istanze predefinite del form sono globali per l'intero progetto; in .NET no.

Uso di form multipli in Visual Basic .NET

13.05 - I problemi non vengono mai da soli.

Problemi attuali non ancora superati:
  1. Connessione lan e internet: Host e VMC non riescono a comunicare. I guestsOS non accedono a internet. RISOLTO
  2. Print Screen: sembra che il print dello schermo non sia disponibile tramite tastiera (solo con click del mouse sul menu). RISOLTO
  3. Controllare se è possibile indicare una cartella condivisa in cui mettere i miei file. RISOLTO

14.05 - I SO guest sono Online.

Smanettando un po' con DHCP e Co. risolvo i problemi di connessione con Win95 e Win98. Ecco le impostazioni:
  • Network address: 10.0.0.0
  • Network mask: 255.255.255.0
  • Starting IP address: 10.0.0.16
  • Ending IP address: 10.0.0.100
  • Virtual DHCP server address: 10.0.0.2
  • Default gateway address: 10.0.0.2

16.05 - Eureka Schermo catturato!

Inizialmente avevo pensato a due possibili metodi per catturare lo schermo:
  1. Inviare il comando al SO client, salvare l'immagine e rimandarla al SO host
  2. Aprire il SO client, chiamare il print dello schermo dall'host e salvare l'immagine

La prima possibilità non funziona, in quanto la richiesta di comando print non è inviabile tramite script e inoltre l'immagine non saprei come recuperarla (magari basta condividere le cartelle, ma non ho provato). Inoltre il comando di print sarebbe diverso a seconda del SO utilizzato (windows, linux, ecc). La seconda possibilità mi apre in fullscreen il SO client, stampa, ma l'immagine è completamente nera, in piu' è poco funzionale perchè utilizzo la Clipboard di windows.

Pertanto sono arrivato a un'ultima soluzione: apro la VMC tramite la VMRC (Virtual Machine Remote Control Client), sposto la finestra rendendola full-screen e utilizzo direttamente le API di windows per catturare lo schermo. In questo modo non uso la clipboard, non devo inviare script particolari al SO client, e non devo cambiare comando a seconda del SO utilizzato.

22.05 - Problema: le macchine virtuali non sono "scriptabili"

Una macchina virtuale è a tutti gli effetti un altro pc della mia lan. Non è possibile comandarle da remoto tramite script o programmazione con C#, vb.net, le uniche azioni possibili sono eseguibili sulla mia stessa macchina al verificarsi di un particolare evento (una macchina remota si accende, si spegne,...). Questo problema è parecchio serio, perchè limita lo sviluppo del mio progetto.

07.06 - Incontro con il prof FabioVitali

Analizzato il problema appena esposto, consideriamo la necessità di dover creare un ulteriore applicazione residente in ogni SO virtuale. Essa verrà eseguita a ogni avvio del sistema e leggerà le configurazioni e le operazioni da svolgere in un file predisposto all'interno di una cartella da me condivisa. D'ora in poi chiamerò FileHost l'applicazione madre installata nella mia macchina, e FileGuest quella residente in ogni SO virtuale.

13.06 - Eliminazione Auto Login

Per rendere piu' veloce il lavoro di caricamento e spegnimento dei SO virtuali, inizialmente avevo pensato di non arrestarli mai, piuttosto di ibernarli. Tuttavia, dato che ogni FileGuest viene eseguito a ogni avvio del sistema, ho la necessità di riavviare continuamente le macchine. A questo proposito cerco il modo di eliminare la richiesta di inserimento della password a ogni avvio.
support.microsoft.com

20.06 - Lettura XML e caricamento dati

Ho creato un file XML di configurazione in cui sono contenuti i nomi delle macchine virtuali e l'elenco dei browser disponibili. A ogni avvio del FileHost vengono letti tutti i dati e caricati in 3 CheckBoxList per la selezione dei browser.

27.06 - FileHost (quasi) completo.

Ho modificato leggermente la schermata di scelta dei browser: adesso una prima ListBox raccoglie i nomi dei browser disponibili, la seconda mostra le versioni relative, e infine nella terza CheckListBox ci sono i SO che ospitano tali browser. Sostanzialmente la scelta dei browser avviene attraverso un click sul SO prescelto, o attraverso un doppioClick sui browser o sulle loro rispettive versioni per effettuare una selezione multipla. Ho inserito anche la possibilità di caricare e salvare le scelte predefinite (che vengono richiamate automaticamente a ogni avvio del programma). Inoltre ho aggiunto un controllo sui nodi e sugli attributi del file XML (quello con le configurazioni delle vmc e dei browser) in modo da ridurre al minimo la possibilità di crash. Infine ho predisposto la scrittura del file di configurazione (url e browser scelti dall'utente) che verrà caricato all'avvio di ogni FileClient. Prossimo passo: creazione FileClient smile

05.07 - Incontro con FabioVitali

Mostrato l'avanzamento del FileHost, scoperti alcuni problemi, indicato come proseguire.

08.07 - Laboratorio: prime installazioni

A parte qualche problema iniziale (non tutti i cd msdn sono di boot, ho dovuto capire quali richiedono i floppy) ho installato Win95, WinNT, WinXP home. Tutti sono già connessi a internet. Ho iniziato l'installazione di Win2000 ma mi sono bloccato non trovando il codice.

15.09 - Auto Logon

In questi giorni cerco in rete i metodi per eliminare il logon, ovvero la richiesta di inserimento della password al momento dell'avvio di Windows, dal 95 in poi. Sulla maggior parte dei SO basta intervenire sul registro di sistema.

20.09 - FileClient: creazione

In un primo momento inizio a scrivere il programma client in vb.net, dopodichè decido di passare a Java, molto più compatibile e adatto all'installazione su diversi SO.

22.09 - Problema JVM

La JVM non è compatibile con Win 95.
La JVM è compatibile con NT SP6a ma il browser originale (IE), essendo troppo vecchio rispetto all'interprete causa un errore al momento della sua installazione. Per questi 2 SO decido di ricorrere a VB6.

25.09 - Problema shutdown

Dopo il printScreen di ogni browser è necessario che il SO riceva l'ordine di spegnersi, in modo da permettere alla macchina server di inviare nuove istruzioni o terminare il processo. Nelle ultime versioni di Windows è disponibile il comando DOS "shutdown", mentre nelle più vecchie è necessario utilizzare le librerie "rundll.exe". Win95 e NT non ancora risolti.

27.09 - Linux

In un attimo di tempo ho provato ad avviare il FileClient su Fedora di un amico. L'applicazione non riesce a connettersi al server, funziona solo rendendo disponibile il file di configurazione sulla macchina stessa. Evidentemente e' necessario impostare i diritti di autenticazione di linux, ma attualmente ignoro come si possa fare.

30.09 - Problema Win95

Dopo aver creato il nuovo FileClient in VB6, i problemi rimangono: eliminando il logon, automaticamente Win95 non e' piu' in grado di salvare la password di connessione al server (mostra la finestra di richiesta input). Le informazioni trovate su microsoft.com non risolvono il problema.

03.10 - Problema Win95 "Network Drive Connection" risolto

Attraverso il comando dos "net use" è possibile connettere Windows a una periferica di rete. Ho pensato di utilizzare tale istruzione a ogni avvio del file batch per montare la mia cartella condivisa. E funziona! smile
Problema irrisolvibile:
Mi sono accorto che "ogni tanto" Win95 non riesce a connettersi al server, restituendo un errore... un bel riavvio e funziona tutto come prima! No comment. frown

04.10 - Shutdown Win95/98 risolto

Oggi mi sono concentrato sul problema shutdown. Per Windows95 ho risolto il problema inserendo nello stesso FileClient la funzione di spegnimento. Per WinNT? è stato un po' piu' complicato, in quanto le classiche chiamate al file rundll.exe non risolvevano il problema ed è stato pertanto necessario chiudere prima tutti i servizi attivi (Messenger, Server,...)

-- PaoloPancaldi - 04 Oct 2005
to top


You are here: Tesi > ArgomentiDiTesi > LaboratorioWeb > AvanzamentoLavori

to top

Copyright © 1999-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Fabio's Wiki? Send feedback