- Правильная загрузка ядра linux с EFI на Macbook
- Режимы загрузки компьютеров Mac с процессором Intel и чипом безопасности Apple T2
- Установка Mac OS X на PC. Часть 19: UEFI-загрузка
- Про EFI, UEFI и Маки
- Что придумали хакинтошники?
- Зачем нужна UEFI-загрузка?
- Какие недостатки имеет UEFI-загрузка?
- Как включить UEFI-загрузку на хакинтоше?
- Как правильно настроить UEFI-загрузку?
Правильная загрузка ядра linux с EFI на Macbook
Предлагаю несколько вольный перевод программиста Gentoo о правильном способе загрузке на ноутах с EFI вместо BIOC-а на борту.
Мне недавно купили Macbook Pro 13.3 дюйм и я решил поставить на нём Gentoo Linux.
Сказано — сделано. В целом инсталляция прошла успешно, не считая маленьких недоразумений вроде неработающей клавы из под LiveCD, ядро видит консоль только с vesafb .
Единственное, что немного меня напрягало, это эмуляция BIOS-а. Маки используют для загрузки интеловский EFI, а для остальных ОС Apple добавило уровень эмуляции BIOS-а. Именно так Ubuntu и грузится на Маках.
Мне же это показалось неверным в техническом плане и в принципе. Я немного поднапрягся и мне удалось запустить ядро Linux из под EFI без всяких эмуляций. Документации достаточно мало, поэтому хочу поделиться своим способом.
- EFI стартует при загрузке.
- Запускает rEFIt, программа, которая расширяет возможности дефолтного загрузчика, добавляя нормальное загрузочное меню, командную строку, и т. п.
- Сканирует FAT/HFS разделы (ext* не поддерживаются) ища загрузочный, который содержал бы каталог /efi/ ; и загрузочные образы.
- Запускает образ Grub2 EFI с FAT раздела.
- Загружает ядро Linux с /boot (+ initrd/initramfs если задано).
- Ядро, как обычно, загружается с корневого раздела, можно выбрать любую файловую систему.
Можно использовать elilo , но Grub2 (точнее Grub 1.97.1 ) справляется лучше, вернее это единственное, что хоть как-то работает с небольшими модификациями (добавить в ebuild USE флаг efi через —with-platform=efi ). У меня получилось настроить /boot раздел на файловую систему FAT, но от этого падает installkernel скрипт запускаемый из директории исходников ядра, который создает символические ссылки на новый и предыдущий образы ядра.
Инструкции по установке EFI образа Grub2 тут. Установите образ EFI в директорию, что-то наподобие /efi/grub (обязательно должен быть путь /efi ). Команды bless можно пропустить, они для OS X. Можете создать простенький конфиг-файл командой grub-mkconfig и затем модифицировать его. Однако, для того, чтобы сделать По Уму™ вручную отредактируйте файлы из /etc/grub.d/ .
Конечно же надо выставить в ядре поддержку EFI, но на этом уже всё. Теперь вы осознаете с некоторым маниакально-навязчивым удовлетворением, что не должны подключать лишнее звено для поддержки еще одного проприетарного интерфейса, находящегося за пределами вашей видимости и контроля.
Источник
Режимы загрузки компьютеров Mac с процессором Intel и чипом безопасности Apple T2
Во время загрузки компьютера Mac с процессором Intel и чипом безопасности Apple T2 компьютер можно перевести в один из режимов загрузки, нажав сочетание клавиш, распознаваемое прошивкой UEFI или загрузчиком. Некоторые режимы загрузки, например однопользовательский режим, не работают, пока в Утилите безопасной загрузки не изменена политика безопасности, то есть пока не установлен параметр «Функции безопасности отключены».
Прошивка UEFI передает управление загрузчику macOS (приложению UEFI), которое передает управление ядру macOS. Если выполняется стандартная загрузка компьютера Mac с включенной функцией FileVault, загрузчик macOS отображает интерфейс входа в систему, где нужно ввести пароль, чтобы расшифровать хранилище.
Прошивка UEFI запускает встроенное приложение UEFI, которое отображает интерфейс выбора загрузочного устройства.
Режим внешнего диска (TDM)
Прошивка UEFI запускает встроенное приложение UEFI, которое предоставляет доступ к внутреннему устройству хранения в режиме неформатированного блочного устройства хранения через FireWire, Thunderbolt, USB или любое их сочетание (в зависимости от модели Mac).
Ядро macOS передает флаг -s в векторе аргументов launchd, затем launchd создает однопользовательскую оболочку в tty приложения «Консоль».
Примечание. Если пользователь выходит из оболочки, macOS продолжает загрузку и отображает окно входа.
Прошивка UEFI загружает минимальную версию macOS из файла подписанного образа диска (.dmg) на внутреннем устройстве хранения.
recoveryOS из интернета
Option (⌥)-Command (⌘)-R
Подписанный образ диска загружается из интернета по протоколу HTTP.
Прошивка UEFI загружает минимальную диагностическую среду UEFI из файла подписанного образа диска на внутреннем устройстве хранения.
Диагностика через интернет
Подписанный образ диска загружается из интернета по протоколу HTTP.
Если операционная система Windows была установлена с помощью Boot Camp, прошивка UEFI передает управление загрузчику Windows, который передает управление ядру Windows.
Источник
Установка Mac OS X на PC. Часть 19: UEFI-загрузка
В этом году на AppStudio появилось множество новых таблиц и разделов. Мы воплотили в жизнь многие затеи и планы. И всё бы отлично, но вот кое за что нас можно пожурить. В 2012-м у нас не получилось уделять должного внимания нашим циклам статей. Но хотя бы под конец года мы немного поправим это упущение — например, очередная статья давно напрашивается в наш большой цикл о теории хакинтоша.
Часто нас спрашивают: «Вы же приличный сайт, про пиратство не пишете, за пару предложений про AppSync отправляете в бан. Так почему же вы рассказываете про такие тёмные дела, как хакинтоши?». Обычно мы отвечаем двумя доводами:
- во-первых, это чертовски интересно. Если сравнить инструментарий, применяемый для настройки хакинтошей сейчас, с тем, что был в 2007-2008 году, отличия будут поразительными. Какие только выдумки не были воплощены в этой динамично меняющейся сфере знаний!
- во-вторых, это полезно для самой Apple. Кто бы что ни говорил, а в голову любого хакинтошника рано или поздно закрадывается мысль «а не пора ли перейти на реальный мак?». И что интересно, многие так и поступают.
В отличие от джейлбрейка, который скоро можно будет окончательно хоронить, с хакинтошами история развивается совсем иначе. Сейчас — отличное время для того, чтобы с ними экспериментировать. Кто бы мог подумать лет пять назад, что когда-нибудь Mac OS X на PС можно будет грузить через EFI-среду? А нынче это не просто модный тренд, это уже мейнстрим.
Про EFI (точнее, про UEFI)-загрузку Mac OS X на PC мы и хотели бы поговорить в девятнадцатой по счёту статье нашего хакинтошного цикла. Как всегда, мы рассмотрим тему с точки зрения обывателя и постараемся ответить на простые вопросы: что такое UEFI-загрузка, зачем она нужна, какие минусы имеет и как её правильно настроить.
Несколько лет назад мы с уверенностью твердили: главное отличие Маков от PC состоит в наличии на яблочных компьютерах EFI — продвинутой альтернативы PC-шному BIOS, возможности которой сравнительно легко расширяются. Но сегодня этот тезис безнадёжно устарел. Загляните в любой компьютерный магазин, купите современную материнку, и с большой вероятностью это окажется материнская плата с UEFI.
Про EFI, UEFI и Маки
UEFI и EFI — есть ли разница между ними? И да, и нет. Дело в том, что Unified EFI (UEFI) — результат закономерной эволюции спецификаций EFI, который сейчас де-факто является стандартом, причём поддержку этого стандарта обеспечивает сама компания Intel. В скором будущем BIOS окончательно будет вытеснен UEFI по ряду чисто объективных причин. Главная из них состоит в том, что компьютеры с BIOS неспособны работать с жёсткими дисками, чья ёмкость превышает 2,2 ТБ. Давным-давно такая ёмкость казалась фантастикой, а сейчас, в эпоху Blu-ray-видео, и трёхтерабайтными винчестерами уже никого не удивишь.
Таким образом, стёрлось одно из важнейших отличий Mac и PC, и два таких разных компьютерных мира стали ещё ближе друг к другу. Разумеется, это повод порадоваться за хакинтошников, но радоваться можно лишь отчасти. Виновата в этом Apple (а кто бы сомневался? :). Дело в том, что UEFI-среда на Маках всё равно отличается от той, что применяется на современных материнских платах для PC. Ситуация похожа на положение вещей в Mac OS X — с одной стороны, это как бы полноценная *nix-система с открытым кодом; а с другой стороны оказывается, что Apple открывает только тот исходный код, который сама сочтёт нужным. Так и с маковским UEFI — вне сомнений, это тот самый UEFI, который основан на стандартах Intel, но он основательно допилен в Купертино под собственные нужды.
«Допилить» UEFI гораздо проще, чем BIOS. Конечно, модульный принцип реализован и там, и там. Но работая с BIOS, вы никогда не заставите его подгружать файлы дополнительных модулей из папки на диске, учитывая изменение их состава при каждой загрузке. А для UEFI это является самой что ни на есть обыденной возможностью. Этим и пользуется Apple: программисты компании написали собственные модули для EFI, которые используются на Маках. Исходники для них никто не публиковал, так что поддержание статуса-кво со стороны яблочной компании надёжно обеспечено.
Высокотехнологичный UEFI Gigabyte
Что придумали хакинтошники?
Представители хакинтошного движения подумали совершенно здраво: раз нельзя взять и подправить эппловские модули EFI так, чтобы они запускались на PC, то можно написать свои собственные, которые решали бы те же задачи. На сегодняшний день можно констатировать, что первый (да что там первый — единственный) загрузчик, в котором эта концепция полностью раскрыта — это Clover, о котором мы уже писали в нашем хакинтошном цикле статей.
Clover реализован в двух вариантах — традиционной и UEFI-версиях. Внешне они выглядят практически одинаково (разве что у UEFI-версии разрешение экрана может быть меньше), но в процедуре загрузки системы разница колоссальна.
Например, вот по какой цепочке грузится Clover на компьютере с BIOS:
BIOS -> сектор MBR -> сектор PBR -> файл boot -> файл загрузчика CLOVERX64.efi -> файл системного загрузчика boot.efi->ядро системы mach_kernel
А так этот процесс выглядит при работе через UEFI:
UEFI -> файл загрузчика CLOVERX64.efi -> файл системного загрузчика boot.efi->ядро системы mach_kernel
Даже если вы не хотите вникать в технические тонкости, разницу вы заметите: во втором варианте цепочка загрузки меньше на три пункта. В этом и состоит главное достоинство UEFI-загрузки.
Зачем нужна UEFI-загрузка?
Сразу развенчаем один популярный миф: никто никогда не говорил, что на материнских платах с UEFI загрузка Mac OS X в UEFI-режиме хакинтошного загрузчика является единственно возможным вариантом. Вовсе нет, на таких материнках совершенно спокойно можно грузиться через эмулятор BIOS. Соответственно, возникает закономерный вопрос о том, что же такого даёт UEFI-загрузка в сравнении с BIOS-загрузкой?
- во-первых, скорость. Это наиболее заметный плюс, т.к. за счёт сокращения длины цепочки загрузки (см. выше) можно достичь сокращения общего времени загрузки компьютера и системы в 2-4 раза. Например, Mac OS X на SSD в условиях BIOS-загрузки Clover будет запускаться не раньше, чем через 45-50 секунд после того, как вы нажмёте кнопку включения компьютера. Львиную долю времени вы будете наблюдать чёрный экран и ждать инициализации загрузчика. Та же Mac OS X на том же SSD может грузиться секунд за 8-10, и это действительно замечательный результат
- во-вторых, NVRAM. На UEFI-материнках эта часть памяти, свободно изменяемая, но не очищаемая при перезагрузке компьютера, может использоваться в системных целях. Например, Маки хранят в NVRAM информацию о загрузочном разделе (который задаётся в панели «Загрузочный том» в системных настройках). На хакинтошах до относительно недавнего времени эта панель никогда не работала. Потом для BIOS-среды, в рамках которой сохранение информации в NVRAM после перезагрузки или выключения физически невозможно, был придуман хитрый трюк с копированием содержимого виртуально эмулируемой памяти NVRAM в файл на диске и последующим считыванием этого содержимого при следующей загрузке. В условиях UEFI все эти ухищрения теряют смысл; всё работает почти так же, как и на настоящих Маках
- в-третьих, «нативность». Правда, мы сами не понимаем, что это даёт, кроме некоторого душевного успокоения. Всё равно хакинтош никогда не будет «нативнее», чем настоящий Мак 🙂
Какие недостатки имеет UEFI-загрузка?
Недостатков тоже не так много:
- во-первых, возможны проблемы с iCloud (например, неспособность залогиниться в iMessage или FaceTime)
- во-вторых, при UEFI-загрузке режим сна становится ещё капризнее: даже на тех хакинтошах, где он без проблем работал при загрузке через эмуляцию BIOS, сон может испортиться при переходе на загрузку через UEFI
Обе проблемы носят временный характер; часть причин скрыта в несовершенстве существующих EFI-модулей для хакинтошей, ещё часть — в недрах самой Mac OS X, которая и на «настоящиках» иногда работает совершенно загадочно. Как бы то ни было, надеяться на устранение этих недостатков в будущем всё-таки можно.
Как включить UEFI-загрузку на хакинтоше?
Проще, чем может показаться после прочтения написанного выше. Clover (особенно его свежие сборки) рассчитан на максимальное упрощение этого процесса. В большинстве случаев вам достаточно поставить загрузчик на EFI-раздел диска, на котором расположена Mac OS X. Для этого предусмотрена отдельная опция в параметрах установщика Clover.
А если вы хотите ставить Clover самостоятельно, напомним инструкцию. Допустим, вы распаковали загрузчик на рабочий стол в папку Clover. Запустите Терминал, введите команду sudo -s (потребуется ввести пароль от аккаунта вслепую и нажать Enter). Затем вбейте diskutil list и найдите номер нужного вам диска:
Если искомый диск — disk1 (напоминаем, что после каждой перезагрузки номера дисков могут меняться случайным образом), вводите следующие команды:
[php]mkdir /Volumes/EFI
mount_msdos /dev/disk3s1 /Volumes/EFI
cd /Volumes/EFI
touch /Volumes/EFI.metadata_never_index
rm -rf /Volumes/EFI/.fseventsd/
mkdir /Volumes/EFI/.fseventsd
touch /Volumes/EFI/.fseventsd/no_log
cp -R
/Clover/* /Volumes/EFI
umount -f /Volumes/EFI[/php]
Чтобы потом получить доступ к EFI-разделу и смонтировать его в Finder, потребуются следующие команды:
[php]sudo -s
mkdir /Volumes/EFI
mount_msdos /dev/disk1s1 /Volumes/EFI[/php]
Само собой, в disk1s1 надо будет подставить правильный номер диска, который вам покажет команда diskutil list. Отключение EFI-раздела производится командой umount -f /Volumes/EFI.
После перезагрузки в настройках UEFI вашей материнки в секции управления загрузочными устройствами надо будет выбрать пункт, соответствующий EFI-разделу на диске с Mac OS X.
Как правильно настроить UEFI-загрузку?
Большинство проблем при UEFI-загрузке возникают из-за неверного выбора EFI-модулей. Важно понимать их задачу: это те же драйверы, но работают они ещё до загрузки системы, т.к. они предназначены для самого загрузчика. Стоит вам забыть какой-нибудь модуль или поставить лишний — всё испортится, система рискует перестать грузиться.
Поэтому важно знать, для чего предназначены те или иные хакинтошные EFI-модули:
Что следует положить в эти папки? На выбор пользователя.
- HFSPlus.efi, NTFS.efi, VBoxExt2.efi — драйверы файловых систем, обеспечивающие доступ загрузчика Clover к разделам в HFS+, NTFS и ext2/3 соответственно. Забудете первый — загрузка Mac OS X станет невозможной. Забудете второй — Clover не увидит никакие диски с Windows; а если забудете положить третий — не будут видны разделы с Linux-системами
- FSInject.efi – модуль, который обязателен в том случае, если вы хотите подгружать в систему дополнительные кексты (расширения ядра, они же драйверы OS X) прямо из папки загрузчика Clover
- PartitionDxe.efi – модуль, обеспечивающий правильную работу с разными разметками диска (как с MBR, так и с GPT, а также с гибридной разметкой)
- DataHubDxe.efi – по идее, можно и без него, но с ним надёжнее. Драйвер регулирует обмен данными через порты компьютера
- OsxFatBinaryDrv.efi – модуль, обеспечивающий загрузку других крупных EFI-модулей. Таким крупным модулем является системный загрузчик Mac OS X — boot.efi, поэтому этот драйвер обязателен для EFI-загрузки
- OsxLowMemFix.efi и OsxAptioFixDrv.efi – модули, корректирующие работу загрузчика с оперативной памятью. Если у вас возникают проблемы с загрузкой системы, пробуйте первый из них, если и он не помогает — второй. Но ни в коем случае не ставьте их одновременно
- Usb*.efi, *HCI.efi – USB-драйверы для UEFI, которые пригодятся на тот случай, если в UEFI-режиме у вас отваливается мышь или клавиатура
- CsmVideoDxe.efi — модуль, активирующий дополнительные разрешения экрана загрузчика в UEFI-режиме
- модули со словом «Mouse» в названии обеспечивают работу мыши в среде загрузчика Clover. Если не нужна мышь — не нужны и драйверы
Все (а точнее, не все, а только те, что вам нужны 😉 эти драйверы нужно класть в папку /EFI/drivers64UEFI на том носителе, где установлен Clover.
Напоследок скажем, что обсудить нюансы UEFI-режима Clover непосредственно с разработчиком загрузчика вы можете здесь.
Источник