LINUX.ORG.RU

Нужен всеядный grubx64.efi для загрузки разных ISO c hdd/ssd

 , , ,


0

1

Была у меня связка BIOS Legacy + Grub2, всё работало отлично, пока я не купил новый комп с поддержкой только UEFI. Теперь с загрузчика Mint мне удалось загрузить только SystemRescue, Gparted, Kaspersky, ну и Ventoy на флешке через файл ventoy_grub.cfg, который Ventoy позволяет свой собственный конфиг, через него удалось загрузить Mint-22.1.

Также загрузчик Mint не даёт поменять имя первого пункта. Есть ли возможность всё восстановить? Первым делом добиваюсь MX-Linux.


Ответ на: комментарий от mky

Имя то у этого загрузчика есть?

grubx64.efi -> grub2, оно же в заголовке указано, не ленимся читать.

В туда Mint заново ставили или старый накопитель подоткнули?

Старый то не подоткнёшь UEFI белиберду предназначенную для BIOS не увидит.

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

rufus на жёсткий диск поставить? Через DD? Выделить каждому ISO-шнику под диску по паре гиг? Ну так не интересно, хотелось бы папку с файлами.

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

Придётся отключать Secure Boot

Сразу это сделал. С ним вообще бы кроме установленного ничего не запустилось.

можно поставить обычный grub-efi

то есть свою конфигурацию собрать? Ок попробую.

А готовой командной строки нет? И чтобы материнку не окирпичить.

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

Можно не шить grub в материнку. Положить grub на диск командой grub-install.

Подробнее здесь: Немного про UEFI и GRUB

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

Да он и не шьётся в материнку. в NVRAM добавляется только имя и путь к файлу, причём grubx64.efi можно подменить другим. Грубо говоря если я через MX-Linux используя инструмент UEFI_менеджер добавил запись в NVRAM, то моя задача сформировать нормальный grubx64.efi, который не будет говорить что не видит ядро, не видит iso и т.д.

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

Старый то не подоткнёшь

Многие диски очень давно с GPT-таблицей разделов, или, по крайней мере с пустым местом, там где должна быть GPT. То есть можно просто добавить в конец ESP-радел, установить на него grub.

не ленимся читать.

Но понятнее не стало.

если я через MX-Linux используя инструмент UEFI_менеджер добавил запись в NVRAM,

Вы устанавливали Linux Mint или вручную копировали grubx64.efi?

Mint не даёт поменять имя первого пункта.

Что, не даёт вручную отредактировать grub.cfg? Или, как в случае с png, вы их на одну ФС, а grub читает с другой?

который не будет говорить что не видит ядро, не видит iso и т.д.

Если вам нужны какие-то модули grub, которых нет в Linux-Mint, то и напишите, какие модули нужны. Зачему нужно чтобы эти модули были включены в grubx64.efi непонятно, тем более, если secure boot не требуется. Grub загружает свои модули из каталога. Главное, чтобы в grubx64.efi был указан раздел с его конфигом, чтобы он его при старте находил. И это происходит при grub-install.

А если вам ещё и конфиг хочется в файл grubx64.efi засунуть, ну курите grub-mkimage... И я тут ещё раз повторю, что внутри grubx64.efi засунут путь к каталогу grub, где его конфиг и файлы, допустим ″(,gpt3)/grub″. Если вы просто откуда-то скопируете grubx64.efi, то там может быть другой раздел и grub будет искать свои файлы в другом месте, чем вы ожидаете.

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

Нельзя просто менять grubx64.efi, он читает конфиг, и если там есть команды insmod, пытается грузить модули из файлов. А они могут быть от другой версии grub. И, либо у grub есть проверка версии модуля и он не загрузит модули, либо загрузит не то.

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

Вы устанавливали Linux Mint или вручную копировали grubx64.efi?

Установил Mint, всё что ему нужно он сам добавил (папку Ubuntu на EFI раздел) и создал там grubx64.efi, как не знаю, копировал ли или компилировал ли. Я лишь лицезрел его существование.

grubx64.efi я копировал для эксеприментальных целей в другую папку и добавил его в NVRAM, он появился в меню, что видно из видео и дальше я пробовал готовый grubx64.efi с других образов, ведь они собраны с разными модулями и могут по разному работать, если нет модуля поддержки gpt, то он не увидит раздел и не найдёт на них iso. Отсутствие jpg может не дать возможности использовать темы оформления и т.д.

можно просто добавить в конец ESP-радел, установить на него grub.

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

