Внимание: данный туториал работает только если использовать в качестве донора раздела компьютер Mac на процессоре Intel.
Прежде чем рассказать об этой задумке, я бы подумал: а зачем? И действительно, зачем кому-либо виртуальная машина с Mac OS на борту? Неужели на это будет спрос? Отвечу баянистой рекламой Альфа Банка (не спонсировано) - "Ведь ты всё делаешь не так, продолжай". Поясню: в мире восемь миллиардов человеков, и одному юзверю, будь это архетипичный диванный политик или продвинутый мобильный разработчик [см. "программист из Старбакса"], о котором я заговорю в этом пОсте, не судьба в одиночку двигать кривые механизмов многомиллиардного рынка цифровых товаров. Однако по закону Мёрфи может так хренакнуться, что случится покупатель на совершенно любой товар.
Ладно, долой метафоры, вот конкретика. Рулет виртуальная машина с ОС Mac OS 14 Sonoma решает мою прикладную задачу, заключающуюся в крайней импортативности моего единственного компьютера [именно Мака, а не iPadа с клавой] торговой марки Apple. Казалось бы, почему не купить Макбук? А ларчик просто открывается - когда я увлекся разработкой под эппловые устройства, мне было 15 лет, и все пособия по инвалидности я транжирил на ветер жизни своей. Я - великий грешник и у всех прошу прощения, но вернёмся к теме. Однажды в студёную зимнюю пору я и отец мой купили в паевое владение iMac на 27 дюймов модели Early 2019 (базовый сток с 8 гигами оперативной памяти). Разумеется, о выклянчивании ещё восьмидесяти штук на потратив и речи не шло, не злить же родственника. Но, в то время меня не особо волновала вся эта мутотень с разработкой. Ибо разрабатывал я тогда максимум допилы для луа-скриптов с pastebin com и жутко багованные консольные экстракторы данных на .NET. Естественно, на Windows.
"Ты столько воды налил, где ответ?" - спросите вы. А он прост: "нужно было разрабатывать приложения под iOS в отъезде, пока Мак дома". Тут вы наверняка крякнете про удаленный рабочий стол. Да, я его действительно использовал, но у этой хрени есть один чрезвычайно очевидный косяк: весь софт удаленного рабочего стола не работает при выключенном хосте. А это в моё время было очень, собака, большой проблемой для семейного бюджета. Да, мой аймак потребляет 262 Вт в пике, но помножьте это на неделю непрерывного брута хешей - тут и за киловатт перевалит.
Идея с виртуальной машиной пришла ко мне совершенно нежданно-негаданно. Поскольку на тот момент я уже имел опыт в установке Mac OS на Oracle VM VirtualBox, и он был крайне неудачным, в частности по причине моего совершенно ламерского подхода и неимения оригинальной - "органической" - MacOS под рукой (в первую попытку образ под VirtualBox я скачал из Интернета, а не как положено "взял кровь у кобылы").
Пожалуй, ключевой плюс такого подхода следует из исключения двух минусов других предписанных мною идей. Перефразирую: А) нет нужды в постоянном источнике 220В и громоздкой коробки под закид в негабаритный багаж, и Б) можно использовать полноценный неурезанный Apple Mac у себя на компьютере с Windows/Linux/BSD/альтернативы (нужное подчеркнуть), эдакий ручной Скрепыш, подвластный любой команде пользователя.
Спешу расставить все точки над Ё. Сразу скажу, что это прямое нарушение оригинального лицензионного соглашения, и я не несу ответственность за то, что к вам приходят "две бляди из РОНО и менты" и требуют "сертефикат с голограммой". Также виртуальная машина априори не может являться Маком unto itself, в силу особенностей подавляющего большинства свободных БИОСов, которые используются в подавляющем большинстве свободных гипервизоров виртуальных машин, а также за счет крайней закрытости торгово-цифровой экосистемы Apple Inc. Я не претендую на звание референсного гайда по "как кодить под мак на винде", и ещё немаловажный факт - вопреки радостным воплям линуксоводов, требование настоящего компьютера Apple в качестве донора раздела и (возможно) аккаунта разработчика этот туториал не отменяет. Надеюсь, разъяснил, теперь в путь-дорогу.
Первое, что мы должны сварганить - это установить на наше яблоко такую штуку, которая называется Parallels Desktop. Версию ставьте хоть какую, важно только то, чтобы потом VirtualBox на Windows прочитал эту машину без особых усилий.
Заходим через VPN-сеть на parallels com и закачиваем Parallels Desktop. Важно, чтобы поставился продукт конкретно под этим названием, другой софт не даст нужного нам функционала по очевидным причинам.
Пройдя установку, логинимся через кнопки на правой панели окна регистрации, после чего нас вежливо попросят ввести ключ, на что мы выберем 14-дневный пробный период. Кстати, по моим исследованиям, он отсчитывается от системной даты.
Нас интересует вот эта мутатенька, а точнее - та, которую я обвёл markup'ом на иллюстрации выше. Кликаем по ней и переходим на финальное подтверждение, где кликаем "Install" (см. ниже).
Объяснять человеку, заинтересованному в программировании устанавливать такую обезьяннокнопочную в плане развертывания систему, как MacOS, банально не имеет смысла. И даже, если вы захотите загуглить как это вообще делается, то тут я вас опередил. Вот, держите: https://support.apple.com/en-us/102655#
Когда появляется вот такая (выше) картинка, то вырубаем Параллелс, и, что самое важное, не ставя драйвера и не пакуя виртуалку в файл PVMP.
И тут начинается самое интересное. Мы заходим во внутрь виртуальной машины и выковыриваем оттуда [вернее не прямо оттуда, а из виртуального жёсткого диска] виртуальный жёсткий диск. Делаем вот так:
Заходим в папку с виртуальными машинами Parallels (обычно ~/Parallels или ~/Documents/Parallels)
По файлу под именем [имя машины].pvm (это и есть наша исходная виртуальная машина) правой кнопкой мыши и Контекстное меню -> Show Package Contents.
Повторим шаг 2 для содержащегося в виртуальной машине файла под названием harddisk.hdd или [имя машины].hdd (у кого как).
Тут нас интересует уже то, что потребуется нам в дальнейшем. Ищем файл с расширением hds - он нам и нужен. Как правило, в составе пакета виртуального жёсткого диска Parallels только один такой файл, однако если у вас их несколько, то отсортируйте их по дате создания и выберите самый поздний.
Копируем на рабочий стол, переименовываем в [ваше имя диска].hdd. Важно, чтобы расширение было именно HDD, в противном случае Virtualbox не съест его.
Пришло время создать виртуальную машину на VirtualBox (да, это Mac OS, но не суть важно). В качестве виртуального жесткого диска указываем то, что мы скопировали и переименовали. Создаём.
В обязательном порядке проверяем галочку на Settings -> System -> Processor -> Enable PAE/NX. Без этой настройки ничего не заработает.
Если вы хотите загрузить новоиспечённую виртуальную машину с Mac OS 14 Sonoma на какой-нибудь сервер виртуализации (например, Proxmox VE), можете экспортировать её в формат OVA/OVF (Open Virtualization Format). Таким образом, можно обеспечить ещё один ранг портативности нашего доморощенного мини-Мака.
Спасибо за внимание, всем позитива в лытдыбры!