Du bist hier:Start»Linux»Virtualisierung»Windows 7

Windows 7 als virtuelle Maschine unter Linux

KVM Logo

Die Installation von Windows in einer virtuellen Maschine mit der Kernel-based Virtual Machine (KVM) ist nicht ganz einfach. Deshalb stelle ich ein kleines Shell-Skript zur Verfügung, das Windows 7 Service Pack 1 unter Ubuntu 12.04 in KVM installiert. Im folgenden Youtube-Video zeige ich zunächst die Benutzung des Skripts und den Installationsprozess. Unter dem Video folgt der Link und einige Hintergrundinformationen zum Skript.

Update für Ubuntu 14.04

[Update Mai 2015]: Mittlerweile hat sich ein Nutzer von Ubuntu 14.04 die Mühe gemacht und mein Shell-Skript für Ubuntu 14.04. portiert und auf Github bereitgestellt: kvmspicecreator.sh. Bei diesem Skript muss die Windows Installations-DVD "X17-58997.iso" von Hand heruntergeladen werden. Die Datei läßt sich nach einer kurzen Suche im Internet finden.

Benutzung des Skripts

Unter Ubuntu 12.04 mit 64 Bit funktioniert das Skript mit folgenden Befehlen in der Kommandozeile:

# download the script from command line
wget http://torsten-traenkner.de/linux/create_virtual_machine_with_windows_7.sh.tgz

# extract the script
tar xzvf create_virtual_machine_with_windows_7.sh.tgz

# run the script as root
sudo bash

# create a virtual machine with
# 20 GB virtual disk space and 1024 MB RAM
./create_virtual_machine_with_windows_7.sh 20 1024

# after installation start with:
./create_virtual_machine_with_windows_7.sh 20 1024 no checks

Details des Skripts

Das Skript überprüft, ob es unter Ubuntu 12.04 mit 64 Bit ausgeführt wird. Es sollte mit einigen Anpassungen auch unter anderen Linux-Distributionen laufen. Außerdem wird überprüft, ob das Skript mit Root-Rechten ausgeführt wird. Die Skript-Parameter 20 und 1024 bedeuten 20 Gigabyte virtueller Festplattenplatz und 1024 MB RAM für die virtuelle Maschine. Wenn genug Speicherplatz auf der echten Festplatte für die virtuelle Festplatte vorhanden ist, dann beginnt die Installation. Zunächst werden einige Software-Pakete für KVM in Ubuntu installiert. Hinweis: für die Unterstützung von USB-2.0-Geräten wird eine fremde Software-Quelle von Boris Derzhavets benutzt. Theoretisch können fremde Software-Quellen die Sicherheit des Systems gefährden. Nachdem alle notwendigen Software-Pakete installiert sind, werden einige Windows-Treiber und die Windows-Installations-Datei (ISO) mit einer Größe von 3 GB heruntergeladen. Je nach Internetverbindung dauert das einige Minuten bis Stunden. Sind alle Dateien heruntergeladen, werden die Prüfsummen der heruntergeladenen Dateien ermittelt und verglichen. Sind die Prüfsummen in Ordnung beginnt der Installationsprozess von Windows.

In der virtuellen Maschine mit Windows müssen zunächst die Lizenzbedingungen abgenickt werden. In den Lizenzbedingungen steht, dass nur eine virtuelle Maschine mit Windows auf einem Computer erlaubt ist, auf dem vorher Windows drauf war. Also für einen Linux-Benutzer, der eine Zwangsabgabe für Windows auf den Computer gezahlt hat, sind diese Lizenzbedingungen problemlos erfüllbar. Windows kann ohne zusätzliche Software-Treiber die virtuelle Festplatte nicht erkennen. Deshalb muss der virtio-Treiber von der virtuellen CD in Laufwerk E: geladen werden. Danach beginnt die Installation von Windows auf die virtuelle Festplatte.

