LINUX.ORG.RU

Паника GRUB при отсутствии раздела

 ,


0

1

Приветствую! На ПК стоит win10 на ssd и debian 13 на hdd в корзине. Проблема в том, что если hdd отключен, то grub выдаёт командную строку вместо меню. Можно ли отучить grub впадать в панику? Или придётся переходить на виндовое меню?

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

grub надо поставить на диск с debian и загружать систему с него

Вариант, но какой-то корявенький. Например если есть несколько hdd с разными линуксами, то он не сработает.

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

Если бы GRUB стоял там, то проблемы не было бы. А так, у тебя на диске второй EFI (ESP) раздел. Первый создан виндой. Вот и загрузись в Linux, смонтируй первый в /boot/efi и сделай sudo grub install --target=x86_64-efi --efi-directory=/boot/efi/EFI --boot-directory=/boot. При этом сам GRUB в виде grubx64.efi установится на первый ESP, а его модули, файлы локализации и файлы настроек уедут на извлекаемый диск. Вот поэтому и возникает ситуация, как у тебя. Если у тебя ESP на SSD достаточного размера, сделай его по совместительству /boot.

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

ESP раздел содержит только сам загрузчик. Конфигурация от него находится в /boot, а он лежит на HDD.

И если хочется по-хорошему, то на диске HDD надо выделить маленький раздел, отформатировать его в ФС, которую понимает GRUB (ext4 или fat32 подойдут) и монтировать его в /boot.

Либо, как предлагают выше, положить GRUB на ESP раздел.

Либо, как предлагаю я, забить и использовать меню EFI.

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

Если бы GRUB стоял там, то проблемы не было бы.

Спасибо! Вроде понял. А не подскажите, велика вероятность что 100мб раздела на ssd не хватит для переноса в него grub-а по этой схеме? Это можно как-то оценить заранее?

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

Маловато, но можно уместить, при желании. Многие, если не все, по умолчанию ставят все файлы переводов и модули, да еще и несколько разных ядер, но первые два вовсе не обязательно ставить все, это можно настраивать параметрами grub-install : --modules= и --locales=. А, и да, ещë можно --themes=. Подробнее в grub-install(8).

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

Размечать правильно нужно было.

Отключи физически HDD, чтобы не запутаться, грузись с Live CD, чтобы удалить на SSD запись EFI для GRUB (утилита efibootmgr). После подключи HDD, отключи SSD, и снова с Live CD грузись. Цепляй HDD и на него нормально GRUB устанавливай. Далее собирай железо в одно целое и загрузи Linux с HDD. Затем выполни os-probe, чтобы удостовериться, что GRUB найдёт Windows на другом диске. Возможно, перед этим придётся что-то поправить в конфигах /etc/grub.d/. Далее, grub-mkconfig -o /boot/grub/grub.cfg.
Так ты установишь GRUB на HDD. При физичесчком отключении HDD можно будет загружать Windows с SSD и GRUB останется за кадром. А с HDD можно будет загрузить как Linux, так и Windows.

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

На ssd у тебя efi раздел, в котором лежит efi файл grub, с минимальным конфигом, в котором только лишь прописано, что основной конфиг нужно загрузить с файловой системы на разделе hdd диска, на hdd диске так же находятся и остальные файлы теоретически нужные груб, а именно шрифты, изображения, часть модулей для доступа к другим ФС.

Установи grub целиком на efi раздел, либо руками перенеси нужное и поправь конфиги, но при установке нового ядра в последнем случае будут проблемы.

Поэтому либо переустанавливай целиком груб на efi раздел, либо на ssd создавай отдельный раздел только для груб.

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

ESP раздела то хватит, не такой grub жирный. Но, есть поблема, что grub-install создаёт stage1 grub, в MBR или efi-файле. Но узнать о том, где stage1 будет искать конфиг и пр. файлы штатно нельзя. Соотвественно, есть вероятность проблем при обновлених системы.

update-grub, вызываемый при обновлении ядра, скорее всего будет создавать конфиг в /boot/grub/. И grub-install, вызываемый при обновлении пакета grub2, установит груб так, как он стоит сейчас. Вроде, update-grub настраивается, а обновления пакет grub, возможно, проще заблокировать.

Или, можно на ESP-раздел положить рукописный grub.cfg, который при наличи hdd грузит grub.cfg с него, а иначе содежит толькоо один пункт меню — загрузка виндового efi-файла.

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

можно на ESP-раздел положить рукописный grub.cfg…

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

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

А трусы тоже через голову надеваешь? Нахера учтанавливать GRUB где-то там, чтобы требовать его здесь? И ещё пять звёзд. Его нет на SSD, он не нужен для Windows, но зачем-то его огрызок grubx64.efi оказался на SSD. Нет, некоторым недоумкам этого мало, давай костыли городить, файлы переносить. Мозга себе в жопу перенесите, если ей думаете.

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

