MacOS X + VirtualBox = любовь: Запускаем макось под виртуальной машиной

Опубликовано:

Единственно верный способ почувствовать прелесть Mac OS X — купить компьютер или ноутбук Mac. Удобно, быстро, стабильно и без геморроя — человеческий подход в лучших традициях Mac. Желая познать непознаваемое, а именно — Mac OS X на обычном PC, энтузиасты активно допиливают различные виды Хакинтоша, ругаются словами «кекст» и боятся апдейтов системы. Еще сложнее было заставить макось работать под виртуальной машиной, но это только до сегодняшнего дня.

Экспериментальная поддержка

Все началось с того, что я решил попробовать написать приложение для iPhone/iPad и тут же встрял из-за досадного ограничения. Оказалось, SDK разработчика и все сопутствующие инструменты доступны только для платформы Mac OS Х. По правде говоря, Mac я собираюсь купить уже довольно давно, особенно после мучительных танцев с Хакинтошом, но, увы, заветный Macbook Pro 15" как был, так и остается лишь пунктом в списке «Хочу купить».

Колдовать снова с установкой Mac OS на свой PC, не имея гарантии, что смогу хотя бы запустить нужный софт, не было никакого желания. Опыт подсказывал, что ничего хорошего не выйдет и с виртуальными машинами. Ни одно решение для виртуализации, будь оно от Microsoft, Parallels, VMware или Sun, без шаманства (важный момент!) не позволяет запустить Mac OS в качестве гостевой ОС! Вернее говоря, не позволяло. Изучая changelog программы VirtualBox’а (теперь уже распространяемое под эгидой компании) Oracle, которую в последнее время использую в качестве основного средства виртуализации, наткнулся на очень интересную строчку: «Experimental support for Mac OS X Server guests». Опция впервые появилась в версии 3.2.0 и далее часто упоминается. Получается, в качестве гостевой OS теперь можно установить макось? Слово «server» сначала сбило с толку, но быстро выяснилось, что это есть не что иное, как лицензионное ограничение Mac OS X. Дело в том, что лицензия допускает установку ОС только на компьютеры и ноутбуки Mac. Все остальное, включая Хакинтоши и прочие извращения, по большому счету запрещены — вполне логичный шаг со стороны компании Apple. А вот ограничение внутри самой VirtualBox, как оказалось, искусственное. Быстро нашлось немало отзывов о том, что под VirtualBox’ом отлично устанавливается последняя версия Mac OS X, то есть Snow Leopard (такое вот кодовое имя релиза). Тут надо иметь в виду, что подобный опыт напрямую нарушает лицензию системы, поэтому может рассматриваться исключительно в образовательных целях.

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

Главное требование для установки Mac OS X — поддержка процессором спецификации VT-x. Intel Virtualization Technology for x86 поддерживается практически всеми современными процессорами Intel, включая большинство Сore 2 Duo/Quad и модных i3/i5/ i7. Мы проводили эксперимент на Core 2 Duo E8500 и Windows 7 в качестве основной системы. Во многих случаях система должна завестись и на процессоре от AMD, но только при условии, что тот имеет поддержку технологии виртуализации AMV-V. Далее потребуется официальный диск с Mac OS X или его образ (у нас была версия 10.6.3), конечно же, легально купленный (это тебе не Windows!). Если образ сграблен под Mac OS и имеет разрешение .dmg, то привести его в привычный ISO-вид поможет утилита dmg2img (vu1tur.eu.org/tools): dmg2img source_file. dmg destination_file.iso. Далее необходимо создать «правильную» виртуальную машину, на которую и будет установлена система. Собственно, начать нужно с того, что указать тип гостевой системы — «Mac OS X Server». Что приятно, такой тип выбирается автоматически — стоит только в названии виртуалки использовать слова «mac» или, скажем, «leopard». Крайне желательно выделить виртуаль ной машине минимум 1024 Мб оперативки и создать виртуаль ный жесткий диск на 20 Гб (вполне можно использовать опцию «Dynamically expanding storage»). После создания виртуалки не лишним будет открыть ее свойства и, во-первых, отключить эмуляцию floppy-диска, а во-вторых, установить количество видеопамяти, равное 128 Мб. В качестве IDE-контроллера должен быть выставлен тип ICH6, но это работает и по умолчанию.

Далее есть два пути. Первый и самый правильный — обойтись силами одной только VirtualBox. Для этого необходимо закрыть программу (крайне важно, иначе ничего не получится!) и найти XML-конфиг только что созданной виртуалки. В XP он находится здесь: C:Documents and Settings<username>.VirtualBox Machines<name of the VM><name of the VM>.xml, в Vista/ Windows 7 C:Users<username>.VirtualBoxMachines<name of the VM><name of the VM>.xml. Под Linux’ом ищи XML внутри /home. В этом файле есть несколько строк, описывающих так называемые ExtraDataItem. Найди это место поиском в любом текстовом редакторе и добавь еще две строчки:

<ExtraDataItem name="VBoxInternal2/EfiBootArgs"
value=" "/>
<ExtraDataItem name="VBoxInternal2/SmcDeviceKey"
value="ourhardworkbythesewordsguardedpleasedontsteal
(c)AppleComputerInc"/>

