LINUX.ORG.RU

Симлинки на efi разделе

 , , ,


0

1

Привет, я на новой системе взгромоздил загрузку с efi, диск gpt (вроде как на биосе с uefi рекомендуется именно efi/gpt, вместо mbr, но не суть, уже понял что ссзб).

На другой машине у меня mbr, lilo и debianutils, который делает удобные симлинки при сборке нового ядра (vmlinuz -> vmlinuz-4.14.1-gentoo). Т.е. достаточно запустить make install, новый образ ядра скопируется в /boot, и обновлятся симлинки.

В качестве загрузчика установлен refind с ключом usedefault, что бы не дублировать загрузчик.

Проблема в том, fat вроде бы не поддерживает симлинки (либо я делаю что-то не так), и при каждом обновлении ядра нужно менять номер версии ядра (название файла ядра) в refind.conf.

Как сделать подобное на efi разделе?

★★

Последнее исправление: afterlanding (всего исправлений: 1)

пропиши всё, что нужно в /sbin/installkernel

(его инвочит make install).

// а, тебя интересует как сделать на fat32, это другой вопрос.

Bruce_Lee ★★
()
Последнее исправление: Bruce_Lee (всего исправлений: 1)

Проблема в том, fat вроде бы не поддерживает симлинки

Ыыыы лал. Внезапно! И как там в криокамере?

anonymous
()
Ответ на: комментарий от anonymous

Есть способ загрузить ядро не с efi, а с ext4?

Когда кладу ядро на ext4 /boot, то refind его не видит (собран с ext4)

Efi раздел у меня тоже монтируется в /boot, что наверное не совсем правильно.

afterlanding ★★
() автор топика
Ответ на: комментарий от afterlanding

Это правильно только для убогих загрузчиков вроде systemd-boot, которые могут грузить ядра только с ESP.

Thetan ★★★
()
Ответ на: комментарий от afterlanding

Я не знаю про refind, но GRUB точно может. То есть на ESP только сам загрузчик, а ядро вообще в любом месте, которое поддерживается GRUB.

anonymous
()
Ответ на: комментарий от targitaj

systemd-boot и syslinux (и возможно кое-какие ещё) поддерживают загрузку ядра только из того раздела, где установлены, то есть из ESP. Поэтому иногда советуют монтировать ESP в /boot, а не /boot/efi.

Thetan ★★★
()
Ответ на: комментарий от afterlanding

Efi раздел у меня тоже монтируется в /boot, что наверное не совсем прав

В смысле тоже? Ты монтируешь в /boot два раздела? Efi монтируй в /boot/efi, refind прекрасно оттуда работает. В /boot монтируй обычный ext.

imul ★★★★★
()

Лучше всего не использовать загрузчик, а скомпилить ядро с EFISTUB, настроить загрузку при помощи efibootmgr.

CYB3R ★★★★★
()
Ответ на: комментарий от imul

/dev/sda1 это / (корень), в корне есть директория boot.

/dev/sda2 это efi, монтирую в /boot, когда смонтирован, появляется /boot/EFI/BOOT (тут лежит rfind.conf, иконки)

Нужно поменять точку монтировния /dev/sda2 с /boot на /boot/efi?

Ядра копировать в /boot?

В refind.conf, в volume нужно писать раздел efi (/dev/sda2) или раздел где ядро лежит (/dev/sda1)?

Там пути относительно volume указываются, и у меня получается что иконки лежат на efi, а ядро на ext4.

Окончательно запутался.

afterlanding ★★
() автор топика

ссзб

Чойта? GPT норм.

refind

Объясните мне, почему все ставят дополнительный загрузчик поверх UEFI? UEFI само по себе уже загрузчик, куда ещё один? Ты ещё в rEFInd поставь в качестве опции GRUB2, и уже из него грузи ядро, лол.

fat вроде бы не поддерживает симлинки (либо я делаю что-то не так)

Не поддерживает, никогда не поддерживало и поддерживать не будет.

Как сделать подобное на efi разделе?

Если твой UEFI поддерживает HFS+ (iMac, MacBook Pro), можешь попробовать, но я не задавался вопросом, умеет ли UEFI работать с симлинками.

r3lgar ★★★★★
()
Ответ на: комментарий от r3lgar

Объясните мне, почему все ставят дополнительный загрузчик поверх UEFI?

Я руководствовался этой статьей: https://habr.com/post/314412/

Если правильно понял, это позволяет не перезаписывать nvram.

По поводу своего вопроса о расположении ядра и иконок на разных разделах, я вроде разобрался в конфиге refind должен быть следующий порядок опций:
icon - относительный путь, на разделе esp
volume - указываем где лежит ядро, в моем случае это будет UUID корня, т.к. boot в корне
loader - имя файла, в моем случае /boot/vmlinuz

А у меня сейчас volume не задан, вот он и не может ядро найти.

Осталось проверить свою догадку.

Спасибо за наводящие мысли.

afterlanding ★★
() автор топика
Ответ на: комментарий от afterlanding

/dev/sda2 это efi, монтирую в /boot, когда смонтирован, появляется /boot/EFI/BOOT (тут лежит rfind.conf, иконки)

