LINUX.ORG.RU

ASUS P8P67LE. GPT+MBR disks. Проблемы с загрузкой.

 , , ,


0

1

Здравствуйте.

Дано:
Материнская плата asus P8P67LE.
Диск SSD, размеченный как GPT, с несколькими linux системами.
Диск HDD, размеченный как MBR, c win7.

Как работает:
Оба диска подключены. В BIOS видны EFI опции загрузки с SSD диска, есть возможность выбрать нужную linux систему или rEFInd загрузчик. Linux системы загружаются нормально. Диск с win7 смонтирован, виден.

Как не работает:
Отключаю SSD диск. В BIOS выбираю вариант загрузки с диска с win7. Гружу windows 7. Все выключаю. Опять присоединяю SSD диск. Загружаюсь в BIOS. И вот что происходит: я могу выбрать SSD или HDD диски для загрузки. НО: у меня пропадают все записи о EFI загрузке. Вся информация на самом диске остается, я могу загрузиться через загрузчик live-usb или восстанавливаю записи загрузчиков EFI. Но вот такая проблема вот.

Т.е. отсоединение SSD GPT диска и единократная загрузка с HDD MBR диска приводит к удалению всей информации в BIOS об опциях загрузки EFI.

В BIOS есть параметр PCI ROM PRIORITY со значением Legacy ROM. Если я его меняю, BIOS просто выпадает в черный экран и приходится сбрасывать настройки через джампер. Больше никаких опций связанных с Legacy/UEFI в BIOS нет.

Т.е. отсоединение SSD GPT диска и единократная загрузка с HDD MBR диска приводит к удалению всей информации в BIOS об опциях загрузки EFI.

А почему ты считаешь, что должно быть по другому? Для этого на дисках и создается esp раздел.

И научись задавать вопросы. Что ты хочешь, я так и не понял.

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

Почитай внимательнее. Залогинься, если предъявляешь притензии. Можешь помочь? Нужно что-то дополнительно объяснить в вопросе?

А почему ты считаешь, что должно быть по другому? Для этого на дисках и создается esp раздел.

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

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

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

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

Наоборот. ESP цел, а прошивка удаляет «лишние» переменные при каждой загрузке.

Слышал, что можно положить в esp по стандартному пути efi-файл, или скрипт, который восстановит переменные. Это по хорошему. А по плохому-установить загрузчик по стандартному пути.

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

Наоборот. ESP цел, а прошивка удаляет «лишние» переменные при каждой загрузке.

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

Слышал, что можно положить в esp по стандартному пути efi-файл, или скрипт, который восстановит переменные. Это по хорошему. А по плохому-установить загрузчик по стандартному пути.

Я вроде ничего не шаманил уникального. ESP раздел смонтирован в линух как /boot/efi. Там все по обычным путям (сейчас нет под рукой девайса, но ничего уникального. Насколько помню: /boot/efi/EFI:
./BOOT
./Manjaro
./Debian
./rEFInd
И в папках ничего уникального не мутил.

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

ну а потом, при каждой такой загрузке в-жесткую прописывать в BIOS новые переменные через .sh скрипт и какой-нить efibootmgr - что-то мне страшновато...
Скажите, я правильно Вас понял, что моя проблема не уникальна и Вы встречались с ней? Я просто хочу разобраться в этом всем. Мне не прям нужна винда сейчас. Если совсем нужна будет, ну грузанусь я потом с флехи, выберу нужный загрузчик и пропишу переменную EFI загрузки BIOS через efibootmgr обратно (для конкретной системы или для rEFInd-а). Меня просто бесит, что что-то происходит, а я не понимаю почему...

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

Это особенность реализации EFI в твоей материнской плате. Установи любой EFI загрузчик по стандартному пути, для 64 битного efi - /EFI/Boot/bootx64.efi, тогда даже если пропадут пункты других EFI загрузчиков, то по стандартному пути вы всегда сможешь вызвать твой.

А уже в него пропиши вызов остальных.

Ну либо переставляй Linux не EFI, а в Legacy режиме.

Можешь ещё написать производителю материнской платы.

Ну и вопрос, зачем ты отключаешь ssd диск?

Вообще, на мой взгляд это даже правильное поведение BIOS / EFI.

С его точки зрения ты подключал съёмный накопитель с EFI загрузчиком, например флешку и отключил его, вот он и почистил варианты загрузки. Зачем в списке пунктов загрузки нужны записи со съёмных накопителей, например флешек?

Тут такое же поведение с SSD.

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

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

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

Вот я так хотел тоже попробовать. Но отложил до вечера, т.к. опасаюсь, что опять все слетит и придется ковыряться.

Ну либо переставляй Linux не EFI, а в Legacy режиме.

не, я же писал, мне винда не очень нужна (совсем не нужна). я просто разобраться хочу. В Legacy Linux наверное ставить не буду.

Установи любой EFI загрузчик по стандартному пути, для 64 битного efi - /EFI/Boot/bootx64.efi

Понимаете в чем дело, он там...ЕСТЬ.

А уже в него пропиши вызов остальных.

А вот это надо погуглить. Я не редактировал .efi никогда.

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

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

efi-программа должна лежать по пути {esp}\EFI\Boot\Bootx64.efi, тогда UEFI будет видеть его всегда.

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

Если /EFI/Boot/bootx64.efi есть, то запись к нему генерируется автоматически при каждой загрузке. Имя берется от имени устройства.

Те ручные операции по восстановлению можно автоматизировать в линуксе, запихнуть в initrd, который запихнуть в ядро, и положить efi файл по тому пути. Или для самого uefi с версии 2, вроде, можно писать скрипты. startup.nsh

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

Если /EFI/Boot/bootx64.efi есть, то запись к нему генерируется автоматически при каждой загрузке. Имя берется от имени устройства.

Вот тогда и странно - почему у меня не происходит загрузка. Как вариант, попробовать туда установить refind, чтобы он грузил. Ладно, спасибо. Подумаю, поищу. Наверное действительно для начала попробую просто выполнить все еще раз без отключения винтов. Если будет работать и не будет сносить записи EFI при выборе разных дисков для загрузки, то мне особо больше ничего и не надо.

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

efi-программа должна лежать по пути {esp}\EFI\Boot\Bootx64.efi, тогда UEFI будет видеть его всегда.

да, она там есть. и тем не менее, загрузки не происходит. Хотя вот что там в .conf файлах для этой программы, я не смотрел. Гляну. Или попробую заменить ее на загрузчик rEFInd, установив его в /BOOT/ как загрузчик по-умолчанию.

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

Не читал обсуждение, но совет: Раз ваше железо поддерживает совместиморсть с биос, то включите его, создайте /boot раздел на разметке MBR/dos, запишите и настройте туда grub 0.97 и грузите всё с него! Если вам надо просто загрузиться, то он лучший. Его конфиг осваивается за час и пишется за минуту, и венду он грузит как родную. А для надёжности можно вообще не давать модным и молодёжным скриптам из дистрибутивов к нему доступ, а все новые ядра и initrd переносить на /boot и прописывать руками. Это не сложно, зато очень надёжно.

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