LINUX.ORG.RU

что не так с Grub?

 , ,


0

1

вчера пол-дня потратил на установку Debian-buster и всё из-за Grub...
сначала нажал установить Grub на первый же диск. Их было 3, поэтому поставил не туда... НО он работал и загружался!

Переставил Debian, выбрал ставить вручную, поставил - не грузит. Тупо «error, нельзя загрузить, Grub rescue».
Пробовал раза 3 так и сяк - всё одно.
А ещё, какого-то хера, из биоса пропадают HDD/SSD из загрузочных... Их было 3, а после установки чё-то уже один
(я конечно выставил ему нужный диск (каждый попробовал), но это не помогло)

Разметку диска при этом делал сам Debian на автомате, так что дело не в разметке.

В итоге плюнул, отключил 2 диска, оставил 1, и сделал «поставить сразу на первый» - это единственный способ, когда всё заработало...

Отсюда вопрос: как таки делать вручную правильно?
Раньше как-то не было такой проблемы, ставил же, а тут что случилось?



Последнее исправление: tip78 (всего исправлений: 2)

bios может только первое устройство включать для загрузки, из-за этого grub не может видеть загрузчик и ядро на других дисках, т.к. они еще выключены на этом этапе

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

/boot/ тоже надо раздел на доступный диск делать
grub надо на /dev/sdX, не /dev/sdXX
если нет uefi и диск gpt нужен еще специальный раздел с флагом bios_grub
а для uefi нужен раздел efi

doc0
()
Последнее исправление: doc0 (всего исправлений: 6)

Grub пытается ставится туда, куда ему скажут. Никакой самодеятельностью он не занимается.

Разметку диска при этом делал сам Debian на автомате, так что дело не в разметке.

Это тоже далеко не факт. Если у тебя материнка не поддерживает uefi, а Debian автоматически разбил диск с gpt, а не mbr таблицей и вдобавок не создал дополнительный bios boot раздел в 2 мегабайта, начиная с 2048 сектора, то grub из-за отсутствия такого раздела просто не поставится и сообщит о причине.

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

В случае gpt таблицы метку «загрузочный» разве что ставить не нужно на раздел bios boot.

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

+1

/boot должен быть примонтирован перед установкой grub на устройство.

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

Это тоже далеко не факт.

ну в итоге то взлетел именно такой вариант - оставил один диск и дал дебиану всё сделать...

а разметка GPT была, да

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

Так всё равно проблема в том, что ему установщик debian укажет.

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

grem ★★★★★
()

Пробовал раза 3 так и сяк

А нужно было до установки хорошенько подумать, что, куда, как хочешь установить. А начинать думать с того, БИОС или УЕФИ.

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

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

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

ребят, вы хоть раскрывайте мысль, а то ж только запутаннее становится…

что если BIOS, что если UEFI ? И где это конкретно смотреть надо?

как это «весь груб на одном диске и не зависит от системы»??

он вне системы? НАД ней?

как это через дебиан провернуть или вручную?

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

BIOS, что если UEFI ? И где это конкретно смотреть надо?

Это ты должен раскрыть, в первую очередь самому себе. Я могу только гадать. Например, если твоему компьютеру меньше десяти лет, то наверняка в нем УЕФИ. А у него как минимум два режима: ЕФИ и легаси. Как минимум они используют совершенно разные загрузчики, соответственно: грубЕФИ и грубПС.

весь груб на одном диске и не зависит от системы»?

Возьмем один конкретный вариант. Стандартная установка в режиме ЕФИ с одним диском.

Головная часть загрузчика находится на ESP-разделе. Там простенький конфиг из трех строк, указывающий, где искать весь остальной загрузчик. Основная часть (более двухсот файлов) находится на системном разделе, здесь же основной конфиг. Система автоматически меняет этот конфиг. Если удалишь системный раздел, то загрузчик не будет работать. Т.е, как минимум он «размазан» по двум разделам и зависит от системы.

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

комп вчерашний, свежекупленный, UEFI там есть
Debian, когда делал разбивку, то просто создал 3 раздела:
1mb FREE
1mb biosgrub (fdisk показывает тип BIOS boot, 2048 секторов)
999.2gb ext4 /
1gb swap swap
728.6 kb FREE