Если голова на месте задницы, то так и происходит.

зачем-то его огрызок grubx64.efi оказался на SSD…

Потому что так его установили. Нужно было устанавливать без загрузчика.

не нужен для Windows…

Он нужен автору вопроса, нужен на ESP. А где у него ESP, он сам толком не знает.

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

Он всё предельно точно описал. Ну не знает человек, как устанавливать, как разметку диска делать. Решил на дополнительный диск установить. Куда система предложила установить загрузчик (/dev/sda), туда он и установил. Он это сделал за отсутствием знаний. Ты же предлагаешь даже нужно продолжить тянуть трусы поверх шубы через голову, ибо без трусов нельзя. И кто из вас больше идиот?

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

а весь груб.

Я и писал, что груб влезет на ESP. Но дальше возникнут сложности.

обновления не будут его трогать

Что значит обновления не будут его трогать? Обновление grub его просто перезапишет. Может в каких дистрах настраивается где /boot/grub и т.д., но большинство дистров просто grub-install и будет снова исходная конфигурация. Stage1 на активном efi-разделе, а остальное в /boot.

А обновление ядра сложит ядро в /boot, сложит туда же новый grub.cfg, а потом ещё может удалить старое ядро. grub с его старым конфигом не заденет, но система не загрузится без ядра.

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

grub нужен на ssd, чтобы одно boot-меню было, чтобы не нужно было сначла в efi выбирать что загружать, а потом в grub выбирать какое ядро загрузить. Чтобы можно было простым скриптом задавать, что загружать в следующий раз, не ковыряя efi-vars.

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

Обновление grub его просто перезапишет.

Нет. Обновление перезапишет то, что установлено. О скопированном оно даже не знает, оно банально в другом каталоге. А если ESP не монтировать, то не перезапишет вообще. Поэтому и устанавливать лучше без загрузчика, чтобы даже и не пыталось перезаписать.

Может в каких дистрах настраивается где /boot/grub…

В графических инсталляторах нет. Поэтому и попадают в ловушку. И когда через chroot устанавливают, попадают в ловушку. А если вручную grub-install, то можно установить, не «размазав по разным разделам-дискам».

Ну а ядро не затрагиваем вообще.

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

А если ESP не монтировать

Тогда получите: grub-install:error:/boot/efi does't look like an EFI partition при обновлении. И, возможно, сбой всего обновления (не проверял).

оно банально в другом каталоге.

В каком другом каталоге? Обновление запишет новый /EFI/BOOT/Debian/grubx64.efi и ещё его в nvram пропишет.

устанавливать лучше без загрузчика

Устанавливать без загрузчика и не устанавливать загрузчик при инсталяции — это разные вещи. Если установить debian без grub, то потом grub-install не запустить, его не будет в системе.

вручную grub-install

ядро не затрагиваем вообще

Это ссать против пакетного менеджера. Самому обновлять груб, самому прописывать новые ядра в конфиге груб. Если ТС в состоянии это делать, наверное, он бы эту тему не создавал. А так, получится, что когда что в загрузке системы сломается, он даже не будет понимать, почему советуемые интернетом grub-install и update-grub не чинят его систему.

И не против всяких перечисленых в этот топике советов, но ТС должен быть проинфоримрован, где что у него перестанет работать и какие дополнительные действия делать, кроме ″apt-get update″

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

я же предлагаю установить первым в списке загрузки HDD и на нём GRUB, который найдёт Windows на втором диске. В итоге загрузка без HDD будет без GRUB, EFI пропустит его как не валидный. Когда будет подключен HDD, запустится GRUB и даст выбор Linux или Windows. Даже если отключить SSD, оставив только HDD, при выборе Windows он сообщит, что диска нет и загрузит Linux. И никаких проблем. Тут же толпа набежала и такую бредятину городят, что впору поленом по рукам лечить.

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

Есть прошивки UEFI, которые удаляют boot-записи для не существующих efi-файлов. На такой диск отключил и всё, при его подключении он не будет первым. Даже, если grub-install --removable, то всё равно в BIOS(setup) нужно будет НЖМД выбирать после подключения. Так что надо смотреть, что с железом у ТС'а.

А, если ТС не сделал ESP на НЖМД, то ему тоже возни много будет для реализации вашей схемы — подрезать раздел, чтобы место выделить или вобще переустанавливать, неизвестно что для ТС проще будет.

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

каком другом каталоге? Обновление запишет новый /EFI/BOOT/Debian/grubx64.efi…

Точно, не в этом. Пусть система балуется.

Если установить debian без grub, то потом grub-install не запустить, его не будет в системе.

Если первый раз, то из «живой системы» вруную запустить grub-install, можно даже во время установки. А грубЕФИ устанавливается простым копированием файлов. А если до того на ESP уже существовал груб, то он никуда не денется. Более того, можно им и установку линукса запускать, и установку винды.

