LINUX.ORG.RU

Как правильно установить GRUB efi?

 , ,


1

1

Слетела загрузка свежеустановленной и настроенной системы. Очень не хочется переставлять снова. Помогите пож-та починить загрузку. Изначально проблема обнаружилась в том, что загрузчик поставился вроде не на новый ssd, а на старый. И когда я его вынул, (он был подключён для переноса конфигов и хомяка) система перстала грузиться. Ну я вставил его обратно,загрузился и переставил grub2 как мне казалось правильно. И теперь система никак не грузится вообще. У меня голая консоль root без гуёв. Как правильно поставить загрузчик?

# Установка загрузчика для EFI:
# grub-install --target=x86_64-efi --efi-directory=/boot/EFI --bootloader-id=grub

ругается, что не похоже на раздел efi.

Перемещено hobbit из general

★★★

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

Как 314зданётся опять grub2 - теперь я знаю что попробовать)

А https://wiki.archlinux.org/title/REFInd_(Русский) это какая-то ещё адова сущность, я пока с этими не разобрался, чтобы вникать в неё.

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

Давайте с самого начала.

У вас есть носитель с GPT. Есть раздел EFI, форматированный в FAT32. Установлены пакеты efibootmgr efivar.

В /etc/fstab efi-раздел прописан примерно так:

UUID=$$$$$  /boot/efi vfat  rw,relatime,fmask=0022,dmask=0022  0 2

Желательно, чтобы /boot/efi был пуст, во избежание путаницы

utanho ★★★★★
()
Ответ на: комментарий от utanho
  1. Это я понял. А что дальше?

  2. А сейчас у меня уже настроенная система. И запустить этот загрузчик удалось только после ручного копирования файлов И я хочу понять, почему у меня этого пункта автоматически не появилось?

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

Начнем с того, что раздел efi пуст.

# bootctl install --make-entry-directory=y

эта команда установит загрузчик и создаст папку с machine-id (выглядит как набор цифр)

Затем

# kernel-install add %версия ядро% %путь к ядру%

Как правило, переменные с ядром и путем подставляются через [TAB]

Эта команда копирует ядро в /boot/efi/%machine-id%/%kernel-version% и создает там initrd

П.С. загрузочное меню само сгенерится.

вот и всё

utanho ★★★★★
()
Последнее исправление: utanho (всего исправлений: 2)
Ответ на: комментарий от hikikomori

Это очень классная вещь. Загрузчик, который работает без конфига(самостоятельно находит загрузочные разделы), при этом может находить новые загрузочные разделы при их появлении. Например, если ты вставил загрузочную флешку — то rEFInd покажет её в загрузочном меню. При этом сохраняется возможность добавить новые загрузочные записи через конфиг для сложных случаев.

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

А где посмотреть эти параметры?

Я попробовал пока проверить: sudo kernel-install inspect xxxx, но всё пишет:

Failed to chase path 6.5-x86_64 for kernel image 
file specified via command line, ignoring: No such file or directory

А уж пробовать что-то ставить, чтобы снести опять загрузчик даже и не рискую.

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

sudo kernel-install inspect xxxx

Он не видит ваш 6.5-x86_64

Попробуйте запустить kernal-install inspect без параметров.

Или правильно укажите файл ядра (смотрите как он в /boot назван)

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

Опять слетел груб. Обновил bios. Наверное это как-то задело efi? Что теперь делать? без загрузочной флешки никак не загрузиться? **upd. ** Загрузился чрез загрузочную флешку, не грузя дальше её груба, выбрал там обнаружение uefi загрузчиков. Теперь нужно восстановить груб.

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

Спасибо. Я установил оба загрузчика:

bootctl install --make-entry-directory=y

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=mygrub

Оба работают. Но в bios, при загрузке по F8, задвоились пункт mygrub и grub c прошлой установки. Как удалить лишнее?

Просто удалить лишние папки из:

sudo ls /boot/efi/EFI  
boot  grub  grub2  Linux  Manjaro  systemd

Или это неправильно и нужно использовать какую-то команду?

И ещё, grub2 ругается при попытке выбрать мемтест и какой-то пункт выше про настройку firmware:

error: no suitable videomode found  
error: reboot to firmware setup is not supportedby the current firmware

Как это починить?

