LINUX.ORG.RU

Dual boot восстановление загрузчика

 , , ,


0

1

Помогите, уважаемые, ибо у меня грабли лапки. Имелся себе ноут с оффтопиком 10, на который второй системой был установлен Arch. Разметка диска gpt и имеет следующие разделы:

/dev/sda1 EFI
/dev/sda2 Win
/dev/sda3 Win data
...
/dev/sda6 Swap
/dev/sda7 Linux

Все это благополучно жило и работало, до определенного момента, когда после перезагрузки пропали все пункты меню кроме оффтопика. Ну пропали и пропали, делов-то накатить grub. Загрузился с флешки, mount, arch-chroot, grub-install … и

this GPT partition label contains no BIOS Boot Partition

Подумав про себя, что возможно я в беспамятстве использовал UEFI, но в /boot директорию efi не обнаружил, что меня и поставило в тупик.

Пните в нужном направлении.


this GPT partition label contains no BIOS Boot Partition

Большой диск (более 2.2Tb), размеченный в GPT, но с которого грузится Linux в Legacy режиме, должен содержать «Bios boot» партицию. Почему она у тебя превратилась в EFI - вопрос.

Подумав про себя, что возможно я в беспамятстве использовал UEFI

Лучше бы использовал UEFI.

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

после перезагрузки пропали все пункты меню кроме оффтопика

Windows любит писать везде, где только может, и ESP — не исключение. Оно просто затёрло всё кроме себя, зачем ей конкуренты? (%

Я уже не помню как заставить винду перестать это делать (и можно ли ещё это сделать).

no BIOS Boot Partition

На этом наши полномочия как бы всё, кончились.

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

Почему она у тебя превратилась в EFI - вопрос.

Загрузчик Windows постарался.

Лучше бы использовал UEFI.

Венда найдёт способ нагадить. (%

Но да, в любом случае это решается проще, чем каждый раз grub-install из лайва.

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

Лучше бы использовал UEFI.

Я было попробовал, но тоже безуспешно. Смонтировал /dev/sda1 (которая EFI) в /boot/efi, но при установке grub-install ругается на efivars, efibootmgr установлен, при запуске так же ругается на efivars

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

должен содержать «Bios boot» партицию. Почему она у тебя превратилась в EFI - вопрос.

Обращу внимание, что у него там был оффтоп, а дуалбут он сделал позже, про переустановку оффтопа ничего не указано. Следовательно, sda1 скорее всего тоже создан оффтопом. В какой роли он был тогда и в какой сейчас, я уж гадать не буду, но вряд ли оффтоп хоть когда-то его создавал для grub-а.

firkax ★★★★★
()

Короче.
Сначала подумай, что тебе надо восстановить, винду - или линукс. В том смысле, какой вариант тебя больше устраивает.

Под винду - есть отличная штука - testdisk. Лично меня - очень выручила, когда чисто случайно грохнул таблицу разделов.

https://habr.com/ru/articles/78579/

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

Окей. Но вообще это сразу нужно было сделать. Мы ж откуда знаем, какая у тебя схема загрузки?

И тогда уже заодно lsblk -f

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от pavel_l

Оффтоп не делает EFI партицию при Legacy загрузке. Ты что-то либо сделал и не говоришь (например, сбросил настройки биоса и теперь у тебя Legacy загрузка + ты сделал восстановление винды + ещё что-то), либо одно из двух.

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

Ну ты же примонтировал efivars?

Во-о-о-о-т, это еще один камень предкновения и моего непонимания, в /sys/firmware/, что на liveUSB, что в системе отсутсвует директория efi, так что монтировать нечего.

P.S. венду не восстанавливал, биос … проверю

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

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

Ну просто: писал на ассемблере загрузчик для двух win95: Русской и Японской, на двух разделах одного винта. Перехватывая аппаратное прерывание 16h. И, при нажатии клавиши 1 или 2 - менял разделы местами, чтобы винда думала, что она «первая» грузится.

И, блин, умудрился весь код - упендюрить в два сектора, по 512 байт! Как, блин? Теперь можно даже не спрашивать, сам удивляюсь. =)

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

Тогда - надо загрузиться с live-флешки арча, примонтировать раздел, и восстановить. Ну честно - не знаю как там в арче. В минт проще. примонтировал в /mnt и

sudo grub-install --root-directory=/mnt /dev/sda

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

Так а что проверять, если в винде, во-первых, вроде недавно обновились ключи и подписи secure boot, и во-вторых, венда еще и шифрует ESP без спросу, а в-третьих, Arch не имеет поддержки secure boot ни в установщике, ни в установленной системе, еë нужно делать самостоятельно, а как – описано в вики дистрибутива.

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

Какие ключи и подписи обновились, если у 10-ки поддержка в прошлом году закончилась? Если она шифрует esp, как до этого дуалбут работал?

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

Да не, у него скорей всего винда дефолтный загрузчик переписала в efivars. Зайти в сетап ноута и выбрать другой пункт

no-dashi-v2 ★★★★
()

Итак, что я имею на данный момент. После комментария @Dimez я проверил BIOS и да, я грузился в legacy. Поменял настройки на UEFI но Arch так и не появился в меню. После чего я переустановил grub с UEFI на этот раз все прошло отлично. Перегрузка, выбираю новый GRUB и … в меню единственная запись «UEFI Firmware setting» )) Штош, идем смотреть, что там за конфиг grub на генерировал. Да в /boot/grub/grub.cfg и находим единственный menuentry. И какого фига спрашивается??

В bios сейчас 3 Boot option:

windows
\EFI\Microsoft\Boot\bootmgfw.efi

Linux
\EFI\Systemd\systemd-bootx64.efi

