Neustále se dostávám do situací, kdy potřebuju na Macu něco otestovat, ale následky testování se mohou pohybovat v intervalu od přebytečných souborů až do zničeného systému. Běžného uživatele by jistě napadla řešení jako obnova z Time Machine zálohy nebo instalace testovacího OS X na externí disk. Lze na to jít lepší cestou. Testovací OS X virtualizovat.
V příspěvku se podívám na instalaci nového virtuálního stroje (VM) s OS X ve VMware Fusion (Basic: 64 EUR, Pro: 139 EUR) a VirtualBoxu (zdarma).
Budeme potřebovat:
- Mac (provoz OS X ve VM je v souladu s licencí možný pouze na Apple HW);
- dostatek RAM (OS X vyžaduje minimálně 2GB RAM, virtualizovat OS X na MacBooku Air s 4GB RAM není optimální);
- instalátor OS X (aktuální verze dostupná zdarma na Mac App Store);
VMware Fusion
Testováno s VMware Fusion 7.1.1 a OS X 10.10.3.
- Ve VMware Fusion -> File -> New.
- Přetáhněte na okno instalátor Install OS X Yosemite.app.
- Můžete upravit nastavení VM (Customize Settings) nebo prozatím použít výchozí nastavení (Finish).
- VM je třeba uložit někam na disk jako .vmware bundle aresář. Pro testovací VM ideálně vybrat místo, které se nezálohuje. Obraz disku o několika desítkách GB v TimeMachine záloze opravdu nechcete.
- Fusion začne vytvářet instalační médium.
Uvnitř adresáře s VM (.vmware bundle) je vytvořen dočasný virtuální disk s instalátorem.
Nabízí se otázka proč Fusion nepoužije původní instalátor a vytváří si vlastní instalační image. Toto souvisí s podobou instalátoru od verze OS X 10.9 Mavericks.
Uvnitř aplikace Install OS X Yosemite.app stažené z Mac App Store najdeme image InstallESD.dmg. Když tento obraz přimontujeme, vidíme v něm adresář Packages s instalačními balíčky a další image – BaseSystem.dmg. Ten obsahuje minimální podobu operačního systému nutnout k provedení instalace.
ls -laO
-rw-r--r--@ 1 - 6148 Apr 4 13:03 .DS_Store
-rw-r--r--@ 1 hidden 2056 Apr 4 13:00 BaseSystem.chunklist
-rw-r--r--@ 1 hidden 504780125 Apr 4 11:54 BaseSystem.dmg
drwxr-xr-x 20 - 680 Apr 4 16:50 Packages/
Až do OS X 10.8 se obsah obrazu BaseSystem.dmg nacházel v kořenovém adresáři InstallESD.dmg. Nebyl tedy problém InstallESD.dmg nahrát na flash disk a vyrobit si tak USB instalátor. Podobně snadno se InstallESD.dmg předhodil virtualizačnímu programu (připojení image ve virtuální mechanice) a ten z něj mohl rovnou nastartovat instalátor. Od OS X 10.9 Mavericks je třeba být lehce kreativnější.
Fusion vytváří nový dočasný image. Do něj nakopíruje instalátor (Install OS X Yosemite.app), bootloader (boot.efi), kernel (kernelcache) a soubor s přepínači pro kernel (com.apple.Boot.plist).
Plist com.apple.Boot.plist kernelu říká, kde má hledat operační systém instalátoru – ve vnořeném obrazu BaseSystem.dmg.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Kernel Cache</key> <string>/.IABootFiles/kernelcache</string> <key>Kernel Flags</key> <string>container-dmg=file:///Install%20OS%20X%20Yosemite.app/Contents/SharedSupport/InstallESD.dmg root-dmg=file:///BaseSystem.dmg</string> </dict> </plist>
S vysvětleným problémem instalačního image se můžeme konečně vrhnout na instalaci OS X 10.10 Yosemite.
- Spusťte nově vytvořený VM.
- Proklikejte se instalátorem. Není třeba formátovat disk. To už Fusion udělal automaticky za vás.
- Běžte si uvařit čaj, dokud se OS X nenainstaluje.
- Po instalaci se proklikejte úvodním setupem (nastavení jazyka, nového uživatele, atd.).
- Hurá! Máte funkční testovací OS X 10.10 Yosemite VM.
- Nezapomeňte nainstalovat VMware Tools. Umožní mimo jiné drag&drop souborů z/do okna VM.
- S vysokou pravděpodobností narazíte na problém s ukrutně pomalými reakcemi uživatelského rozhraní. Quartz debug hlasí framerate v jednotkách vykreslených snímků za vteřinu.
- Telefony a maily s VMware podporou problém nevyřešily. Mac admini naštěstí řešení našli. Vypnutím beam sync získáme relativně plynulé vykreslování okének. Doporučuji jít cestou LaunchAgent popsaném v linkovaném řešení. Ten spouští program, jenž vypne beam sync při každém přihlášení uživatele.
VirtualBox
Velmi pěkně popsaný postup najdete na blogu bittorrentu 🙂
Na rozdíl od VMware Fusion si VirtualBox nedokáže poradit s aktuální podobou OS X instalátoru. Musíme vyrobit jednoúrovňový image s instalátorem. Naštěstí si tím už někdo dal práci a můžeme použít nástroje iESD nebo skript create_os_x_vm_install_dmg.
sudo gem install iesd iesd -i "/Applications/Install OS X Yosemite.app" -o yoyo_flattened.dmg -t BaseSystem
Před instalací OS X nezapomeňte v instalátoru pomocí Disk Utility (nebo terminálu) zformátovat disk na HFS+. VirtualBox to za vás neudělá.
Nechtělo se mi instalovat vedle VMware Fusion další virtualizační software. Použil jsme proto virtuální stroj ve VMware Fusion. Stačí mu přidělit více paměti a zapnout podporu VT-x/EPT uvnitř VM.