И супротив пакетного менеджера ничего, он делает своё дело. Прописывать ядра в конфиге, это проблема. Когда линукс ещё был маленький, в корне были симлинки на последнее ядро, чтобы не править конфиг каждый раз. Раз-уж конфиг самодельный, то можно в нём так и сделать. Это один из вариантов.

почему советуемые интернетом grub-install и update-grub не чинят его систему.

Потому что бездумное размахивание топором не чинит…

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

Пусть система балуется.

Система и будет баловатся. Если при обновлении чего-нибудь будет запущен grub-install, то он поставится в /EFI/BOOT/Debian/grubx64.efi и пропишет себя первым в очерёдность загрузки. И ТС нужно знать, что ему груб нужно устанавливать с bootloader-id отличным от debian, и в случае чего выставлять его на первое место через efibootmgr.

А если до того на ESP уже существовал груб, то он никуда не денется.

Но не только лишь все смогут прописать для него boot entry в uefi shell (команда bcfg), если его запись почему-то из nvRAM будет стёрта.

А грубЕФИ устанавливается простым копированием файлов.

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

Это один из вариантов.

А другой вариант — чтобы груб брал конфиг с НЖМД из /boot, куда его update-grub сложит, если конфг доступен. А третий вариант — сделать, чтобы в /boot/grub/efi монтировался ESP с НЖМД, чтобы при обновлении системы туда ставился grub, а из grub на SSD загружать grub с НЖМД. И можно ещё что-нибудь придумать, только ТС, скорее всего, это мало поможет, у него, возможно, уже голова опухла. Ему бы конкретный howto со списком команд...

mky ★★★★★
()

Нормальные разборки. :)

Переустановка grub не прокатила. Смонтировал ESP через mount /dev/nvme0n1p1 /boot/efi (хотя похоже он уже был туда смонтирован), grub-install написал что всё норм, в /boot/efi (точнее в /boot/efi/EFI) появились папки с загрузчиками (хотя вот странно, до операции в ней, т.е. в ESP, была только папка «System Volume Information» вроде - это нормально?), но для выни по прежнему командная строка grub, а линукс попробовать не успел, возможно он отпал уже :).

В общем я понял что надо курить мануал груб и арч вики.

Подскажите только правильно ли я понимаю что делать установку надо было так:

  1. При установке винды вручную сделать раздел ESP мегов на 300 хотя бы.
  2. При установке debian выбрать экспертный режим, пропустить установку grub, и в конце установки поставить grub вручную через sudo mount /dev/nvme0n1p1 /boot и sudo grub install --target=x86_64-efi --efi-directory=/boot/efi --boot-directory=/boot.

Верно?

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

можно просто в EFI прописать второй загрузчик (с Демьяном), у меня так на рабочем буке было сделано, попадала в boot menu при нажатии кнопки и там мог выбрать один из двух efi boot загрузчиков - вендовый или grub, носителя два было

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

Не трогай винду! И нафига тебе в дебри GRUB лезть, когда нужно всего лишь!!! установить его на диск, где Debian установлен. Это делается одной командой grub-install /dev/sda --bootloader-id="Linux" sda заменить на название диска, как его видит система, без указания раздела. Когда будет подключен SSD запустить генерацию конфигурационного файла GRUB. Толпа, блядь, идиотов! Лопатой по башке таких лечить. Самое прикольное, такие долбаёбы есть в любом деле. Машину новую купят и лезут тюнинг делать. Инженеры идиоты, ты умнее? На желтом форуме пчеловоды со стажем рекомендуют гнездо среди зимы разобрать и поправить. Убил бы, блядь, таких людей за советы! Gentoo не стал использовать, писаки ебилдов начали хуйню городить как поняли. Носом натыкал, как авторы программы конфиги описали, как в FreeBSD реализовано. Нихуя, у них своё, особое. Это не от здорового рассудка.

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

  2. ‘пропустить установку grub’ - да. ‘–efi-directory=/boot/efi –boot-directory=/boot’ - нет.

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

Более безопасный вариант. Копируешь на ESP все файлы «независимого загрузчика». Проверяешь его работу. После этого можно начинать бороться с уничтожением загрузчика, устанавливаемого системой. В качестве запасного парашюта, флешка с загрузчиком, которым ты можешь загрузить любую систему, с любого диска.

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

grub-install —force –recheck –no-floppy –root-directory=/media/XXX /dev/sda, где XXX - ваш новый раздел.force добавил для игнорирования ФС.

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

Неправильно.

Первое. В теме речь о ЕФИ, а это для легаси.

Дальше, по памяти не скажу, а вникать, разбираться сейчас не охота.

Когда мне нужно установить груб, в ‘user menu’ Midnight commander выбираю пункт и устанавливаю.

andytux ★★★★★
()