из ваших слов я понял, что по-современному правильно делать EFI (UEFI)...
но это я, в принципе, и так знал. Я пытался разобраться в тонкостях дебиановского груба, и как там всё сделать правильно (на крайняк исправить).

Вот когда всё встало криво и не заводится, есть вариант с дистрибутивной флешки пульнуть что-то типа fdisk и самому наколдовать загрузчик?

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

Ещё важно, grub поддерживает только bios, для uefi надо ставить grub2. В debian они вроде оба есть и доступны для установки.

Khnazile ★★★★★
()
Ответ на: комментарий от tip78
  1. Идешь в настройки материнки и выбираешь режим загрузки - UEFI. Не Legacy, не UEFI+Legacy, а только UEFI, только хардкор.
  2. Любым удобным тебе способом размечаешь диск в GPT (не в MBR). Например через Gparted в Live-режиме.
  3. При установке Debian выбираешь ручную разметку и создаешь EFI-раздел, он же ESP. Куда он монтируется в Debian я не знаю. Может в /boot/efi, может еще куда-то. По хорошему счету, он может монтироваться куда угодно хоть в /boot, хоть в /boot/efi, хоть в /efi и все будет работать. Но у тебя же Debian, поэтому сам виноват смотри куда он предложит смонтировать, туда и монтируй.
  4. Ну и естественно, проследи чтобы загрузчик стоял на том же диске, что и ОС.

По сути, этого достаточно. Никаких дополнительных разделов делать не нужно. Для нормальной работы Linux нужен только EFI и корень. Остальное исключительно по желанию.

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

спасибо
а разметка - имеется ввиду СНАРУЖИ Debian как-то заранее разбить?
внутри запрещено разбивать?

в корне Debian есть /boot/grub, хотя загрузчик конечно же не там...

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

когда делал разбивку, то просто создал 3 раздела

На мой вкус, это самый глупейший вариант. Судя по разделу «biosgrub», на диске таблица разделов GPT. А система устанавливается в режиме легаси. Не знаю, как там модно в Дебиане, я уже много лет пользуюсь свап-файлом, вместо свап-раздела.

самому наколдовать загрузчик?

Колдовать надо раньше. Тебе нужно разбираться в тонкостях твоего конкретного УЕФИ.

Все должно быть в одном режиме: УЕФИ, загрузчики, системы.

На мой вкус. ЕФИ-режим. Таблица разделов - ms-dos. Первый раздел - 100мб FAT32, ESP-раздел. Второй раздел - 50гб ext4, корень системы. Здесь-же свап-файл, его можно создать в любое время и любого размера. Третий раздел - все оставшееся, «файлопомойка». Пара тем, где рассмотрено много мелких вопросов.

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

СНАРУЖИ Debian как-то заранее разбить?

Да, сначала готовим диск потом ставим ОС.

есть /boot/grub, хотя загрузчик конечно же не там

Нет, не там. Я не знаю где он в Debian. По идее должен быть в /boot/efi

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

ЕФИ-режим. Таблица разделов - ms-dos.

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

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

мне вот тоже непонятно, как Linux с MS-dos + Fat32 соседствует... и зачем?
очевидно там винда намечается, но у меня нет.

При установке Debian выбираешь ручную разметку и создаешь EFI-раздел, он же ESP.

как-то не сходится с:

Да, сначала готовим диск потом ставим ОС.

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

Жесткий диск имеет таблицу разделов. Их два вида - MBR (для BIOS) она же MS-DOS. И GPT (для UEFI) она же GUID. Это не сами разделы, это просто схема разметки.

Ты очишаешь кхерам жесткий диск и создаешь на нем нужную схему разметки. Дальше уже создаешь разделы.

Вот я тебе и пишу, загрузись в лайве, создай на диске схему GPT, а уже при установке создашь раздел EFI, где и будет лежать твой загрузчик. Этот раздел должен быть с файловой системой FAT32. Так надо. Вообще не заморачивайся по этому поводу, установщик сам форматнет.

