Ein Bekannter hat sich letztens einen neuen Laptop gekauft, allerdings ohne CD-Laufwerk und ohne vorinstalliertes Betriebssystem. Die Windows-auf-USB-Stick-Installation klappte nicht, also musste eine alternative Lösung her. Diese werde ich in diesem Blogpost erläutern.
Die Situation
Funfact vor weg: Notebooksbilliger.de hat zum CD-laufwerklosen Laptop eine Treiber-CD mitgeliefert. Der Sinn ergibt sich mir bis jetzt nicht. Zudem war auf dem „betriebssystemlosen“ Laptop ein Linpus-Linux (Chinalinux) vorinstalliert.
Nichtsdestotrotz war das Ziel ein Windows auf diesem Laptop zu installieren. Der Versuch eine Windows-ISO auf einem USB-Stick bootbar zu machen klappte zunächst, jedoch meldete die Installationsroutine der USB-Stick könne nicht gefunden werden.
Der Workaround
Da es schon spät abends war, hatte ich auch keine Lust mehrere solcher Windows-USB-Sticks zu erstellen. Eine alternative Lösung musste her.
Da erinnerte ich mich an den Google-CTF, in dem man mit dem NBD-Protokoll arbeiten musste.
Folgende Idee kam mir dabei in den Kopf:
- Auf beiden Laptops Linux starten
- Festplatte über NBD freigeben und einhängen
- Mit VirtualBox Windows auf die freigegebene Festplatte installieren
Das hört sich kompliziert an, hatte am Ende aber einige Vorteile, da Windows 7 leider keine passenden USB- bzw. Netzwerktreiber für den Laptop mitbrachte:
- USB-Zugriff über VirtualBox
- Netzwerk-Zugriff über VirtualBox
- CD-Zugriff über VirtualBox
Die Umsetzung
Zunächst bootet man auf zwei Rechnern Linux. In meinem Fall habe ich für den neuen Laptop (A) ein Archlinux-Livesystem genutzt, da auf meinem Laptop (B) bereits Archlinux läuft. Andere Distributionen sollten für dieses Vorhaben auch nutzbar sein, allerdings muss wahrscheinlich ein andersnamiges Paket installiert werden.
Der erste Schritt besteht darin, auf beiden Laptops NBD zu installieren. Unter Archlinux heißt das Paket „nbd“.
sudo pacman -S nbd
Als nächstes baut man ein Netzwerk zwischen beiden Rechnern auf. Dazu habe ich diese mit einem LAN-Kabel direkt verbunden. Es ist aber auch möglich einen Router und automatische IP-Konfiguration (DHCP) zu nutzen.
Auf Laptop B:
sudo ip a a 192.168.50.1/16 dev enp2s0f0
wobei „enp2s0f0“ euer Netzwerkinterface ist.
Auf Laptop A:
sudo ip a a 192.168.50.2/24 dev enp2s0
sudo ip r a 192.168.50.0/24 via 192.168.50.1 dev enp2s0
Danach sollten beide Geräte sich pingen können.
Als nächstes gibt man in diesem Netzwerk die Festplatte von A frei:
nbd-server -d -C /dev/null 1337 /dev/sda
Parameter:
- -d : Debugmodus, Prozess geht nicht in den Hintergrund
- -C /dev/null: Keine Konfigurationsdatei laden
- 1337: Port, auf dem die Freigabe läuft
- /dev/sda: Festplatte, die freigegeben werden soll
Auf B bindet man das Gerät entsprechend ein:
nbd-client -nofork 192.168.50.2 1337 /dev/nbd0
Parameter:
- -nofork: Nicht in den Hintergrund gehen
- 192.168.50.2: IP von A
- 1337: Port auf dem A die Freigabe hat
- /dev/nbd0: 1. Freigabe von A.
Als nächstes braucht man ein wenig VirtualBox-Magic, um VirtualBox die Netzwerkfreigabe als eigenständige Festplatte vorzugaukeln:
VBoxManage internalcommands createrawvmdk -filename /tmp/laptop-windows.vmdk -rawdisk /dev/nbd0
Parameter:
- -filename: Pfad zur neuen vmdk-Datei („Symlink“)
- -rawdisk: Pfad zur echten Festplatte, nämlich der Netzwerkfreigabe, also der Festplatte auf A
Nun kann man in VirtualBox eine neue virtuelle Maschine anlegen. Dabei gibt man als „vorhandene Festplatte“ den Pfad „/tmp/laptop-window.vmdk“ an. Alle Änderungen die man in der virtuellen Maschine vornimmt, werden dann über das Netzwerk auf die Festplatte von Laptop A geschrieben.
Problem gelöst und Windows endlich installiert :)
~ Sebastian