[[PageOutline]] = Windows in der Virtual Box = Ziel: Die Benutzer können von den LtspClients aus Virtualbox startetn, das ein Windows ausführt. Von dort können sie wie gewohnt auf Ihre Dateien und die Tauschverzeichnisse zugreifen. == Teilen des gleichen Snapshots == In unserem Setup werden viele Nutzer gleichzeitig auf die gleiche virtuelle Windows-Installation zugreifen. Frage:: Können sich mehrere Nutzer gleichzeitig das gleiche Windows-Image teilen? Idee:: Das kann wohl nur gehen, wenn nicht alle Nutzer gleichzeitig das selbe Image beschreiben können. Sie dürfen zwar gemeinsam //lesen//, müssen jedoch in verschiedene Dateien //schreiben//. Unsere Hoffnung ist, dass dies passiert, wenn man in VirtualBox einen "Snapshot" erstellt und den startet. Dann sollten alle Änderungen in ein Differenzplattenimage gehen. === Wahl des passenden Medientyps === In der VirtualBox-Konfig kann man anklicken, dass eine virtuelle Platte "unveränderlich" sein soll (Medieneigenschaften). Kapitel 5.4 und 5.5 des ziemlich gut geschriebenen VirtualBox-Manuals enthalten die relevanten Informationen: - [https://www.virtualbox.org/manual/ch05.html 5 Virtual Storage] - [https://www.virtualbox.org/manual/ch05.html#hdimagewrites 5.4 Special Image Write Modes] - [https://www.virtualbox.org/manual/ch05.html#diffimages 5.5 Differencing Images] Demnach sind die Modi, die für uns in Frage kommen - "immutable" - "multi-attach mode" - oder eventuell auch "shareable". (Ausprobieren!) ==== Medientyp: unveränderlich (immutable) ==== Ein wichtiger Hinweis steht da, wie man ein "immutable" Image richtig erstellt: 1. Zuerst als "normales" Image installieren, bis alles in dem Zustand ist, in dem man es einfrieren möchte. 1. Dann die virtuelle Maschine //abschalten//(!) 1. Dann das Image als "immutable" kennzeichen Danach sollte jeder Nutzer bei jedem Start der virtuellen Maschine wieder das eingefrorene Image erhalten, **das Differenzabbild wird automatisch verworfen!** Das scheint doch genau das zu sein, was wir wollen, oder? Funktioniert aber nicht, wenn das Image von einer //laufenden// Maschine eingefroren wurde (siehe Manual). Das bedeutet, dass die Nutzer dann auch gerne im Windows als Administrator angemeldet sein können, dann muss man im Windows nicht auch noch Rechteverwaltung machen. ==== Medientyp: multi-attach mode ==== Beim Medientyp "multi-attach mode" können mehrere VM konkurrierend auf ein Image zugreifen. Jede Maschine erhält ihr Differenzabbild (im Homeverzeichnis des Users). Das Differenzabbild überlebt zwischen verschiedenen Aufrufen. ==== Medientyp: shareable ==== Der Medientyp "shareable" erlaubt es mehreren laufenden virtuellen Maschinen gleichzeitig auf das gleiche Image zuzugreifen. Die Maschinen erhalten **kein Differenzabbild**, sondern greifen wirklich alle gleichzeitig auf die Datei zu, wie auf einem normalen Multiuser-Betriebssystem. (Kommt Windows damit klar?) == !Anmeldung/Zugriff auf die home- und share-Verzeichnisse == Da VirtualBox auf dem LtspServer läuft, auf dem `/home/...` bereits gemountet ist, braucht innerhab des Windows - keine LDAP-Anmeldung zuerfolgen - keine Verzeichnisse gemountet zu werden Das virtuelle Windows erbt all das vom Host. == VirtualBox als lokale Applikation == Möglicherweise muss VirtualBox als lokale Applikation auf den LtspClients laufen, um performant genug zu sein. (?) == Notizen RAL Linux 6.2.2013 === Mitglied in der Gruppe vboxusers Nutzer müssen in der Gruppe vboxusers sein, damit sie Virtualbox ausführen dürfen. Das lässt sich bequem über die `/etc/security/group.conf` machen, oder über den LDAP-Mechanismus, den wir für die Gruppe `video` verwenden. === Einrichten des Windows-Images - (Das Windows-Image sollte so weit wie möglich abgespeckt werden.) - Es braucht nur einen Nutzer zu geben, (mit Administratorrechten?) - Das Homeverzeichnis des Nutzers sollte als "shared folder" eingebunden werden und dann unter "Eigene Dateien" erscheinen. - Auslagerungsdatei abstellen! Stattdessen der VM mehr virtuellen Speicher geben, dann dann macht der Server wenn nötig das Swappen. - Die komische Systemwiederherstellung von Windows abstellen, die alle Änderungen mitverfolgt. ==== !GuestAdditions für Windows Für 3d-Beschleunigung nötig. Können nur im abgesicherten Modus installiert werden (beim Windows-Start F( drücken). === Umsetzung Das ganze lässt sich umsetzen, wie bei unserem LtspWine. - die "immutable" Platte mit der Windows-Installation liegt auf dem Server und wird nie herumkompiert - das Differenzabbild des Nutzers liegt lokal und wird jedesmal vorher/nachher gelöscht - Die Konfigurationen in `~/.VirtualBox` werden entweder über den Skeleton-Mechanismus verteilt, oder über rsync gesynct wie bei LtspWine. Jedenfalls müssen diese Dateien dem Nutzer gehören. ==== Alternative, die mir sinnvoller erscheint: - Das vdi-File liegt irgendwo lesbar - Die Nutzer bekommen per Skript die Virtuelle Maschine eingerichtet. Das geht mit dem vboxmanage-Befehl: {{{ vboxmanage createvm --name XP --ostype WindowsXP --register vboxmanage modifyvm XP --memory 512 vboxmanage modifyvm XP --vram 32 vboxmanage modifyvm XP --audio pulse vboxmanage storagectl XP --name IDE --add ide --bootable on vboxmanage storageattach XP --storagectl IDE --medium /usr/share/virtualbox-vdi/XP.vdi --mtype immutable --port 0 --device 0 --type hdd vboxmanage sharedfolder add XP --name home --hostpath $HOME --automount }}} - dabei sollte noch das Verzeichnis, in dem die VMs des Benutzers abgelegt werden, wo also das Differenzabbild liegt, nach /tmp oder so verschoben werden. - Parameter noch etwas tunen, dann sollte es das gewesen sein. ==== Einrichten der virtuellen Maschinen Um die virtuellen Maschinen für die Kollegen einzurichten, gibt es ein Skript. Das Skript liegt unter [source:/keplertools/scripts/trunk/setup-virtual-windows scripts/setup-virtual-windows]. Es muss derzeit aber auf einem LtspServer ausgeführt werden. Auf dem paedml läuft es nicht, weil es für das alte Debian kein aktuelles virtualbox gibt. (Ich hab nur in den APT-Quellen nachgesehen, vielleicht kann man das virtualbox-Paket direkt von Oracle installieren, das wollte ich auf dem paedml aber nicht machen.) Verwendung: {{{ linadmin@ltsp118:~$ setup-virtual-windows [uid] }}} Wird eine user id angegeben, wird die VM für diesen Nutzer eingerichtet. Wird das Skript ohne user id aufgerufen, legt es die VM für alle Lehrer an. ==== Administrieren des Windows-Images Das geteilte XP-Image liegt auf allen LtspServern unter `/usr/share/virtualbox-vdi/XP.vdi`. Die VM der normalen Nutzer greift darauf im "immutable"-Modus zu, mit Differenzbildern in den Homeverzeichnissen. Der Nutzer `linadmin` hat dagegen eine virtuelle Maschine, die schreibend auf das XP-Image zugreift. Das Administrieren läuft also folgendermaßen ab: 1. Als linadmin auf einem LtspServer einloggen 1. Vorsichtshalber eine Sicherungskopie der aktuellen Windows-Installation machen: {{{ linadmin@ltsp118:~$ cp /usr/share/virtualbox-vdi/XP.vdi /usr/share/virtualbox-vdi/XP.vdi-- }}} 1. Virtualbox starten und Maschine "XP-schreibbar" starten 1. Änderungen vornehmen 1. Virtuelle Maschine und Virtualbox beenden 1. Das neue Image auf alle LtspServer verteilen: {{{ linadmin@ltsp118:~$ sudo scripts/rsync-to-all-ltsp-servers /usr/share/virtualbox-vdi/XP.vdi }}} (Anbei: Dabei ist gut zu beobachten, dass das Syncen nach ltsp3 deutlich länger dauert, als bei den anderen, ticket:875.) == Zur Konfiguration der virtuellen Maschinen == Einige Hinweise zu empfohlenen Konfiguratiponsoptionen der VM: === SATA-Controller === Windows XP kann von sich aus nur von einem IDE-Laufwerk booten. Auch in VirtualBox ist die Emulation eines SATA-Laufwerks aber efizienter als die eines IDE-Laufwerks. SATA-Treiber können entweder vor dem Windows-Setup per Funktionstaste installiert werden, oder nach der fertigen Installation nachinstalliert werden. Danach kann das VirtualBox-Image vom IDE- an den SATA-Controller gehängt werden. VirtualBox emuliert einen Intel SATA-Controller. Den nötigen Treiber gibt es hier: http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&ProdId=2101&DwnldID=17882&lang=eng === //Storage --> Us host I/O cache// === Sollte auf Linux-Hosts wohl besser abgeschaltet sein, siehe - http://www.virtualbox.org/manual/ch05.html#iocaching > Disk image files tend to be very large. Caching them can therefore quickly use up the entire host OS cache. Depending on the efficiency of the host OS caching, this may slow down the host immensely, especially if several VMs run at the same time. For example, on Linux hosts, host caching may result in Linux delaying all writes until the host cache is nearly full and then writing out all these changes at once, possibly stalling VM execution for minutes. This can result in I/O errors in the guest as I/O requests time out there.