LINUX.ORG.RU

GRUB2 в системе с несколькими дисками и определение того из них, с которого стартовал GRUB2

 


0

1

Я использую Linux на нескольких системах и часть из них имеет более 1-2 дисков плюс часто подключаю внешние. При этом в связи с распространением UEFI в последние годы приходится переходить с любимого мною extlinux/syslinux на GRUB2 , и вот тут сразу выявилась серьёзная проблема. При загрузке с одного из дисков GRUB2 залезает на другой диск, где тоже стоит GRUB2 и загружает «чужой» файл конфигурации.

Проблема вызвана тем, что GRUB2 после загрузки core.img не ищет grub.cfg на диске, с которого загрузился, а начинает перебирать все диски в системе пока не найдёт файл конфигурации в соответствии с префиксом и грузит именно этот - первый попавшийся ему grub.cfg. На мой взгляд, логика исключительно нелепая и опасная. Не понимаю, почему это ещё не пофиксили. Неужели с такими проблемами сталкиваются лишь единицы?

Никакого принципиального решения в сети мне найти так и не удалось. Пришлось временно выбрать такой вариант: там, где ещё можно откатиться на MBR/BIOS/syslinux, а где невозможно - генерировать core.img через grub2-mkimage, указывая индивидуальный префикс для каждого диска (типа /hdd007/boot).

Так есть ли хоть какая-то возможность окончательно решить эту проблему или хотя бы посредством внедрённого в core.img файла конфигурации выяснить, с какого диска стартовал GRUB2 и установить root, например, как (тот-диск-с-которого-началась-загрузка,раздел-X)?

Почему вообще GRUB2 ведёт себя так странно? Почему он автоматически не ищет файл конфигурации начиная с диска, с которого и загрузился, как syslinux? Это было бы невероятно удобно!



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

Т.е. выбрать один диск в каждой системе как главный и, установив GRUB только на него в дефолтный /boot, загружаться исключительно начиная с него? Нет. Мне приходится переставлять диски между системами. При этом и возникают описанные проблемы.

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

По крайней мере в debian информация о загрузочном разделе прописана в самом grubx64.efi. Посмотри с помощью strings. UUID раздела при перестановке диска в другой комп не изменяется.

Radjah ★★★★★
()

Почему
в связи с распространением UEFI в последние годы

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

В Fedora 25, CentOS 7 и нескольких деривативах Debian (MX, Antix) файл загрузчика генерируется без внедрённого UUID (по крайней мере в выдаче strings его нет. «Чистым» Дебианом я дома не пользуюсь (это же серверная ОС), хотя не исключено, конечно, что там эту проблему как-то решили.

ИМХО, это просто ужасно, что grub теперь везде свой и привязан к конкретной системе. И концепция единственного глобального загрузчика мне тоже откровенно претит.

AoooZ
() автор топика

наверно Fuse, но на всех-всех дисках нужно будет настройки менять, так не пойдёт, таким образом нет. (Ну, это как в треде про, казалось-бы тривиальное:su и sudo, а даже местные четырёх- пятизвёздные так называемые гуру, спотыкнулись: никто не упомянул «дистрозависимость»!). А в вопросе по fuse будет скорее «не во всех fs так настроишь (!).

anonymous
()

Fedora 26 и Debian 9.2 тоже не интегрируют конфиг с поиском по UUID в загрузчик. Более того, в загрузчике Debian 9.2 даже «search.fs_uuid» не встречается ни разу! Установка обоих систем была специально произведена в «стерильных» условиях на виртуалках, при дефолтных настройках.

Итак, по крайней мере несколько важных современных дистрибутивов Linux устанавливают загрузчик GRUB2 (grubx64.efi на GPT/UEFI/x86_64-efi и core.img на MBR/BIOS/i386-pc) таким образом, что это может вызвать описанные в начале темы проблемы.

AoooZ
() автор топика

GRUB2 это мозговыносящая хрень, но давайте подумаем.

GRUB2 при установке генерирует EFI-приложение, которое потом при загрузке ищет нужные конфиги на нужных разделах.

Значит надо правильно нарисовать EFI-приложение.

Генерируется оно через grub-mkimage: https://wiki.archlinux.org/index.php/GRUB/Tips_and_tricks#Manual_configuratio...

Отсюда видно, что этому приложению нужно просто нарисовать нормальный конфиг, который будет правильно выбирать раздел. Как правильно выбирать раздел можно подсмотреть в «нормальном» конфиге: search --no-floppy --fs-uuid --set=root UUID

У самого проверить возможности нет, но попробуйте покопать в эту сторону (предварительно забэкапив старое ЕФИ-приложение).

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