Правильная загрузка ядра linux с EFI на Macbook

Configuring Linux
Original author: Arun Raghavan
Предлагаю несколько вольный перевод программиста Gentoo о правильном способе загрузке на ноутах с EFI вместо BIOC-а на борту.
Мне недавно купили Macbook Pro 13.3 дюйм и я решил поставить на нём Gentoo Linux.

Сказано — сделано. В целом инсталляция прошла успешно, не считая маленьких недоразумений вроде неработающей клавы из под LiveCD, ядро видит консоль только с vesafb.

Единственное, что немного меня напрягало, это эмуляция BIOS-а. Маки используют для загрузки интеловский EFI, а для остальных ОС Apple добавило уровень эмуляции BIOS-а. Именно так Ubuntu и грузится на Маках.

Мне же это показалось неверным в техническом плане и в принципе. Я немного поднапрягся и мне удалось запустить ядро Linux из под EFI без всяких эмуляций. Документации достаточно мало, поэтому хочу поделиться своим способом.

  1. EFI стартует при загрузке.
  2. Запускает rEFIt, программа, которая расширяет возможности дефолтного загрузчика, добавляя нормальное загрузочное меню, командную строку, и т. п.
  3. Сканирует FAT/HFS разделы (ext* не поддерживаются) ища загрузочный, который содержал бы каталог /efi/; и загрузочные образы.
  4. Запускает образ Grub2 EFI с FAT раздела.
  5. Загружает ядро Linux с /boot (+ initrd/initramfs если задано).
  6. Ядро, как обычно, загружается с корневого раздела, можно выбрать любую файловую систему.

Можно использовать 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, но на этом уже всё. Теперь вы осознаете с некоторым маниакально-навязчивым удовлетворением, что не должны подключать лишнее звено для поддержки еще одного проприетарного интерфейса, находящегося за пределами вашей видимости и контроля.
Tags:linuxgentooefimacgrub2grub
Hubs: Configuring Linux
+13
8.9k 28
Comments 67

Popular right now

Профессия Product Manager
March 3, 2021108,500 ₽Нетология
Python для анализа данных
March 3, 202124,900 ₽SkillFactory
Профессия Data Scientist
March 3, 2021162,000 ₽SkillFactory
Специализация Data Science
March 3, 2021114,000 ₽SkillFactory
Python для веб-разработки
March 5, 202159,400 ₽SkillFactory