Manchmal muss es halt Mac OS sein. Wie ich schon des öfteren bemerkt habe hat Apple ein Gespür dafür Standards so zu verstümmeln das Sie nur mit Mac OSX Software funktionieren.
Ein Beispiel dafür ist Airplay. Tolles System wenn man ein iPhone als Remote hat. Aber an gut laufenden Servern mangelt es nun mal. forked-daapd oder Ampache in der neuen Version 3.8.0 haben es für mich einfach nicht gebracht.
Also führt der Weg für dahin das ich Mac OSX Yosemite virtualisiert auf meinem unRaid Server laufen lasse. Seit Version 6 wird dort ja auch die Linux Technik KVM unterstützt. So kann ich iTunes als Daapd Server nutzen.
Da dies nicht ganz so easy ist habe ich die Schritte mal hier ein wenig zusammengefasst.
Was wir brauchen:
- Einen Mac mit installiertem XCode und Commandline Tools
- Eine legale Kopie von Mac OSX Yosemite aus dem App Store
- Einen unRaid 6 oder anderen KVM Server (dieser Guide zielt auf unRaid ab)
- Den 64 Zeichen OSK Key. Diesen liest man entweder mit der Software SMC_Read aus
- Aktuelle SVN Version des Chameleon Bootloaders
- Ein paar kleine Helfer (kvm) um die Yosemite ISO zu bauen und den Bootloader zu kompilieren (spart Tipparbeit)
Der Guide teilt sich grob in vier Abschnitte auf:
- Erstellen eines bootbaren Yosemite ISO Images
- Kompilieren des Chameleon Bootloaders
- Erstellen eines passenden Disk Images auf dem unRaid Server
- Mac OS X Installation
1. Erstellen eines bootbaren Yosemite ISO Images
Ladet euch zuerst das Paket mit den Helfer Scripts herunter, speichert Sie auf dem Desktop, entpackt Sie, startet ein Terminal und navigiert in den Ordner auf dem Desktop. Das Yosemite Installationsprogramm sollte in eurem Anwendungs- Ordner liegen. Normalerweise ist dieses Schritt mit sehr viel Tipparbeit verbunden, das Script automatisiert das ganze. Wer daran interessiert ist was dabei vorgeht sollte sich das script mal anschauen. Startet das folgendermaßen:
./yosemite_iso.sh
Sobald der Prozess abgeschlossen ist, was durch das extrahieren des Kernels gute 10min dauern kann, sollte bei euch eine fertige Yosemite.iso auf dem Desktop liegen.
2. Kompilieren des Chameleon Bootloaders
Auch für das kompilieren des Chameleon Bootloaders gibt es ein kleines Script. Es lädt automatisch die Sourcen der aktuellen SVN Version und kompiliert diese. Am Ende findet Ihr auf eurem Desktop einen Ordner Namens Chameleon-SVN mit der Bootloader (Endung boot) und einem Chameleon Installations Packet. Wir benötigen später nur den reinen Bootloader. Folgendermaßen ruft Ihr das Script im Terminal auf:
./compile_chameleon.sh
3. Erstellen eines passenden Disk Images auf dem unRaid Server
Nun verbindet euch per SSH oder Telnet auf euren unRaid Server. Wechselt in den Ordner in dem Ihr das Disk Image speichern wollt und erstellt es.
cd /mnt/cache/vm_images/osx qemu-img create -f raw yosemite.img 120G
So wird eine Image Datei mit einer Größe von 120GB erstellt. Die Größe könnt Ihr natürlich den eigenen Vorstellungen nach anpassen.
4. Mac OS X installation
Nun geht es darum OS X zu installieren. Hierbei wird zuerst eine passende XML Datei mit den Settings für KVM angelegt womit man den Installer von OSX starten kann. Anschließend kann man OSX ganz normal installieren. Der einzige unterschied ist das man das Partitionieren der virtuellen HDD mit dem Festplattendienstprogramm vornehmen muss.
Zuerst einmal legt Ihr in unRaid eine neue VM mittels des Expert Templates an und kopiert die folgende XML Datei dort hinein. Die Zeilen 19 (Pfad zum Bootloader), 37 (Pfad zum Disk Image), 80 (ausgelesener OSK Key) und 86 (Pfad zur Installer ISO) müsste Ihr noch an eure eigenen Gegebenheiten anpassen.
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'> <name>OSX-Yosemite-10.10</name> <uuid>0ba39646-7ba1-4d41-9602-e2969a3fc26d</uuid> <metadata> <type>None</type> </metadata> <memory unit='KiB'>4194304</memory> <currentMemory unit='KiB'>4194304</currentMemory> <vcpu placement='static'>2</vcpu> <cputune> <vcpupin vcpu='0' cpuset='0'/> <vcpupin vcpu='1' cpuset='1'/> </cputune> <resource> <partition>/machine</partition> </resource> <os> <type arch='x86_64' machine='pc-q35-2.3’>hvm</type> <kernel>/mnt/cache/vm_images/extra/Chameleon-2.3svn-r2730-boot</kernel> <boot dev='cdrom'/> <bootmenu enable='yes'/> </os> <features> <acpi/> </features> <cpu mode='custom' match='exact'> <model fallback='allow'>core2duo</model> </cpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> <emulator>/usr/bin/qemu-system-x86_64</emulator> <disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/mnt/cache/vm_images/osx/yosemite.img'/> <target dev='hda' bus='sata'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> <controller type='usb' index='0'> <address type='pci' domain='0x0000' bus='0x02' slot='0x01' function='0x0'/> </controller> <controller type='ide' index='0'/> <controller type='sata' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> </controller> <controller type='pci' index='0' model='pcie-root'/> <controller type='pci' index='1' model='dmi-to-pci-bridge'> <address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/> </controller> <controller type='pci' index='2' model='pci-bridge'> <address type='pci' domain='0x0000' bus='0x01' slot='0x01' function='0x0'/> </controller> <interface type='bridge'> <mac address='52:54:00:00:20:20'/> <source bridge='br0'/> <model type='e1000-82545em'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x03' function='0x0'/> </interface> <input type='mouse' bus='ps2'/> <input type='keyboard' bus='ps2'/> <graphics type='vnc' port='-1' autoport='yes' websocket='-1' listen='0.0.0.0'> <listen type='address' address='0.0.0.0'/> </graphics> <video> <model type='vga' vram='9216' heads='1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/> </video> <memballoon model='none'> </memballoon> </devices> <seclabel type='none' model='none'/> <qemu:commandline> <qemu:arg value='-device'/> <qemu:arg value='usb-kbd'/> <qemu:arg value='-device'/> <qemu:arg value='usb-mouse'/> <qemu:arg value='-device'/> <qemu:arg value='isa-applesmc,osk=64_Character_OSK_Key'/> <qemu:arg value='-smbios'/> <qemu:arg value='type=2'/> <qemu:arg value='-device'/> <qemu:arg value='ide-drive,bus=ide.1,drive=MacDVD'/> <qemu:arg value='-drive'/> <qemu:arg value='id=MacDVD,if=none,snapshot=on,file=/mnt/cache/vm_images/installer/Yosemite.iso'/> </qemu:commandline> </domain>
Nun könnte Ihr die VM starten, per VNC solltet Ihr auf dem Chameleon Boot Prompt landen. Hier könnt Ihr nun die Installation beginnen. Ihr werdet bemerken das der Maus Cursor sehr stark laggt und sich schwer positionieren lässt. Ein Tippt umso schneller Ihr den Cursor bewegt umso weiter geht er. Ich habe die Installation größtenteils per Tastatur gemacht.
Im Installer wählt Ihr zuerst die Sprache aus, dann startet Ihr das Festplattendienstprogramm um die virtuelle HDD zu partitionieren. Ist das geschehen könnt Ihr das Festplattendienstprogramm wieder verlassen und ganz normal mit der Installation fortfahren. Beim nächsten Reboot wählt Ihr den ersten Eintrag im Chameleon Bootloader und bringt die Installation zuende.
Um das Problem mit dem Cursor zu beheben aktiviert Ihr die Bildschirmfreigabe unter OSX. Ihr findet diese unter Einstellungen->Freigaben->Bildschrimfreigabe. Danach könnt Ihr euch mit einem Mac (Bildschirmfreigabe) oder jedem anderen PC (TightVNC) auf die virtuelle Maschine verbinden und der Cursor sollte sich normal verhalten.
Erstellt im Root eurer virtuellen HDD einen Ordner namens Extra, dort kopiert Ihr die Datei org.chameleon.boot.plist hinein. Über diese Datei könnt Ihr dem Chameleon Bootloader einige Optionen mitgeben, wie den Boot Timeout etc. Wenn Ihr folgende Zeilen anhängt könnt Ihr zum Beispiel die Standard Auflösung ändern:
<key>Graphics Mode</key> <string>1440x900x32</string>
Nun fahrt die VM herunter und löscht folgende Zeilen (83-86) aus dem XML Template:
<qemu:arg value='-device'/> <qemu:arg value='ide-drive,bus=ide.1,drive=MacDVD'/> <qemu:arg value='-drive'/> <qemu:arg value='id=MacDVD,if=none,snapshot=on,file=/mnt/cache/vm_images/installer/Yosemite.iso'/>
Wenn Ihr jetzt die VM wieder startet sollte (hoffentlich) alles funktionieren.
Credits:
Wie so oft ist das ganze nicht auf meinem Mist gewachsen. Viele viel intelligentere Leute als ich habe viel Zeit damit verbracht das ganze auszutüfteln. Ich habe es nur nochmal aufgeschrieben und die vorhandenen Kommandos in Scripte verpackt damit das ganze leichter von der Hand geht. Folgende Seiten solltet Ihr für mehr Infos auf jeden Fall besuchen. Falls Ihr zum Beispiel Probleme habt bei der Installation ist der erste Link mit bebilderter Anleitung Gold wert:
https://macosxvirtualmachinekvm.wordpress.com/guide-mac-os-x-vm-on-unraid/
http://forums.macrumors.com/threads/how-to-create-yosemite-os-x-bootable-dvd.1763439/
http://blog.ostanin.org/2014/02/11/playing-with-mac-os-x-on-kvm/
http://www.contrib.andrew.cmu.edu/~somlo/OSXKVM/
http://www.tonymacx86.com/general-help/135458-pbzx-stream-parser.html
Hinweis:
Ich unterstütze in keinster Weise Copyright Verletzungen. Wenn Ihr OSX unter KVM einsetzen wollt dann bitte nur mit gültiger Lizenz.
Hi Björn,
vielen Dank für die ausführliche Anleitung.
Ich versuche Yosemite nach deiner Anleitung auf der QNAP aufzusetzen.
Leider komme ich nicht bis zu der Installation, da das Booten von der iso nicht klappt.
Man sieht das die Dateien geladen werden und danach kehrt man in das Bootmenü zurück.
Hättest du die Möglichkeit vielleicht dich per TeamViewer auf meinen Rechner zuschalten und dir das anzuschauen?
Bin schon am verzweifeln.
Vielen Dank im Voraus!
Was für ein QNAP hast du denn?
eine TS-EC880U, kann dir gerne sonst mal meine email Adresse zukommen lassen.
Viele Grüße
Viltalij
Also an der Hardware scheint es ja nicht zu mangeln, hatte schon befürchtet hier versucht jemand OSX auf einem ARM NAS zu installieren.
Fehler kann es hier viele geben. Eine veraltete KVM Version zum Beispiel. Oder falsche Pfadangaben zur virtuellen HDD bzw. DVD Drive.
Hättest du denn mal die Möglichkeit dir das anzuschauen ? könnte dir hier auch gerne was zahlen. Ich bin hier nur völlig am hängen und komme nicht weiter :/ und will es umbedingt zum laufen bekommen.
Würde mich freuen wenn das klappt.
Viele Grüße Vitalij