После этого можно сохранить конфиг и заново запускать VirtualBox. Последний штрих — выбрать в качестве cdrome образ с Mac OS X и стартовать виртуальную машину. В 90% случаев запустится графический инсталлятор, и можно будет спокойно установить ось. Откуда берутся эти 10% неудач, сказать сложно. Однако если вдруг во время загрузки выплывает какая-нибудь kernel-ошибка, или многообещающе появится серый экран с курсором, но на этом все и останавливается, можно попробовать другой путь. В этом случае уже не надо никак шаманить с конфигом виртуалки (если добавил туда ExtraDataItem’ы, то их надо удалить). Идея в том, чтобы использовать альтернативный загрузчик — Empire EFI . Штука распространяется в виде ISO-файла (например, empireEFIv1085.iso), которую надо примонтировать к виртуалке и отдать команду на старт. Во время загрузки появится уже темный интерфейс Empire EFI — в этот момент надо демонтировать текущий образ альтернативного загрузчика и подключить ISO’шку со Snow Leopard. Обновляем информацию о диске (<F5>), жмем <Enter> — вуаля, опять же получаем окно установщика Mac OS X.

Установка и настройка

Тем или иным способом появляется графический интерфейс установщика системы, который приветливо предлагает выбрать язык для установки. Далее, спросив, куда необходимо установить ОС, он почему-то не предложит никаких вариантов. Все потому, что еще не размечен жесткий диск (виртуальный). Для того, чтобы создать структуры и отформатировать разделы, запускаем дисковую утилиту из раздела «Утилиты» верхнего меню. Тут выбираем вкладку «Стереть», потом жмем кнопку «стереть», и утилита сама все сделает за нас. Теперь указываем установщику размеченный раздел — и начинается процедуры установки. Reboot.

Полностью рабочая система с достойным разрешением, поддержкой клавиатуры/мыши, а также сетевого адаптера — вот, что тебя ждет сразу после перезагрузки компьютера. Единственное — придется пройти процедуру идентификации клавиатуры (мастер потребует нажать на клавиши рядом с <shift>’ами), а также создать учетную запись пользователя. Тут надо помнить, что раскладка клавиатуры переключается комбинацией <winkey>+<пробел>. От всех процедур регистрации и создания учетки в сервисе MobileMe можно смело отказаться, как и от процедуры переноса данных с другого компьютера Mac (ведь как заботливо, а!?). Далее, когда со всеми этими вопросами от нас отстанут, можно, наконец, пощупать саму систему.

Щелкаем по окошкам, запускаем различные программы, пробуем открыть страницы в браузере Safari. Тут же скачиваем Textmate, легендарный текстовый редактор для Mac OS X, в виде непривычного dmg-файла (формат дистрибутивов в Mac OS X) и устанавливаем — опять же, все отлично работает. Конечно, совсем не так шустро, как на самом Mac’е, и не так быстро, как в случае Хакинтоша, но при этом вполне комфортно. В эйфории от того, что не надо мучиться с кекстами и прочими шаманствами, можно даже не заметить отсутствие звука — в системе нет драйвера для звукового контроллера ICH AC97, который эмулирует VirtualBox. Вероятно, этот факт сильно напрягал энтузиастов, поэтому на форуме виртуалки быстро появились необходимые дрова. Добротный установщик, доступный на forums.virtualbox.org/viewtopic.php?f=4&t=30843, избавит даже от возни с ручной правкой kext’ов. Просто скачай PKG-файл, запусти его и перезапусти систему. Помимо отсутствия звука меня напрягало фиксированное разрешение, установленное в гостевой ОС, равное 1024×768. К счастью, и для этого есть маленький хинт, который опять же необходимо провернуть в конфиге виртуалки. Открываем XML-файл в текстовом редакторе и после всех ExtraDataItem добавляем новую строку:

<ExtraDataItem name="VBoxInternal2/EfiGopMode"
value="N"/>

Параметр N — это числа от 0 до 4, означающие разрешения 640×480, 800×600, 1024×768, 1280×1024, 1440×900 соответственно.

С помощью этой строки мы указываем, что виртуальная машина должна использовать так называемый VirtualBox EFI. EFI — это Extensible Firmware Interface, новый индустриальный стандарт, который должен заменить БИОС в качестве основного интерфейса.

Увы, в рамках используемого виртуальной машиной EFI другие разрешения не поддерживаются, но даже 1440×900 вполне достаточно для комфортной работы. Вот чего пока не хватает, так это поддержки надстройки Guest Additions, с помощью которой, например, можно очень просто обмениваться файлами между хостовой и гостевой машиной. Сейчас для этого придется использовать протокол SMB. Для этого сначала нужно его включить. Переходим в настройки: «Меню u„ Системные настройки „Љ Интернет и беспроводная сеть „| Общий доступ» и включаем «Общий доступ к файлам». В «параметрах» необходимо активировать протокол SMB. Теперь к любой Windows-машине с расшаренными ресурсами можно подключиться через меню «Переход „Ђ Подключение к серверу». Надо лишь указать адрес хоста в адресной строке: smb://10.0.2.2. Кстати говоря, значение 10.0.2.2 неслучайно: в большинстве случаев (то есть с сетевыми настройками VB и виртуальной машины по умолчанию) это будет адрес хостовой машины.

Понравилась статья, расскажи о ней друзьям, нажми кнопку!