И насчёт совета в треде:

 kernel-install add %версия ядро% %путь к ядру%

Я так и не понял откуда мне и какие брать %параметры%. Подскажите пож-та…

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

Как удалить лишнее?

man efibootmgr

kernel-install

Это что-то манжаро-специфичное, не знаю.

Надо понимать, что efi-загрузка состоит из 2х этапов. Сначала грузится grubx64.efi, потом он загружает ядро и initrd.

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

man efibootmgr

Я прочёл ман, но он как всегда больше рождает вопросов, чем даёт ответов, не вполне понял, подскажите решение плиз, боюсь наломать дров.

Пока сделал sudo efibootmgr -D Но лишний каталог остался.

sudo bootctl status Показывает какие есть пункты. А как удалить не понимаю…

sudo efibootmgr -B grub2
You must specify an entry to delete (see the -b option or -L option).

не получается.

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

efibootmgr -b grub2 -B

Это удаляет только запись в efi-загрузке. Ненужные файлы и каталоги надо удалить самому. У меня вообще только 2 файла в /boot/efi: /EFI/$DISTRONAME/grubx64.efi и /EFI/$DISTRONAME/grub.cfg (я не использую secure boot и shim)

Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 3)
Ответ на: комментарий от hikikomori

Я так и не понял откуда мне и какие брать %параметры%. Подскажите пож-та…

Смотрите в /boot какие у вас имеются ядра. Выбираете то, уоторое хотите загрузить и пишете

# kernel-install add %выбранное ядро% %путь к выбранному ядру%

%путь к ядру% - /oot/%ядро%

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

Давайте не будем в этой теме бухтеть про оттенки цвета травы, которая была раньше. Человек запутался в загрузчиках, а не вот это всё

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

Из всех испытанных дистров, только в Росе системд-бут не удалось заставить работать, потому что черезжопие с дракутом и он не может создать корректный инитрам.

Эта штука намного удобнее груба и не плодит сущности.

utanho ★★★★★
()
Ответ на: комментарий от utanho
ls /boot/
efi   initramfs-6.5-x86_64-fallback.img  intel-ucode.img      lost+found  vmlinuz-6.5-x86_64
grub  initramfs-6.5-x86_64.img           linux65-x86_64.kver  memtest86+

Буду считать, предположу, что ядро это не .img файл, а vmlinuz-6.5-x86_64.

Тогда получается так:

kernel-install add vmlinuz-6.5-x86_64 /boot/

Рихтих, штангенциркуль? Ой, нихт, флюгенгехайнен:

kernel-install add vmlinuz-6.5-x86_64 /boot/
File is smaller than DOS magic (got 0 of 2 bytes)
hikikomori ★★★
() автор топика
Ответ на: комментарий от Dimez

Там получается очень тяжелочитаемый raw поток данных, вроде:

Boot0004* grub2	HD(2,GPT,723dbbbd-b741-4b83-afdb-5c6471f69ec2,0x11000,0x96000)/File(\EFI\grub2\grubx64.efi)
      dp: 04 01 2a 00 02 00 00 00 00 10 01 00 00 00 00 00 00 60 09 00 00 00 00 00 bd bb 3d 72 41 b7 83 4b af db 5c 64 71 f6 9e c2 02 02 / 04 04 32 00 5c 00 45 00 46 00 49 00 5c 00 67 00 72 00 75 00 62 00 32 00 5c 00 67 00 72 00 75 00 62 00 78 00 36 00 34 00 2e 00 65 00 66 00 69 00 00 00 / 7f ff 04 00

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

О, теперь я знаю, как удалить лишние пункты. Удалил, понравилось. Но в /boot/efi/EFI/ осталась одноимённая параметру –bootloader-id=grub3 папка. Удалил вообще все пункты и все каталоги в этой папке.

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

Починился через загрузочную флешку:

bootctl install --make-entry-directory=y

Поставил и grub, удалив перед этим /boot/grub.

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub
hikikomori ★★★
() автор топика
Ответ на: комментарий от Dimez

Так не должно быть, ты что-то сделал не так.

но так есть. Я начисто снёс и поставил заново:

