Как установить Ubuntu на Apple M1 и ничего не сломать
Corellium ранее работала над проектом Project Sandcastle, который позволяет установить ОС Android на iPhone 7 благодаря уязвимости checkm8. Установкой Android на iPhone не занимались со времени iDroid Project и iPhone 3G. Как и iDroid Project, Project Sandcastle не предоставляет ОС для повседневного использования, это скорее масштабный Proof-of-Concept с открытым исходным кодом.
Подобные проекты очень трудоемки с точки зрения разработки, сложны для эксплуатации обычными пользователями и вряд ли будут использоваться широкой аудиторией. Тем не менее, стоит воспользоваться возможностью посмотреть все своими глазами.
В чем сложность
Наиболее подробно — в соответствующей статье в блоге Corellium.
Ни для кого не секрет, что Apple отступается от принятых стандартов и часто использует собственные решения. Для начала отметим, что macOS загружается несколько иначе, чем операционные системы семейств Windows и *nix. В качестве загрузчика в «яблочных» устройствах используется iBoot. Он загружает ядро в формате Mach-O, которое может быть сжато, подписано и лежать в контейнере IMG4.
Более сложные вещи начинаются, когда появляется необходимость запустить остальные ядра процессора. В обычных ARM64-процессорах это производится через интерфейс Power State Coordination Interface (PSCI). Но в M1 другие ядра запускаются со смещения, которое указано в соответствующем Memory-mapped I/O (MMIO) регистре.
Но даже это еще не все. Apple создали свой собственный контроллер прерываний, который не соответствует ни одному стандарту ARM Generic Interrupt Controller (GIC). Также прерывания, генерируемые таймером, используют специальный тип запросов FIQ (Fast Interrupt Request) вместо IRQ, что пока не поддерживается ядром Linux.
Для взаимодействия процессорных ядер между собой используются специальные прерывания — Inter-Processor Interrupt (IPI), которые в M1 формируются также с помощью FIQ. Таким образом, поддержка FIQ — один из наиболее важных моментов в этом порте.
Ядро Linux на M1 (источник twitter.com)
Сотрудникам Corellium пришлось разработать собственный драйвер для обработки прерываний через FIQ, написать «обертку», которая позволила бы запустить все ядра, и решить еще несколько аппаратных проблем. Только после этого они смогли запустить ядро Ubuntu.
Впрочем, запуск ядра — это только начало. Для успешной эксплуатации необходимо подключить устройства ввода, такие как клавиатура и мышь. Есть три способа: использовать USB-хост в чипе M1 (для ThunderBolt/USB Type-C), использовать xHСI-хост (для USB Type-A) или воспользоваться Bluetooth.
Bluetooth работает на нестандартном PCIe-подобном протоколе, поэтому разработка собственного модуля ядра для неизвестного протокола могла затянуться. В Corellium приняли решение настроить USB, и через пару дней работы им удалось подключить устройства ввода.
На момент написания статьи уже доступен Proof-of-Concept, который можно попробовать самостоятельно. Учтите, что все дальнейшие действия вы можете делать исключительно на свой страх и риск.
Установка Ubuntu
Для начала использования Ubuntu нам потребуется следующее:
- Mac с процессором Apple M1 (поддерживаются Mac Mini, Macbook Pro и Macbook Air);
- флешка с разъемом USB Type-C объемом от 16 ГБ;
- USB-клавиатура и USB-мышь.
В качестве флешки я использовал Kingston DataTraveler microDuo 3C объемом 32 ГБ, поддерживающую USB Type-A и USB Type-C. Инструкция Corellium настаивает на использовании Type-C флешки, так как загрузка с Type-A не поддерживается на момент написания данной статьи. Мышь и клавиатуру я подключал по USB Type-A.
Есть и менее очевидные требования. Во-первых, на Mac Mini должна быть установлена macOS 11.2 или выше. В старых версиях ОС в утилите kmutil отсутствует команда configure-boot, необходимая для корректной «подмены» ядра.
Также необходимо «отвязать» Mac от Find My Mac. Наличие «привязки» не позволяет отключить системы безопасности в полной мере и выполнить все необходимые команды.
В первую очередь подготовим образ для флешки. Скачиваем, а затем распаковываем архив. Подготовку следует выполнять в терминале Mac, на котором планируем запустить Ubuntu.
Далее разворачиваем образ на флешку:
Обратите внимание, что необходимо указать именно флешку, а не раздел на ней. Например, /dev/rdisk6. Далее копируем драйвера на Wi-Fi:
Если вы используете проводное подключение к Интернету, то флешку можно подготовить на компьютере под управлением ОС Linux.
Далее подключаем флешку в USB Type-C порт и перезагружаемся в Recovery OS, известную как 1TR (the One True Recovery), и открываем терминал. На новых Mac это происходит следующим образом:
- Выключаем Mac;
- Удерживаем кнопку включения до появления текста «Загрузка параметров запуска»;
- Выбираем опцию «Параметры» и нажимаем «Продолжить»;
- В верхнем меню открываем «Утилиты» — «Терминал».
Обратите внимание, что Recovery при запуске не должен просить ввести пароль от ОС или от Apple ID. Если он все же просит, то необходимо отключить Find My Mac в настройках macOS.
Устанавливаем ядро Ubuntu:
Данный скрипт проверяет политики загрузки (BootPolicy) и отключает системы проверки целостности macOS, если это необходимо. После этого скрипт загружает ядро Linux в формате Mach-O в корень системного диска и настраивает iBoot на ядро Linux.
В процессе выполнения скрипта будет запрос пароля для получения прав суперпользователя macOS. Выполняемые команды также предупредят вас о том, что выполняемые действия значительно снижают безопасность Mac. Но если вы хотите запустить Ubuntu, то придется принять это как должное.
После завершения скрипта можно перезагрузить Mac, далее начнется загрузка Ubuntu 20.04.
Опыт использования
Первый запуск Ubuntu будет не очень быстрым. В логах загрузки «упадет» четыре-пять сервисов и еще шесть «подвиснут». Ubuntu загружается относительно долго: несколько минут. Более того, первое время отзывчивость ОС будет очень низкой. Запуск новых приложений, даже без графической оболочки, может занимать минуты. Эта проблема самоустраняется вскоре после загрузки.
Нетрудно заметить, что образ сделан на основе Ubuntu для Raspberry Pi. Поэтому в системе пользователи root и pi имеют пароль raspberry. К сожалению, сделать красивый и показательный скриншот с выводом screenfetch не получается. ОС не определяет модель процессора, поэтому в выводе лишь безликое Unknown.
То, что это образ ОС для RPi, будет заметно при попытке установить ПО из пакетного менеджера. Он попытается установить не только требуемый администратором софт, но и обновление ОС с созданием initramfs для «малинки». Подобные действия приведут к появлению ошибок в логах, несмотря на успешность установки запрошенного ПО.
Как и ожидалось, в ОС присутствует минимально необходимый набор драйверов. Звуковая карта, модуль Bluetooth и графический ускоритель не поддерживаются. Большинство системных утилит, таких как lspci, lsusb и lshw, выдают очень скудную информацию о железе.
Несмотря на множество ограничений, я решил провести тест sysbench.
Устройство | Количество вычислений в секунду |
---|---|
Mac Mini (Ubuntu 20.10) | 838 |
Lenovo ThinkPad E14 (Ubuntu 20.04) | 483 |
Хотя данный тест нельзя считать идеальным и показательным, восьмиядерный Apple M1 в два раза превосходит восьмиядерный Intel Core i5-1045U. К сожалению, мне не удалось запустить sysbench на macOS.
Заключение
Установка альтернативных операционных систем на Mac — это всегда увлекательный с технической точки зрения процесс. Новые процессоры Apple M1 стали отличным вызовом для энтузиастов.
А вам приходилось использовать Windows или Linux на Mac?
Источник
Установка Linux на Mac
Давно забыли о Windows? Опостылела OS X? Пришло время задуматься о Linux.
Среди пользователей персональных компьютеров есть категория людей, которые находятся в постоянных поисках лучшего программного обеспечения, более совершенной экосистемы и альтернативной ОС, которая бы сумела удовлетворить их специфические запросы. Сегодняшняя инструкция посвящена установке операционной системы, которая более 30 лет держится особняком. Одни считают ее слишком сложной для понимания, другие со странным именем Linux знакомятся впервые. Но есть и те, кто считает Linux одной из самых безопасных, кастомизируемых и удобных систем в мире. Что ж, вперед за установку!
Шаг 1. Подготовка установочной USB-флешки
Одним из самых важных этапов при установке Linux является подготовка установочной флешки. Несмотря на наличие специализированных утилит, позволяющих создать загрузочный USB-накопитель из графической оболочки, наиболее верным является монтирование образа посредством командной строки и приложения Терминал в OS X.
Первое, что необходимо сделать – загрузить установочный образ Linux с официального сайта. В качестве примера рассмотрим установку дружественной и популярной версии Linux Ubuntu.
1. Откройте страницу загрузки Ubuntu и выберите 64-битную версию ОС (32-битная для Mac попросту не подойдет). Нажмите Download и на следующей страницу выберите пункт Not now, take me to the download.
Дистрибутив Ubuntu распространяется абсолютно бесплатно и, таким образом, вы отказываетесь от финансовой поддержки разработчиков, но если вы все же хотите выразить слова благодарности – перетяните соответствующие «долларовые» ползунки на требуемое значение и оплатите результирующую сумму с помощью платежной системы PayPal.
Дождитесь окончания загрузки дистрибутива.
2. Подключите USB-флешку. Для монтирования загрузочного образа подойдет накопитель, размер которого будет не менее 2 ГБ. Все данные, которые в настоящий момент находятся на флешке, будут безвозвратно стерты.
3. Откройте утилиту Терминал. Наша задача – конвертировать скачанный образ ISO в общепринятый в среде Mac IMG/DMG. Для этого нам потребуется запустить выполнение несложной команды.
hdiutil convert -format UDRW -o
По умолчанию все загрузки в среде Mac попадают в папку Загрузки. Для того, чтобы указать путь к скачанному образу наберите в Терминале первую часть команды: hdutil convert -format UDRW -o. Затем перетяните скачанный файл с образом (он имеет расширение ISO) на окно терминала. Автоматически вставится правильный адрес к исходному файлу. Имя файла ubuntu-14.04.2-desktop-amd64.iso можно изменить на любое, скажем, LinuxInstall, но с ОБЯЗАТЕЛЬНЫМ изменением расширения ISO на IMG. Поставьте пробел и вновь перетяните скачанный образ в окно терминала. На этот раз никаких изменений вносить не нужно. Так выглядит введенная команда:
Будьте внимательны: сначала следует указать имя и место размещения директории с получаемым в процессе конвертации образом, а после – с файлом исходником (скачанным дистрибутивом). После ввода команды нажимаем ENTER и ждем пока окончится процесс конвертации.
Если после выполнения команды вы увидели строку created с адресом файла в формате DMG – все прошло успешно и можно переходить к следующему этапу.
4. Разворачиваем установочный образ на флешку. После выполнения вышеуказанной команды в папке Загрузки появился новый файл LinuxInstall.img.dmg. Наша задача – развернуть его на флешку. Убедитесь, что USB-накопитель подключен к Mac и в Терминале введите следующую команду:
diskutil list
Результат выполнения команды:
Перед нами открылась картина всех подключенных логических дисков системы. Наша USB-флешка числится под идентификатором disk1 (размер 2 ГБ). Отключим ее с помощью следующей команды:
diskutil unmountDisk /dev/disk1
Disk1 – частный случай и в команде прописывайте имя, под которым флешка значится в вашей системе. После извлечение накопителя приступим к записи конвертированного образа:
sudo dd if=/path/to/downloaded.img of=/dev/rdisk1 bs=1m
Как и в пункте 3 для более быстрого указания директории введите фрагмент команды sudo dd if= после чего перетяните новый образ (с расширением DMG) на окно терминала. Закончите ввод команды. Помните, что rdisk1 может иметь другой порядковый номер и имя, и зависит от конкретно вашей системы. Нажмите ENTER и введите пароль администратора.
В течение последующих нескольких минут в окне терминала не будет происходить никаких процессов. Не спешите закрывать утилиту и беспокоиться о подвисании процесса. Разворачивание образа происходит «в тихом режиме». Дождитесь окончания процесса. Сигналом об окончании разворачивания образа станет сообщение:
Нажмите Извелчь, но саму флешку из порта не доставайте. Загрузочный накопитель готов.
Шаг 2. Раздел диска.
Для установки операционной системы Linux по-соседству с OS X потребуется создать дополнительный логический раздел диска. Сделать это можно с помощью Дисковой утилиты, являющейся штатным приложением OS X.
Запустите Дисковую утилиту. Подсветите ваш основной винчестер (именно винчестер, не раздел) и откройте вкладку Раздел диска.
Нажите на знак «+» и установите желаемый размер раздела (для нормальной работы Linux достаточно 10 ГБ; рекомендуем объем – 20 ГБ). Нажмите Применить и дождитесь окончания процесса.
Примечание: Если по какой-либо причине схема разделения недоступна (знак «+/-» серым цветом и не реагирует на нажатия), добавить новый раздел можно из загрузочного меню Mac. Перезагрузите компьютер и сразу после того, как экран загорится белым зажмите клавиши Command + R. Удерживайте до появления системного меню Mac, а затем откройте Дисковую утилиту. Процесс разделения полностью аналогичен с описанным выше.
После разделения диска ОБЯЗАТЕЛЬНО запомните точный размер отделенной логической области в гигабайтах. Перезагружаем компьютер.
Шаг 3. Установка Linux Ubuntu
Сразу после того, как началась перезагрузка, зажмите клавишу ALT и дождитесь появления меню с выбором логических дисков, с которых следует произвести установку. Выберите съемный накопитель EFI (первый) и нажмите Enter.
В появившемся установочном меню операционной системы Ubuntu выберите: Установить Ububntu. Начнется подготовительный процесс установки. После выбора требуемого языка и подключения к сети Wi-Fi установщик спросит как именно мы планируем устанавливать систему.
Внимание! Будьте осторожны!Если вы хотите сохранить работоспособность OS X и Linux выбирайте пункт Другой Вариант (выбор пункта Стереть диск и установить Ubuntu приведет к полному форматированию всей структуры диска и удалению ранее созданных разделов, включая раздел с системой OS X).
В открывшемся меню найдите созданный под Linux раздел диска (поможет знание его размера).
Дважды щелкните по требуемому разделу и установите следующие параметры:
- – файловая система Ext2;
– точка монтирования: /;
Нажмите ОК и Установить сейчас. Сообщение об отсутствии файла-подкачки проигнорируйте, нажав Продолжить. Начнется установка операционной системы Linux. Возможно однократная перезагрузка Mac. После завершения установки пользователю будет предложено указать имя учетной записи и придумать пароль. Сам процесс инсталяции занимает от 5 до 15 минут.
Установка завершена. При включении Mac по умолчанию теперь будет загружаться Linux Ubuntu. Изменить приоритетную систему можно в OS X, перейдя в Настройки – Загрузочный том и подсветив раздел, загрузка которого должна осуществляться в первую очередь.
Источник