У тебя в /dev/sda2 файлы лежат относительно /boot
Поэтому если ты сменишь точку монтирования /dev/sda2 на /boot/efi то у тебя /boot будет пустой, а в /boot/efi сползёт путь на один лишний каталог.
Потом можно раскидать файлы руками, чтобы они соответствовали прежнему расположению. Скорее всего refind придётся переустановить.

imul ★★★★★
()
Последнее исправление: imul (всего исправлений: 1)
Ответ на: комментарий от r3lgar

Объясните мне, почему все ставят дополнительный загрузчик поверх UEFI?

Чтобы не вкомпиливать cmdline в ядро?

anonymous
()
Ответ на: комментарий от afterlanding

Я руководствовался этой статьей

Даже по ссылке не пойду. Хабр — зашквар. Туда пишут только для того, чтобы пропиариться, толкнуть какую-нибудь проприетарную дичь или нести околотехническую чушь.

Если правильно понял, это позволяет не перезаписывать nvram.

Я просто переименовываю ядро в kernel.efi и kernel-old.efi, и не заморачиваюсь.

r3lgar ★★★★★
()
Ответ на: комментарий от anonymous

Объясните мне, почему все ставят дополнительный загрузчик поверх UEFI?

Чтобы не вкомпиливать cmdline в ядро?

efibootmgr --help | grep "\s-u"
r3lgar ★★★★★
()
Ответ на: комментарий от afterlanding

Надо было делать два раздела:

EFI System partition - FAT32 - /boot/efi (загрузчик) Boot partition - ext2(ext4) - /boot (ядра)

anonymous
()
Ответ на: комментарий от anonymous

Не вижу связи между дырами в Intel ME и OCD.

anonymous
()
Ответ на: комментарий от anonymous

Настройки BIOS/UEFI слетали, но пункты меню загрузки никуда не девались, например. AMI EFI на материнке от ASUS.

Radjah ★★★★★
()
Ответ на: комментарий от Radjah

Хм, возможно. Просто у меня включена установка GRUB в /boot/efi/EFI/BOOT/BOOTX64.EFI, поэтому я давно не интересуюсь, как оно там. В любом случае удобный загрузчик и нормальная ФС (initrd на ФС без журнала испортился буквально в первые несколько дней) мне важнее дрочки на минимализм.

anonymous
()
Ответ на: комментарий от ValdikSS

А что это принципиально изменит, если драйвер будет недоступен до запуска boot entry? Если только запускать всегда шелл, у которого в автозапуске загрузка драйвера и потом запуск ядра со ставшего доступным раздела. Как-то очень заморочено.

anonymous
()
Ответ на: комментарий от afterlanding

Вопрос решился правильным volume в конфиге.
Теперь все что касается refind, лежит на ESP разделе который при необходимости монтируется в /boot.

В директории /boot корневого раздела ext4 лежат ядра с симлинками, которые обновляет installkernel при вызове make install.

На всякий случай записал в wiki свои приключения, может кому-то ещё пригодится.

https://wiki.gentoo.org/wiki/Refind

Всем спасибо за помощь.

afterlanding ★★
() автор топика
Ответ на: комментарий от r3lgar

Объясните мне, почему все ставят дополнительный загрузчик поверх UEFI? UEFI само по себе уже загрузчик, куда ещё один?

Не все, конечно. UEFI обладает меньшей функциональностью. Кому-то хватает, кому-то нет.

Мне нравится, что GRUB умеет грузить с LVM и даже с зашифрованных разделов LUKS, непосредственно сам расшифровывая раздел с /boot или корень, если отдельного /boot нет (см. опцию GRUB_ENABLE_CRYPTODISK).

Я не вижу для себя смысла менять давно работающую схему загрузки только для того, чтобы избавиться от GRUB.

Для меня GRUB — не overhead, а ПО, выполняющее расширенный спектр задач, которые не может выполнить встроенный UEFI.

Pravorskyi ★★★
()
Ответ на: комментарий от afterlanding

Спасибо за документирование в общественной wiki. Это более ценно, чем разрозненные заметки в личных блогах, которые не исправляются и устаревают.

Pravorskyi ★★★
()
Ответ на: комментарий от Pravorskyi

GRUB умеет грузить с LVM и даже с зашифрованных разделов LUKS

Это хорошо, но не у всех диск зашифрован.

Я не вижу для себя смысла менять давно работающую схему загрузки только для того, чтобы избавиться от GRUB.

Так я не призываю избавляться от GRUB, но те, кто хотят перейти на UEFI, даже не знают о том, что в UEFI есть функционал, который в 90% случаев покрывает нужды "беженцев".

Для меня GRUB — не overhead, а ПО, выполняющее расширенный спектр задач, которые не может выполнить встроенный UEFI.

Если ты пользуешься хотя бы частью функционала (помимо загрузки kernel+initrd), то я за тебя только рад.

У меня сейчас в UEFI Menu есть прямая загрузка ядра, GRUB2, memtest. В GRUB2 у меня выбор побогаче, но пользуюсь я им не всегда.

r3lgar ★★★★★
()
Ответ на: комментарий от Pravorskyi

Просто взгляд вцепился в обобщение «почему все».

Имелось в виду «почему все, задающие вопрос о переходе на UEFI», то есть исключительно в рамках этого треда.

r3lgar ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.