Загрузка системы напрямую через UEFI

В предыдущей статье говорилось про православный systemd-boot. Но, так как я атеист, то предлагаю решение для максимально укуренных мануалами асоциальных маргиналов — загрузка ядра напрямую из UEFI как исполняемого файла.

Особых профитов вы не получите по сравнению с systemd-boot, та хрень, что я предлагаю, нужна исключительно для повышения красноглазости и собственного ЧСВ.

Информация взята из арчевики, хабра и собственной больной фантазии.

Перво-наперво

Нужен раздел под 100 метров, отформатированный в fat32 (да-да, это ваш efi). Но монтировать его надо в /boot а не в /boot/efi. Нужно это для того, чтобы ядро находилось именно на этом разделе (это принципиально важно, без этого условия ничего не получится).

И небольшая утилитка efibootmgr, которая спокойно валяется в репозиториях.

Самый сок. Загрузочная запись efi

Если вам совсем скучно жить и у вас не совсем старый комп, то можете использовать встроенный UEFI shell, который не очень удобный но в принципе рабочий.

На хабре лежит не очень внятная запись на эту тему, поэтому лучше подсмотреть шаблон с арчевики:

efibootmgr -d /dev/sdX -p Y -c -L "Arch Linux" -l /vmlinuz-linux -u "root=/dev/sda2 rw resume=/dev/sda4 initrd=/initramfs-linux.img"

Вот тут уже всё предельно просто:

  1. -d /dev/sdX  это ваш основной диск (sda,sdb,sdc).
  2. -p  Y собственно номер EFI раздела.
  3. -L «Arch Linux» лейбл, имя вашей загрузочной записи — можете выбрать любое (да хоть любую крякозябру, вы её увидите от силы 2 раза).
  4. -l /vmlinuz-linux это ваше ядрышко. Не знаю как в manjaro, но в арче оно называется именно так с небольшими поправками для особых случаев. Если собрано ядро с аура , то называться файлик будет vmlinuz-linux-mainline. Логично предположить что в манжаре будут суффиксы из версии ядра.
  5. -u … А вот это уже параметры, которые будут передаваться ядру при запуске. Среди них обязательно должен быть указан root — корневой раздел вашей системы (можно указывать не диск, а UUID, LABEL или всё что душе угодно из вывода blkid) и initrd, который лежит рядом с ядром и имеет те же отличительные особенности в названии. Если вы лазили по настройкам граба, то можете вспомнить(или подсмотреть в /etc/defaults/grub) параметры GRUB_CMDLINE и DEFAULT_GRUB_CMDLINE. Ну либо же из статьи про systemd-boot взять значения параметра options.

Естественно команду надо запускать от рута, чтобы она могла внести изменения. После выполнения сразу проверьте, что запись создалась:

efibootmgr -v

Чуть не забыл — запись после создания отредактировать нельзя, только стереть существующую запись и создать новую. Для таких случаев лучше сохранить команду с которой вы эту запись создавали (если вы забыли то можете помолиться и найти её в недрах ~/.bash_history)

Вот мой монструозный конфиг:

sudo efibootmgr -d /dev/sda -p 1 -c -L "Archlinux" -l /vmlinuz-linux-mainline -u 'root=/dev/sda2 rootflags=subvol=@ initrd=/initramfs-linux-mainline.img rw raid=noautodetect selinux=0 plymouth.enable=0 lpj=7981490 resume=/dev/sda4 rcutree.rcu_idle_gp_delay=1 udev.log_priority=3 audit=0 csi_mod.use_blk_mq=1 elevator=bfq acpi_osi=Linux acpi_backlight=vendor'

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Вы можете быть заинтересованы в Cледующем

1
Оставить комментарий

avatar
1 Цепочка комментария
0 Ответы по цепочке
0 Последователи
 
Популярнейший комментарий
Цепочка актуального комментария
0 Авторы комментариев
Авторы недавних комментариев
  Подписаться  
новее старее большинство голосов
Уведомление о
trackback

[…] Вместо Grub вы можете использовать systemd-boot или просто создать загрузочную запись Efi. […]

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: