[[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.)