20 10/14
15:55

Установка OS X 10.10 Yosemite в VirtualBox.

TL;DR:
Инструкция по установке OS X 10.10 Yosemite в виртуальную машину VirtualBox, запущенную на Linux. Без особых изменений эта же инструкция должна подойти в случае, если хостовой системой является OS X или Windows. Процесс выглядит так:

  • Подготовка загрузочного ISO-образа
  • Создание виртуальной машины нужной конфигурации
  • Установка OS X
  • Опционально: превращение установленной системы в Hackintosh, что даст среди прочего возможность выставить произвольное разрешение экрана

Лицензионная политика Apple такова, что :

  • установка OS X разрешается только на компьютеры производства Apple
  • на виртуальных машинах можно запускать только OS X Server

OS X Server поставляется в качестве приложения, которое ставится поверх обычной OS X. Так что в этой статье будем исходить из того, что у нас есть честно купленный Mac, на который установлен Linux, а OS X мы ставим для последующего превращения его в OS X Server.

Готовим загрузочный образ

Для начала надо добыть дистрибутив. Самый простой способ – скачать из App Store соответствующий app (для этого понадобится компьютер с установленной OS X) и выдернуть файл с дистрибутивом из него. Файл называется InstallESD.dmg и лежит в подкаталоге Contents/SharedSupport пакета с операционной системой.

Virtualbox не сможет загрузиться с этого dmg, поэтому предварительно придется приготовить iso. Инструкция для mavericks есть здесь. Хорошая новость: для Yosemite она тоже подходит (с небольшими правками). Плохая новость: опять понадобится компьютер с установленной OS X, поскольку необходимая для конвертации программа hdiutil есть только под OS X. Хорошая новость: эта программа там есть сразу после установки системы, ничего дополнительно качать не придется.

Последовательность команд, превращающая установочный dmg в установочный iso выглядит так (повторяю, делается всё это на уже или еще работающей OSX):

Монтируем InstallESD.dmg в каталог /Volumes/install_app:

hdiutil attach InstallESD.dmg -noverify -nobrowse -mountpoint /Volumes/install_app

Конвертируем Boot Image, лежащий в этом дистрибутиве, в формат, пригодный для добавления в него своих файлов, увеличиваем его размер и монтируем в каталог /Volumes/install_build:

hdiutil convert /Volumes/install_app/BaseSystem.dmg -format UDSP -o /tmp/OSX
hdiutil resize -size 8g /tmp/OSX.sparseimage
hdiutil attach /tmp/OSX.sparseimage -noverify -nobrowse -mountpoint /Volumes/install_build

Переносим в него необходимые для инсталяции пакеты (последние две строки специфичны для Yosemite, для Mavericks этого делать не надо):

rm /Volumes/install_build/System/Installation/Packages
cp -rp /Volumes/install_app/Packages /Volumes/install_build/System/Installation/
cp /Volumes/install_app/BaseSystem.dmg /Volumes/install_build/
cp /Volumes/install_app/BaseSystem.chunklist /Volumes/install_build/

Отмонтируем имидж и дистрибутив:

hdiutil detach /Volumes/install_app
hdiutil detach /Volumes/install_build

Уменьшаем размер получившегося файла до минимально возможного и конвертируем его в ISO:

hdiutil resize -size `hdiutil resize -limits /tmp/OSX.sparseimage | tail -n 1 | awk '{ print $1 }'`b /tmp/OSX.sparseimage
hdiutil convert /tmp/OSX.sparseimage -format UDTO -o /tmp/OSX
mv /tmp/OSX.cdr ~/Desktop/OSX.iso

Всё, на рабочем столе появился файл OSX.iso, именно с него мы и будем ставить систему. Больше компьютер с установленной OS X нам не нужен, все остальные действия выполняются непосредственно на том компьютере, на котором будет жить виртуальная машина.

Создаем виртуальную машину

Делается это как обычно, через GUI. Важно не упустить несколько моментов:

  1. Используем профиль Mac OS X (64bit)
  2. Система: 1 CPU, включить EFI
  3. Дисплей: выкручиваем на максимум количество доступной видео памяти, включаем 3D-ускорение

На всякий случай убеждаем виртуальную машину в том, что она запущена на компьютере производства Apple:

$ VBoxManage setextradata Yosemite VBoxInternal2/SmcDeviceKey "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"

Где вместо Yosemite надо указать имя виртуальной машины.

Устанавливаем OS X

Загружаем виртуальную машину с созданного в первом пункте диска. Выбираем желаемый язык установщика и обнаруживаем, что инсталятор не видит диска, на который надо ставить систему.

Заходим в меню Utilities и запускаем Disk Utility. В левой колонке кликаем на VBOX HARDDISK, в правой колонке открываем вкладку Partition. Жмем кнопку + (добавится раздел), пишем желаемое имя раздела в поле Name и жмем Apply. Соглашаемся на внесение изменений. Disk Utility можно закрывать, на экране снова появится окно инсталятора, в этот раз с нашим новым разделом. В него и ставим.

Хакинтошим установленную систему и меняем разрешение экрана

После установки мы уже получили полноценную OS X, без посторонних примесей. Но если всё-таки захочется выставить нестандартное разрешение экрана, то придется немного пошаманить.

Важно: разрешение экрана должно быть кратно 8 по каждой стороне. Я выбрал 1312×720.

Скачиваем бутлоадер chimera и устанавливаем на OS X. Прописываем желаемое разрешение в файл /Library/Preferences/SystemConfiguration/com.apple.Boot.plist (понадобятся права root). Выглядеть он должен примерно так:

<?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>Graphics Mode</key>
        <string>1312x720x32</string>
        <key>Kernel Flags</key>
        <string>"Graphics Mode"="1312x720x32"</string>
</dict>
</plist>

Выключаем виртуальную машину и идем в ее настройки. На вкладке Система снимаем галку Включить EFI.

При всё еще выключенной виртуалке выполняем на хостовой машине:

$ VBoxManage setextradata Yosemite CustomVideoMode1 1312x720x32

Загружаем OS X, расслабляемся и начинаем получать удовольствие (в смысле, покупаем в app store и устанавливаем OS X Server).

Известные ограничения

Разработчики VirtualBox пишут, что для OS X в качестве гостя надо выделять только 1 CPU. Если выделить больше, система начинает очень, очень сильно тормозить.
В некоторых случаях (в зависимости от хостовой ОС и версии OS X) виртуальная машина может падать через какое-то время после запуска. Проблему можно исправить, отключив засыпание OS X: System Preferences -> Energy Saver, выставить оба таймаута в “Never”.

Comments

Leave a comment

You must be logged in to post a comment.