Главное, чтобы в grubx64.efi был указан раздел с его конфигом, чтобы он его при старте находил.

В Mint рядом с grubx64.efi лежит конфиг, в ктором прописан поиск UUID и установка его как root. Но при этом не понятно, подхватывает ли модули. Ну если всё так красочно в теории, то почему образы то не загружаются?

Что, не даёт вручную отредактировать grub.cfg?

Не дать то он не может, конечно он молча файлом лежит. Но когда я винду поставил первым в списке, он даже загрузил винду, но при этом пункт был «Линукс тыдым тыдым», то есть оригинальным. Ну это же не красиво смотрится, загружаю я комп первым в списке линус, а загружается винда, никому бы такое не зашло. Я вернул его 3-им пунктом, в конфиг прописал дефолтный 2, пересобрал конфиг, чтобы он прописал в grub.cfg и после обновления всё осталось также и теперь да, запускается винда по дефолту, если включил комп и пошёл по делам, прихожу винда загружена и я не стоял перед ним 10 секунд чтобы сдвинут курсор в меню Grub`а.

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

А они могут быть от другой версии grub

И вот тут у меня была идея, как делают на флешках, на том же разделе кладут модули и всё что в папке boot, кроме ядер. Я так сделал, разложил файлики. Я ему эти файлики уже как только не подкладывал, чтобы он спотыкался и падал об них, но он умудряется продолжать писать что чего-то там не видит.

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

Я ему эти файлики уже как только не подкладывал,

Вы для начала попробуйте, может там будет выведено, где он ищет конфиг и модули:

strings grubx64.efi | grep -A 2 '/grub'

Но, лучше начать с начала. Исходно, на старой системе как всё работало? Там же не так просто подменить, файлика нет, там core.img в секторах после MBR лежит.

пересобрал конфиг, чтобы он прописал в grub.cfg

Вы, либо вручную редактируете grub.cfg и там что угодно, либо пользуетесь grub-mkconfig и тогда жрите что дают.

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

Вы, либо вручную редактируете grub.cfg и там что угодно, либо пользуетесь grub-mkconfig и тогда жрите что дают.

Я могу и так и так. Естественно grub.cfg собирал grub-mkconfig, но то что он собрать не может, например классы, он мне суёт –class ubuntu, я заменяю на –class mint и т.д. И время от времени делаю копии grub.cfg, чтобы не терять наработки. Потом в Meld то легко сравнить.

тогда жрите что дают

вы сейчас помочь хотите или оскорбить?

где он ищет конфиг и модули

попробую, я сейчас в винде, но выглядит интересно, я и сам хотел бы уметь декодировать загрузчик, раньше в g4d можно было прям в бинарнике увидеть меню и команды. По крайней мере при загрузке grubx64.efi он выкидывает несколько строку, что не может что-то найти, прочитать не успеваю… хотя можно было заснять и покадрово посмотреть, но было не так важно если он всё же подхватывал grub.cfg.

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

«Кушать подано, садитесь жрать, пожалуйста» :)

Оскорблять желания нет, но обсуждать ограничения grub-mkconfig тоже не хочется. Меня просто злит, что в системе полно файлов, у которых в начале указание «auto-generated DO NOT EDIT», а наоборот нельзя. Нельзя в grub.conf или других файлах в начале прописать, что «DO NOT AUTO-GENERATE».

декодировать загрузчик

Да, вот, к сожалению, нет скрипта, разбирающего grubx64.efi. Не понять, в каком-нибудь grubx64.efi от касперски какие модули есть и есть среди них сторонние модули. Был «bootinfoscript.sh», но ЕМНИП, только core.img (MBR-grub) умел разбирать.

И дальше вылазит засада, что grub.cfg не совсем переносимые с одной системы на другую, так как один grubx64.efi содержит нужные модули, а другой grubx64.efi не содержит, а insmod всех нужных модулей в grub.cfg часто не пишут.

он всё же подхватывал grub.cfg.

Вроде, grub в том числе, ищет grub.cfg в том каталоге, где grubx64.efi лежит. Может, если в дистрибутиве grub поставить не в /boot/grub, то grubx64.efi, сложенный в EFI/Load/, будет там и grub.cfg искать, так как не найдёт дистрибутивный grub.cfg.

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

Вот тебе первый вариант. Загрузчик на флешке (любая загрузочная флешка, в частности - Ventoy), этим загрузчиком можно загрузить всё, нужен только конфиг.

Любой ЕФИ-загрузчик устанавливается простым копированием файлов. Здесь про это и все остальные варианты.

andytux ★★★★★
()