LINUX.ORG.RU

Huawei Matebook, SSD и GRUB

 полтергейст


0

1

Какая-то странная хрень произошла с моим ноутом Huawei Matebook D14. Началось с того, что мне понадобилось вставить предыдущий установленный SSD, чтобы достать кое какие файлы.

Достал актуальный SSD с Арчем (но это видимо не важно, что именно Арч), вставил предыдущий с убунтой (тоже не важно). Включаю ноут, «Boot media not found». Думаю, что за хрень, ведь всё работало, а в настройках Биоса я ничего не менял. Вставляю актуальный SSD - тоже «Boot media not found».

Захожу в Биос. Там очень странно всё показано. На стартовом экране упоминается диск нужного размера. Но если зайти в раздел «boot», то все списки (USB, hdd, PXE) пустые. Ну да ладно, гружусь с установочной флешки Арча. Оба раздела («/» и «boot») монтируются, файлы вроде на месте. Но какого хрена загрузчик не виден? Выполняю efibootmgr, и вижу, что GRUB на SSD там нет. Хотя я точно его устанавливал, и потом предыдущая SSD, ранее грузившаяся, тоже не увиделась, так что Арч тут ни при чём. Запускаю grub-install ещё раз. Ребут. Теперь оно успешно грузится.

Что это такое было? Настройки Биоса не менял. Иногда при загрузке Биоса там какая-то строка появлялась, что оно бэкапит какие-то блобы, но нахрена менять что-то в EFI без спроса…

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

Никаких локов не было, когда я достал оригинальный SSD с виндой и поставил другой SSD с убунтой. Никаких локов не было, когда я установил Арч на третью SSD и грузился с неё. Деменция началась когда я достал третий SSD и вставил второй.

seiken ★★★★★
() автор топика
Ответ на: комментарий от u-235

и теперь ты под колпаком у КГБ

Шутки шутками, а скрывать мне нечего. К тому же, ноут-то китайский от начала и до конца. Так что скорее под колпаком китайцев. Эх, говорила мама учи английский, сынок покупай МакБук. Не послушал.

seiken ★★★★★
() автор топика

Выполняю efibootmgr, и вижу, что GRUB на SSD там нет.

efibootmgr не показывает фацлы на диске, он показывает записи в nvram.

Если у тебя на efi-партиции нет файла по дефолтному пути /efi/boot/bootx64.efi, то прошивка может не искать остальные и удалить загрузочную запись.

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

Я вообще этим конфигурированием EFI не заморачивался раньше (до знакомства с Арчем), потому что просто ставил убунту в с дефолтной разметкой (максимум выбирал LVM+LUKS). Если с Убунтами никогда не было проблем вставить старый ссд и загрузиться с него.

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

Это называется кривой EFI. Во времена BIOS (MBR) загрузчиков в само ПЗУ микросхемы BIOS ничего не записывалось.

Ставилась система, код её загрузчика прописывался в первые 466 байт HDD / SSD, BIOS при старте просто опрашивал загрузочные устройства и пробовал передать управление на код в этих 466 байтах, если там был загрузчик - он вызывался и происходила загрузка.

В случае EFI на накопителях создаётся EFI раздел и в efivars, которые по факту находятся в микросхеме BIOS прописываются ссылки, что для вызова доступны такие-то ФАЙЛЫ загрузчиков на диске с таким-то идентификатором и на файловой системе EFI с таким-то идентификатором и файлы файл EFI загрузчика по пути EFI\UBUNTU\BOOT\GRUB.EFI или EFI\ARCH\BOOT\GRUB.EFI.

Когда ты извлёк диск EFI увидел, что у него нет более ни диска с таким идентификатором, ни файловой системы, ни EFI файлов загрузчиков и снёс всё.

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

\EFI\BOOT\BOOTX64.EFI
kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

которые по факту находятся в микросхеме BIOS прописываются ссылки, что для вызова доступны такие-то ФАЙЛЫ загрузчиков на диске с таким-то идентификатором и на файловой системе EFI с таким-то идентификатором и файлы файл EFI загрузчика по пути EFI\UBUNTU\BOOT\GRUB.EFI или EFI\ARCH\BOOT\GRUB.EFI.