P.S. Можно скрестить ужа с ежом, как тут чуть выше писали, и заставить работать UEFI с MBR, но не надо так делать.

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

ну ясно, просто разделы же в fdisk тоже можно создать (я графическим gparted не пользуюсь)
там есть тип раздела EFI...
и схема GPT/MBR там есть

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

Да пофик чем ты создашь. Главное чтоб диск был GPT, в настройках материнки стоял UEFI, а установщик знал какой раздел ему использовать как EFI.

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

grubboot раздел не нужен для gpt+uefi+efi, он для gpt+bios+grub
В настройках uefi некоторых можно выбирать один только диск на котором ищется efi.
Нужный диск может не успеть включиться в режиме быстрой загрузки и начать грузиться не с того диска бестр.загрузку лучше отключить на время

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

как Linux с MS-dos + Fat32 соседствует… и зачем? очевидно там винда намечается

Весьма распространенное заблуждение. Как раз только у Виндовс есть бзик, что в ЕФИ-режиме она устанавливается только на диск с таблицей разделов GPT. Линуксу до лампочки. FAT32 - это единственное обязательное условия для ESP-раздела. Почему «ms-dos». Все гениальное просто. Самая простая и универсальная. Диск меньше 2тб. Если захочется туда установить еще и грубПС, то не придется создавать лишний раздел, как был у тебя.

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

с gpt можно вкомпилить настройку root=PARTUUID= в ядро, а потом задать разделу тот же uuid. с по-моему mbr поменять uuid раздела не выйдет

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

Повторяю. Самый стандартный раздел, с файловой системой FAT32. Все остальное несущественно. Флаги - тоже требование данного конкретного УЕФИ. Мне попадался только один такой. На всех остальных работало без всяких флагов. Планшет, с которого пишу: «ms-dos», fat32, никаких флагов.

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

ОК, подытожим:
в BIOS загрузочному диску ставится UEFI (безо всяких Legacy)
в fdisk, если нажать на справку (m), вверху должен быть белыми буквами заголовок GPT, а не DOS (MBR)
никаких boot-флагов ставить НЕ нужно (они ставятся как раз в MBR-режиме)
в FDISK создаётся (n) раздел 200 mb с типом (t) EFI System
доп.разделы (Linux filesystem): / (50gb), /usr (остатки, все файлы там)
SWAP-раздел НЕ нужен (юзаем SWAP-файл)
фиксируем изменения (w)

файловую систему создавать НЕ нужно (как mke2fs для ext4)
при установке Debian загрузочным делаем созданный раздел EFI

с шифрованным LVM своя эпопея, особенно в Ubuntu (в Debian проще)

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

Ты сам себя-то не запутал. Почему-бы не называть вещи своими именами.

BIOS загрузочному диску ставится UEFI

Никаких БИОС. УЕФИ. Не загрузочному диску, а режим, в котором будет работать УЕФИ.

boot-флагов ставить НЕ нужно (они ставятся как раз в MBR-режиме)

Заблуждение. В MBR-режиме как раз флагов меньше (boot). В GPT-режиме больше (boot,esp). В большинстве случаев они не нужны. Только некоторые конкретные УЕФИ могут потребовать флаги. Здесь нужно смотреть, как поведет себя конкретно твой УЕФИ.

FDISK создаётся (n) раздел 200 mb с типом (t) EFI System

Тип обычный, единственное условие - FAT32. Просто для справки. Виндовс по умолчанию создает размером 100мб, убунту 400мб. Если там будут только ЕФИ-загрузчики, то 100мб хватит на десяток. Если планируешь помещать ядра, то и 500мб может оказаться маловато.

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

не «BIOS», а "в BIOS"
не запутал я ничего. Диск (физический), с которого будет грузиться система. Ему в BIOS выставляется UEFI (а где ещё то??)

boot-флаг в fdisk есть только у MBR

если таки нужен FAT32, то значит надо сделать: mkfs.vfat -F 32 -n EFI-SP /dev/sda1 (EFI-раздел)
и тип у него не «обычный», а EFI (какой ещё «обычный тип», их там 87 штук типов)

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

нету в gpt таких флагов. это gparted так по-дурацки отображает тип раздела. зато есть флаг legacy boot, который не нужен в efi режиме, а только для обычного биоса

