Darwin 8 lässt sich - auf meinem PC zumindest - ganz prima unter
VMware Server (unter Linux) installieren. Das ist prima, das reicht mir nämlich für bestimmte Aufgaben, für die ich sonst einen Intel-Mac anschaffen müsste.
Was leider nicht geht, ist das simulierte Ethernet-Interface. Das wird von Darwin nicht erkannt. Klingt doof, ist aber so. Daher hier nun eine kleine Anleitung, wie man eine Darwin-VM doch noch ans Netz bekommt.
- Die virtuelle Netzwerkkarte wird aus der VM entfernt.
- Dafür kommt eine serielle Schnittstelle. Einstellungen "Use named pipe", "serial_port", "This end is the server", "The other end is an application", "Yield CPU on poll".
- Damit haben wir jetzt im Verzeichnis der VM selbst (da wo auch die Festplattenimages usw. liegen) keine named pipe namens "serial_port" liegen. Aber einen UNIX Domain Socket mit dem selben Namen. Okay, offenbar leichte Verwirrung bei VMware.
- Auf Darwin-Seite starten wir jetzt den pppd, und zwar so:
pppd /dev/tty.builtin-serial1 115200 noauth crtscts passive asyncmap 0 defaultroute 192.168.52.128:192.168.52.1
Man könnte sich den Aufruf auch in ein Script schreiben.
- Auf Linux-Seite starten wir auch den pppd, und zwar so, im Verzeichnis der VM (da wo halt der UNIX domain socket gelandet ist):
socat UNIX:serial_port EXEC:'pppd 115200 noauth crtscts notty'
Dem geneigten Leser wird auffallen, dass dazu socat installiert sein muss. Wir benutzen es, um den pppd mit dem UNIX domain socket sprechen zu lassen. Sonst mag der nämlich nur serielle Ports u.ä.
- Nachdem die beiden pppds miteinander sprechen, sollte jetzt auf beiden Seiten ein ppp-Interface konfiguriert sein und unter Linux ein
ping 192.168.52.128 funktionieren. Der Linux-pppd erhält die IP-Adressen vom Darwin-pppd. Wer das nicht will, kann die beiden IP-Adressen beim pppd-Befehl unter Darwin weg lassen und dafür unter Linux welche angeben.
Okay, jetzt können sich die beiden schonmal unterhalten. Außerdem ist in der Darwin-VM der Linux-Host als Default-Gateway eingestellt. Nur kein Nameserver. Doof. Aber leicht zu ändern, am einfachsten so:
echo 'nameserver 192.168.52.1' > /etc/resolv.conf
lookupd -flushcache
Die IP kann gegebenenfalls durch die eines anderen Nameservers ersetzt werden. Bei mir ist halt auf dem PC auch ein BIND installiert.
Wenn man das ganze beim Booten automatisch haben will, kann man es in /etc/rc.local schreiben (einfach anlegen, wenn es nicht existiert).
So, und wer jetzt noch das Problem hat, dass eine SSH-Verbindung unendlich lang dauert (mit einem riesigen Delay nach
debug1: SSH2_MSG_KEXINIT sent): Der sshd auf Darwin kann den Hostnamen nicht auflösen. Am einfachsten behebt man das so:
scutil --set HostName localhost