И что? Это не объясняет неспособность загрузится с другого рабочего (грузящегося) SSD.

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

Если fallback пути нет EFI загрузчика - грузиться не с чего, т.к. нет записей в efivars о \efi\arch\boot\grub.efi.

А если fallback загрузчика нет - он нерабочий и негрузящийся.

Читай внимательно документацию по EFI и мои ответы.

Fallback путь ты должен сам обеспечить.

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

При чём тут fallback. Была установлена Убунта на SSD. Создаётся ссылка на загрузчик в EFI разделе. Дальше не важно, какие SSD я меняю, и что устанавливаю, с какого бодуна что-то случается с этой ссылкой?

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

Какая ссылка? FAT32 не поддерживает ссылки.

EFI твоего ноутбука чистит EFI записи для недоступных загрузчиков при каждом включении аппарата.

Для того, чтобы загрузка работала ставь загрузчик пол fallback пути.

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

Чтобы мусора не было

Логично было бы иметь хотя бы место для 3х записей, и переписывать их по принципу циклического буфера.

к производителю твоего ноутбука, материнской платы.

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

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

Ставь загрузчик в fallback путь и проблем не будет.

Логично было бы иметь хотя бы место для 3х записей

Для кого логично? И как определять эти 3 записи? Почему именно 3, а не 2 или 5?

Механика того, что EFI при запуске опрашивает EFI раздел и проверяет fallback имена загрузчиков есть. Это вопрос уже пользователя, кто ставил ОС или разработчика дистрибутива Linux.

Windows, к примеру, свой загрузчик ставит по двум путям, \efi\microsoft\boot\bootmgfw.efi и \efi\boot\bootx64.efi и это правильно.

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

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

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

При чём тут fallback

При том. Прочитай ещё раз, если не понял.

Дальше не важно, какие SSD я меняю

Важно. Диск поменял, пути нет, efi-запись при старте прошивки проверилась, невалидна => удалилась.

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

Важно. Диск поменял, пути нет, efi-запись при старте прошивки проверилась, невалидна => удалилась.

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

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

Сделано это из критерия, что мало кто ssd меняет туда-сюда в ноутбуке :) А хомяки будут недовольны тем, что они что-то не понимают (впрочем, они всегда недовольны).

Dimez ★★★★★
()

Содержимое nvram, даже при том же расположении файлов, теряет актуальность, неактуальные записи могут удаляться прошивкой.

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

Всю тему не читал, но могу подсказать вот что.

Если в меню загрузки есть что-то типа «Run efi-shell from filesystem» или что-то подобное по смыслу, что вызывает браузер для выбора efi-файла, то так можно запустить загрузчик ОС и потом уже из неё переустановить загрузчик.

Если я правильно понял, то максимум, что получается динамически, - это загрузка с USB-носителей, на которых есть «EFI\BOOT\BOOTX64.EFI».

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

Похоже, что BIOS умеет удалять пункты, для которых нет носителей

«Это норма». Huawei Matebook, SSD и GRUB (комментарий)

Хотя так делают далеко не все.

но не умеет самостоятельно сканировать ESP на доступных носителях, чтобы пункты динамически добавлять.

Я, конечно, не все ноутбуки/матплаты щупал, но вроде никто не сканирует самостоятельно, максимум - дефолт /efi/boot/bootx64.efi ищут.

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

Если в меню загрузки есть что-то типа «Run efi-shell from filesystem»

А вот этого как раз почти нигде в хомяковом железе нет. Нашёл где-то в интернете и положил на флешку efi-shell, теперь везде есть :)

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

да, возможно. Также грузится более старая убунта с SSD (но не новая с 24.04, возможно, что-то поменяли там).

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

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

У меня есть несколько МиниПК, на которых стоит AMI BIOS разной степени кастомности. Он строит меню со всеми загрузчиками на одном ESP-разделе.

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

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

Так вот, в меню будут все три пункта.

Естественно. Только эти 3 пункта появились там не из-за самостоятельного сканирования efi-раздела прошивкой, а из-за дёргания efibootmgr или аналога после установки и явного прописывания :)

Dimez ★★★★★
()