anonymous
()
Ответ на: комментарий от tip78
Disk /dev/mmcblk0: 118,6 GiB, 127305515008 bytes, 248643584 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb5c83b26

Device         Boot    Start       End   Sectors   Size Id Type
/dev/mmcblk0p1          2048    206847    204800   100M  b W95 FAT32
/dev/mmcblk0p2        206848  32974847  32768000  15,6G 83 Linux
/dev/mmcblk0p3      32974848 248643583 215668736 102,9G 83 Linux
andytux ★★★★★
()
Ответ на: комментарий от andytux

вооот
ты всё таки разбиваешь в режиме MBR с dos
вот там есть такие типы разделов (b W95 FAT32 и 83 Linux, в GPT у Linux Filesystem другой id, а FAT32 вообще нет)
и есть dos (Тип метки диска)
и у тебя весь диск в режиме DOS разбит...
а вот я так не хочу, у меня есть опыт нормальной работы в GPT-режиме

т.е. тут получается одни пишут про GPT, а другие про MBR ))
а это разные подходы

tip78
() автор топика
Ответ на: комментарий от tip78
Disk /dev/nvme0n1: 238,49 GiB, 256060514304 bytes, 500118192 sectors
Disk model: SK hynix BC511 HFM256GDJTNI-82A0A       
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: B28C4215-0497-D64D-AE75-B4D6EC4C0E10

Device             Start       End   Sectors  Size Type
/dev/nvme0n1p1      2048    585727    583680  285M EFI System
/dev/nvme0n1p2    585728  59181055  58595328   28G Linux filesystem
/dev/nvme0n1p3  59181056 117776383  58595328   28G Linux filesystem
/dev/nvme0n1p4 117776384 430276607 312500224  149G Linux filesystem
/dev/nvme0n1p5 430276608 500117503  69840896 33,3G Linux filesystem
tip78
() автор топика
Ответ на: комментарий от tip78

т.е. тут получается одни пишут про GPT, а другие про MBR )) а это разные подходы

Подход одинаковый (fat32 раздел, тебе же пишут), просто разметка разная.

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

да не просто.
отсутствует EFI, microsoft shit повсюду разбросан, появляется «флаг загрузки»
А ещё когда заимеете диск 3+ Тб, то внезапно окажется, что его можно полностью «увидеть» только через GPT, ибо у dos максималка 2.

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

отсутствует EFI

Где отсутствует?

microsoft shit повсюду разбросан

Загляни в хедер любого efi-файла

появляется «флаг загрузки»

Флаг загрузки нужен, если в mbr нет загрузчика.

А ещё когда заимеете диск 3+ Тб,

Вопросы решаются по мере их поступления.

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

Я и говорю, запутал себя и продолжаешь запутывать. Начать с того, что у тебя УЕФИ. Никаких БИОС на твоем компьютере нет.

диск 3+ Тб, то внезапно окажется

Внезапно для тебя. Почти единственный случай, когда необходима GPT - диск больше 2 тб (второй - Виндовс в ЕФИ-режиме).

отсутствует EFI…

Если на разделе файловая система FAT32, этого достаточно, чтобы УЕФИ считал его ESP-разделом. Флаги, тип раздела и тип таблицы разделов не существенны.

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

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

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

Двойное заблуждение.

Во-первых. Тащить ядро на ESP-раздел весьма сомнительная выгода. Во-вторых. И здесь нет никакой необходимости в GPT. В-третьих и далее - лень перечислять.

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

Тащить ядро на ESP-раздел

всё равно придётся тащить туда загрузчик, все заморочки что ты придумаешь к нему тоже применимы

нет никакой необходимости

зато есть плюсы, которых при dos разметке нет

лень перечислять

скорее нечего, ты и так за соломинки хватаешься

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

достаточно загрузиться в систему

Иногда с этим проблемы и надо починить систему/загрузить старое ядро/передать необходимый параметр. Efistub в этом плане хренов.

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

всё равно придётся тащить туда загрузчик

Загрузчик обновляется раз в пятилетку, ядро - раз в неделю, разница существенна.

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