Nach der Installation von Windows muss die virtuelle Maschine beendet werden. Das Skript wird jetzt mit den Parametern "no checks" aufgerufen, damit die Prüfsummen nicht noch einmal berechnet werden. Nach dem Start folgt die Konfiguration von Windows, indem die Batch-Datei configureWindows.bat von der virtuellen CD im Laufwerk F: aufgerufen wird. Die Registry-Einträge stellen scharfe Schriften unter Windows ein. Der darauffolgenden Windows-Dialog konfiguriert die automatische Anmeldung unter Windows ohne Passwort. Die Batch-Datei configureWindowsAsAdministrator.bat installiert die Spice-Gasterweiterungen für KVM und das Spice-Protokoll. Die Gasterweiterungen sind Software-Treiber für die virtuelle Windows-Maschine, die eine bessere Netzwerk- und Grafik-Leistung ermöglichen und ein Clipboard zum Austausch von Texten zwischen Windows und Linux zur Verfügung stellen. Damit die Treiber problemlos installiert werden können, habe ich das Programm "Driver Signature Enforcement Overrider" (dseo) benutzt.

Schließlich wird unter Windows als shared folder ftp://192.168.123.1 eingestellt. Shared folder ist ein gemeinsam genutzer Ordner zwischen dem virtuellen Windows und dem Linux-Host-System. In Windows funktioniert das durch einen Klick auf "Computer" - "Map network drive" im Windows Explorer. Im darauffolgenden Fenster muss "Connect to a Web site that you can use to store your documents and pictures" ausgewählt und bei FTP site die Adresse "ftp://192.168.123.1" eingegeben werden. Auf dem Linux-Host läuft im Hintergrund das Programm vsftpd (very secure file transfer protocol daemon). Auch wenn es andere Möglichkeiten für einen gemeinsam genutzten Ordner gibt, habe ich mich für FTP zum Austausch der Daten entschieden. Unter Windows ist der shared folder unter Computer - shared und unter Linux im Unterverzeichnis shared/shared/ zu finden.

Am Ende des Videos wird USB 2.0 Support demonstriert und die Spice-Gasterweiterungen im Gerätemanager von Windows angezeigt.

Firewall

Ich habe in dem Shell-Skript die Linux-Firewall aus Sicherheitsgründen so konfiguriert, dass die virtuelle Windows-Maschine keine Internet-Verbindung bekommt. Schließlich haben Windows und einige Windows-Programme die unangenehme Angewohnheit nach Hause zu telefonieren. Meine Empfehlung ist, sich über die Linux-Firewall iptables und den Internet-Proxy Squid zu informieren (auch wenn es Zeit kostet). Die folgenden Befehle geben eine schnelle Möglichkeit die virtuelle Maschine über den Proxy Squid ans Internet zu bekommen.

# show rules of iptables
iptables -nvL

# accept all packets at the virtual interface virbr2
iptables -I INPUT -i virbr2 -j ACCEPT

# the following commands need root privileges
sudo bash

# install the internet proxy squid
apt-get install squid3

# change the configuration for the virtual machine
sed -i 's|^http_access allow localhost$|acl allowed_networks src 192.168.123.0/24\nhttp_access allow allowed_networks|g' /etc/squid3/squid.conf

# restart squid because of the new configuration
service squid3 restart



# disable the previous iptables rule when internet access is not needed any more
iptables -D INPUT -i virbr2 -j ACCEPT

# stop squid after internet usage
service squid3 stop

Unter Windows kann jetzt im Webbrowser der Proxy Squid mit der Internet-Adresse 192.168.123.1 und TCP-Port 3128 eingestellt werden. Im folgenden Bild ist diese Einstellung für den Browser Firefox unter Windows zu sehen.

Proxy-Einstellungen in Firefox

Wie schon weiter oben erwähnt lohnt sich die Einarbeitung in iptables und Squid, um mehr Kontrolle beim Internetzugriff von Windows zu bekommen. Squid schreibt zum Beispiel eine Log-Datei und protokolliert den Zugriff auf Webseiten.

# display access to web sites
tailf /var/log/squid3/access.log

Als Alternative zu Squid können in der virtuellen Maschine einzelne Internetseiten zugelassen werden.

# allow access to certain web sites
# example for heise.de
echo 193.99.144.80 heise.de >> C:\Windows\System32\drivers\etc\hosts

# at the Linux host system enable ip forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

# set up the firewall rule
iptables -t nat -I POSTROUTING -j MASQUERADE -s 192.168.123.0/24 -d 193.99.144.80

# delete the firewall rule after usage
iptables -t nat -D POSTROUTING -j MASQUERADE -s 192.168.123.0/24 -d 193.99.144.80

Das war mein kleiner Artikel zu Windows 7 in KVM. Viel Spaß beim Experimentieren !
Falls noch etwas unklar sein sollte, dann kannst du die Kommentar-Funktion benutzen.

Kommentar schreiben