bootctl install --make-entry-directory=y
Created "/boot/efi/EFI/systemd".
Created "/boot/efi/EFI/BOOT".
Created "/boot/efi/EFI/Linux".
Copied "/usr/lib/systemd/boot/efi/systemd-bootx64.efi" to "/boot/efi/EFI/systemd/systemd-bootx64.efi".
Copied "/usr/lib/systemd/boot/efi/systemd-bootx64.efi" to "/boot/efi/EFI/BOOT/BOOTX64.EFI".
Created "/boot/efi/445d5d8be1c44c6fb686e282daf905b4".
! Mount point '/boot/efi' which backs the random seed file is world accessible, which is a security hole! !
! Random seed file '/boot/efi/loader/random-seed' is world accessible, which is a security hole! !
Random seed file /boot/efi/loader/random-seed successfully refreshed (32 bytes).
Created EFI boot entry "Linux Boot Manager".

А почему он пишет про security hole?

И зачем создал пустой каталог 445d5d8be1c44c6fb686e282daf905b4?

В обещм всё работает, но всё равно есть:

dp: 04 01 2a 00 02 00 00 00 00 10 01 00 00 00 00 00 00 60 09 00 00 00 00 00 bd bb 3d 72 41 b7 83 4b af db 5c 64 71 f6 9e c2 02 02 / 04 04 46 00 5c 00 45 00 46 00 49 00 5c 00 73 00 79 00 73 00 74 00 65 00 6d 00 64 00 5c 00 73 00 79 00 73 00 74 00 65 00 6d 00 64 00 2d 00 62 00 6f 00 6f 00 74 00 78 00 36 00 34 00 2e 00 65 00 66 00 69 00 00 00 / 7f ff 04 00

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

Это не ОКР, а тяга к знаниям. Я поставил оба, чтобы если сломаю grub или systemd-boot, остался запасной вариант загрузки без ремонта**. Хочу в них разобраться, если ряд*** не закрытых вопросов.

** всё равно, когда грохнул systemd-boot, grub обвалился вместе с ним.

*** хочу изменить тему оформления - шрифты, цвета, картинки. Но что-то не получается.

Поэтому, пока не готов ни выбрать какой-то один, ни перейти на rEFInd, который вообще не знаю.

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

остался запасной вариант загрузки без ремонта

Открываешь uefi shell, грузишь \EFI\grub-backup\grubx64.efi

хочу изменить тему оформления - шрифты, цвета, картинки.

Смысл? Ты загрузчик grub в нормальном варианте вообще не видишь.

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

Права доступа. Fmask и dmask в /etc/fstab. Первая ссылка в гугле.

У меня это https://bbs.archlinux.org/viewtopic.php?id=287790

Не понял то или про другое.

На это права доступа? А что тут не так? Можете по-русски объяснить, я аглицкий не оч.

UUID=C221-BABF                            /boot/efi      vfat    umask=0077 0 2
UUID=b3d8a598-fc31-4483-a0b2-750c534492c9 /boot          ext4    defaults,noatime 0 2
hikikomori ★★★
() автор топика
Ответ на: комментарий от Dimez

Открываешь uefi shell,

Каким образом? Я такое в systemd-boot не видел. Пустой черный экран, одна строка варианта загрузки. Что-то надо нажать надо для выхода в этот шел?

грузишь \EFI\grub-backup\grubx64.efi

это сперва его туда ещё скопировать надо.

Смысл? Ты загрузчик grub в нормальном варианте вообще не видишь.

Почему вы(Ок, переходим на ты, товарищ) так думаете? Я вижу его в убогом текстовом варианте с дефолтным плохо читаемым шрифтом в каком-то графическом режиме. Раньше либо в текстовом режиме показывалось, хорошо читаемое и винрарно выглядящее, либо в графическом с логотипом бомжары, красивым оформлением, эстетичное короче.

Вот я хочу это исправить. Обидно, почему оформление постоянно в говно стремится. раньше на загрузчик приятно было полюбоваться как на эстетический продукт.

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

Я такое в systemd-boot не видел

А это и не system-boot, а uefi shell в твоей материнской плате (которого, кстати, может запросто и не быть, тогда лучше его положить заранее в виде efi-файла)

это сперва его туда ещё скопировать надо.

Ну скопируй.

Я вижу его в убогом текстовом варианте

А я не вижу, у меня сразу ядро грузится, если я не нажал нужную клавишу, зачем смотреть в grub?

Dimez ★★★★★
()