Duisburger Linux User Group - http://www.dulug.de
Workshop zu OpenSolaris unter qemu
Autor: M. Franke
Da ich schon länger mit OpenSolaris rumspiele und an sich recht
interessant finde, habe ich mich entschlossen eine kurze Anleitung
zu schreiben wie man OpenSolaris im qemu installiert. Zuerst sollten
ein paar Vorbereitungen getroffen werden.
Vorbereitungen
1. Zeit
Nehmt Euch Zeit, denn die werdet Ihr brauchen! Ich bin nachdem die
Installation abgeschlossen war glücklich aber ziemlich betrunken
eingeschlafen.
2. dev.rtc.max-user-freq
Stellt sicher das der Wert für dev.rtc.max-user-freq auf 1024 steht (als root):
# sysctl -a | grep max-user-freq
dev.rtc.max-user-freq = 64
|
Sollte der Wert nicht auf 1024 stehen (wie oben) dann gebt bitte als root folgendes ein:
# sysctl -w dev.rtc.max-user-freq=1024
|
3. OpenSolaris ISO
Ladet Euch das aktuelle OpenSolaris von http://www.opensolaris.org
herunter. Bei mir kommt im Momemt Solaris Express Community Edition
'b78' zum Einsatz. Desweiteren empfehle ich die DVD herunterzuladen,
dann entfällt der Wechsel der CD's.
4. 10 GB freier Festplattenspeicher
Für die virtuelle Festplatte für qemu empfehle ich 10GB Speicher. Sorgt also dafür das Ihr entsprechend viel Platz frei habt.
Installation
Zuerst solltet Ihr ein qcow-Image erstellen das dann als virtuelle Festplatte dienen wird:
$ qemu-img create -f qcow opensolaris.qcow 10G
|
Danach startet qemu und lasst ihn von Eurer OpenSolaris-DVD booten:
$ qemu -cdrom sol-nv-b78-x86-dvd.iso -boot d opensolaris.qcow -m 768m -no-kqemu -monitor stdio
|
Den Wert für den Speicher solltet Ihr zumindest für die Installation
auf 768 MB (-m 768m) setzen, später könnt Ihr den dann wieder
runtersetzen. Egal ob Ihr die Kernel-Beschleunigung für den qemu
(kqemu) geladen habt oder nicht, solltet Ihr diese nicht verwenden
(-no-kqemu). Wenn soweit alles geklappt habt hat, dann sollte jetzt der
Bootmanager zu sehen sein. Als Installationsroutine wählt bitte Solaris Interactive Text (Console session) (Menüpunkt 4) aus, alles andere macht nur Ärger. Nachdem Euer Rechner nun ein wenig ackert, sollte der Hinweis Setting up Java. Please wait...
kommen. Übt Euch an dieser Stelle in Geduld, das kann schon mal eine
halbe bis dreiviertel Stunde dauern bis die Installation fortfährt.
Danach werden ein paar Parameter (Hostname, root-Passwort etc.)
abgefragt, alles relativ straight-forward. Je nachdem welches
OpenSolaris-Release Ihr nutzt kann die Systemidentifikation auch länger
dauern. Auch hier heisst es wieder Geduld haben. Irgendwann später wird
die Software die Ihr ausgewählt habt installiert und der Rechner
neugestartet. An dieser Stelle gebt in der qemu-Shell nur quit ein:
Erster Start
Zuerst müsst Ihr als root /dev/shm neu mounten:
# umount /dev/shm
# mount -t tmpfs -o size=528m none /dev/shm
|
Wenn Ihr die Kernelbeschleunigung für qemu nutzen wollt:
Den Wert für max-user-freq wieder setzen (falls nötig):
# sysctl -w dev.rtc.max-user-freq=1024
|
Nun könnt Ihr als normaler User Euer frisches OpenSolaris starten:
$ qemu -boot c opensolaris.qcow -m 512m -monitor stdio
|
Der erste Start dauert was länger, aber irgendwann könnt Ihr den
grafischen Login-Screen sehen (wie Ihr seht wurde der Speicher auf 512
MB begrenzt). Dann könnt Ihr Euch als root anmelden und mit OpenSolaris
rumspielen. Wenn Ihr OpenSolaris das nächste mal startet sollte alles
was zügiger gehen!
Netzwerk
Wenn Ihr soweit gekommen seid das OpenSolaris startet dann könnt Ihr euch schonmal auf die Schulter klopfen! Nun kommen wir zu etwas schwierigen, dem Einsatz des Netzwerkes. Da ich die OpenSolaris Insatallation nativ in meinem Netzwerk nutzen wollte, müssen erst wieder ein paar Vorbereitung getroffen werden. Mein Netzwerk besteht aus Rechnern mit der IP 192.168.1.X. Server liegen in den IP-Range 1-10 mit fester IP, Workstations in dem IP-Range 11-20 gesteuert über DHCP. Da das OpenSolaris bei mir als Server dienen soll bekommt es die IP 192.168.1.5. Der qemu läuft aber auf einem Rechner mit der IP 192.168.1.18, also eine Workstation bei der die IP schon mal wechselt. Wir brauchen also ein virtuelles Netzwerkdevice auf dem eigentlichen qemu-Rechner und eine Bridge die beide Netzwerkdevices versorgen kann (das eigentliche eth0 der Workstation und das virtuelle Netzwerkdevice für den qemu selbst). Das ganze sieht ungefähr so aus:
Das Device rtls0 ist später das eigentlich Device das OpenSolaris sieht, aber dazu später, entscheidend sind zunächst die Geräte br0, eth0 und tap0. Zuerst erstellen wir nun die Bridge:
Als nächstes müssen wir das Netzwerkdevice eth0 (das Workstation Interface) mit einer fiktiven IP versehen, das Bridge Device mit der 'originalen' eth0 IP versehen und die eigentliche Brücke setzen:
# ifconfig eth0 0.0.0.0 up
# ifconfig br0 192.168.1.18 netmask 255.255.255.0 up
# brctl addif br0 eth0
|
Wenn Ihr das über ein SSH oder so eingebt wird die Verbingung unterbrochen etc. (erstellt euch ein Skript wenn Ihr auf einem entfernten Host arbeitet). Zudem kann es schonmal kurz dauern bis das Device br0 zur Verfügung steht. Sollte das alles soweit geklappt haben, dann läuft Eure Netzwerkkommunikation nun über br0. Als nächstes solltet Ihr das IP-fowarding aktivieren:
# sysctl -w net.ipv4.ip_forward=1
|
Nun wird das virtuelle Netzwerk Decive für den Qemu eingerichtet, dafür müsst Ihr zunächst das Modul tun laden:
Ggf. noch Rechte verteilen damit normale User dieses Interface nutzen können:
Und zuletzt das eigentliche virtuelle Netzwerkdevice erstellen (anstelle von user gebt den Benutzernamen an mit dem das virtuelle Netzwerkdevice nutzen wollt/müsst, bei root könnt Ihr den Parameter -u weglassen):
Dann erstellt euch das Skript /etc/qemu-ifup mit folgendem Inhalt:
#!/bin/bash
ifconfig $1 0.0.0.0 promisc up
brctl addif br0 $1
sleep 2
|
Startet nun den qemu mit den zusätzlichen Netzwerkparametern:
# qemu -boot c opensolaris.qcow -m 512m -monitor stdio -net nic,vlan=0,model=rtl8139,mac=11:22:33:44:55:66 -net tap,vlan=0,ifname=tap0
|
Wenn Euer OpenSolaris nun soweit gebootet ist, dann meldet Euch als root an (in welcher Form auch immer). Anschliessend gebt den folgenden Befehl ein:
Die Ausgabe von prtconf wird nun nach less gepipet, dort sucht bitte nach dem Wort Ethernet mittels /Ethernet. Scrollt dann ein paar Zeilen hoch, Ihr solltet dann eine solche Ausgabe sehen:
...
pci10ec,8139, instance #0 (driver not attached)
...
|
Nun ladet den Treiber:
# /usr/sbin/update_drv -a -i '"pci10ec,8139"' rtls
|
Zu guter letzt das neue Netzwerkdevice rtls0 konfigurieren:
# ifconfig rtls0 plumb
# ifconfig rtls0 192.168.1.5 netmask 255.255.255.0 up
|
Ihr solltet nun in Eurem heimischen Netzwerk sein.
|