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
  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 ★★★★★
()