grub (новый)
\EFI\grub\grub64.efi
pavel_l
() автор топика
Ответ на: комментарий от firkax

Не факт, прошивка ведь по своему желанию не добавляет в NVRAM новые записи. Чтобы загрузить Arch в EFI-режиме, нужно, чтобы загрузчик или ядро (UKI) был (было) по пути по умолчанию (/boot/EFI/BOOT/BOOTx64.EFI). Но если путь по умолчанию не используется, то нужно добавлять вариант загрузки (boot option) в NVRAM. Например, если используется GRUB:

# grub-install --target=x86_64-efi --boot-directory=/boot/grub --efi-directory=/boot/EFI
# grub-mkconfig -o /boot/grub/grub.cfg
# efibootmgr -c -L "arch" -l /boot/EFI/arch/grubx64.efi

Для systemd-boot:

# bootctl --esp-path=/boot/EFI --boot-path=/boot install

Вот только в этом случае, если /boot/EFI/BOOT/BOOTx64.EFI существует, он будет перезаписан, и, если там был Windows Boot Manager (который себя пишет еще и в \EFI\Microsoft\Boot), то потом винда может перезаписать его ещё раз.

Для ознакомления ТСу предлагается прочесть:

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

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

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

Да, проблема в конфиге grub команда

grub-mkconfig -o /boot/grub/grub.cfg

создает конфиг с единственной menuentry (как писал выше) осталось разобраться почему так происходит, видимо что-то я не совсем правильно делаю. Ну и как «план Б» попробовать systemd-boot по ковырять

—— дополнение ——

Есть мысль, что я неверно указываю –boot-directory и –efi-directory я монтирую esp раздел /dev/sda1 с созданной офтопиком EFI в /boot/efi/ и указываю его как efi-direcory все же правильно?

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

--boot-directory должен указывать на /boot, а --efi-directory – на ESP, у меня это один и тот же раздел, смонтированный в /boot. Но так делать вовсе не обязательно. То есть, если у вас ESP – /dev/sda1, смонтированный в /boot/efi, то на этапе установки GRUB команда должна выглядеть так: grub-install --target=x86_64-efi --boot-directory=/boot --efi-directory=/boot/efi. И установите os-prober, он должен найти все ОС и добавить их в меню GRUB при генерации конфига.

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

os-prober установлен, надо посмотреть нет ли на него запрета в /etc/default/grub

Спасибо за подсказки проверю все ещё раз внимательно

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

Все ближе к решению ))

Посмотрел, действительно os-prober был закомментирован в /etc/default/grub за одно попробовал запустить его вручную, найдена только винда на /dev/sda1 и всё, arch`а нет. Что же с ним произошло такое?

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

ты можешь попробовать грузиться в арч непосредственно из UEFI меню загрузки, обычно F8 или F12 при включении, я так на рабочем буке грузил Демьяна со 2 диска, чтобы не портить 1 где должна была быть копропротивная венда и грузиться по умолчанию. я ставил груб на 2 диск, но на само деле при UEFI он не обязателен, просто мне так удобнее было.

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

не большой, а вообще любой, размеченный в GPT, но с которого грузятся через GRUB в Legacy режиме.

ибо иначе негде core.img хранить. кстати можно его засунуть с 34 по 2047 сектора.

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

Он закоментирован по умолчанию, это у многих так. Арч не показывается, потому что os-prober, похоже, не там ищет. Что могло измениться? Покажите fdisk -l и lsblk --fs, чтобы не путаться в разделах.

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

оффтоп просто затёр не свои записи в таблице

Сколько юзаю ни разу никакое обновление не перезаписывало ESP.

Шифрование включается только при установке, если оно не было вкючено или было отключено в новой установке, то автоматом не включиться.

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

оставлю тогда тут эту ссылку, пмсм там всё разжёвано донельзя, может кому пригодится, нужное в конце:

https://www.gnu.org/software/grub/manual/grub/html_node/BIOS-installation.html

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

На столе передо мной стоит десктоп с чистым БИОС-ом. Но, например, Интел с 2020 года удалил в своих устройствах легаси-режим. За ним потянулись все остальные. Два других моих устройства - только ЕФИ. Там у меня MBR-разметка, есть грубПС, но хоть ты тресни, загрузить можно только в ЕФИ-режиме.

andytux ★★★★★
()

Отчет:

Воде пометил тему, как решенную, но так и не отписался. После установки GRUB и нескольких попыток изменения его конфига … обнулил ESP )) По этому сначала восстановил загрузчик венды, переустановил GRUB и в конце концов удалось загрузтся в арче, но столкнулся с проблемой, что sddm не принимал пароль. После внимательного гугления решил обновить систему. Ну и в конце концов все заработало (кроме systemd-boot, изначально был установлен именно он). По всей видимости во время предыдущего обновления, что-то пошло не по плану.

Спасибо всем, кто направлял меня в попытках все починить, мне это удалось, ну и бонусом я теперь знаю чуть больше о UEFI

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

Знаешь, но только чуть, на уровне «почти ничего».

В копилку. ГрубЕФИ устанавливается простым копированием файлов. Не нужны ни чруты, ни груб-инсталы, ни ефиварсы. А конфиг, у тебя-же есть бэкап?..

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

Знаешь, но только чуть, на уровне «почти ничего».

Кто бы спорил

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

Как я понял всё efi так устанавливается

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

Я уже не помню как заставить винду перестать это делать (и можно ли ещё это сделать).

Народ рекомендует ставить Линукс на второй диск, а не вместе с виндой на одном.

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

И не факт, что это винда ломает.

Я этого никогда и не говорил, эта версия была высказана в процессе обсуждения, так же не мной

Насчёт мелкомягкого не уверен.

Так же

pavel_l
() автор топика
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария