Pull to refresh

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

Reading time 2 min
Views 11K
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:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+13
Comments 67
Comments Comments 67

Articles