LINUX.ORG.RU

Не понимаю принципы работы EFI

 , ,


1

1

В продолжение этой темы.
Это какая-то особая уличная магия. История следующая:
1. Было два диска с mbr. На одном debian, на втором офтопик седьмой версии. Диск с debian'ом грузился первым grub мог делать перестановку дисков и загрузку винды.
2. Купил диск на 1Тб. Решил перенести систему на него и, заодно, переехать с mbr на efi т.к. легаси режим в биосе очень долго загружался. Поставил начисто debian с grub-efi перенес все конфиги и файлы. Работало все нормально, кроме загрузки винды, которую нужно было проводить переключением на легаси режим в биосе каждый раз. Но она мне была нужна эпизодически, поэтому отложил.
3. Сегодня решил переставить эту винду на efi, чтобы все было без шаманств. Для этого физически отключил диск с debian'ом, чтобы ее инсталятор не натворил там делов. Поставил. Подключаю дебиановский диск обратно и обнаруживаю, что он не грузится никак. Даже если физически откючить виндовый диск.
Как это вообще возможно? Может быть в этом UEFI есть какое-то место, где винда затерла метки efi-томов, или secureboot включился без моего ведома? Как это лечить?
P.S. Здесь могло бы быть много разных слов, но правила запрещают.

★★★

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

Т.е. винда при установке залезла в NVRAM и стерла там все, что ей не понравилось?
А как это можно восстановить?

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

Возможно, да.

У меня вот BIOS удаляет все записи, для которых нету файла загрузчика. Т.е. вынул диск — и нужно восстанавливать.

Короче, берешь любой лайв с линуксом, делаешь chroot в свой дебиан и восстанавливаешь загрузчик (update-grub, grub2-install, или что там еще)

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

Короче, берешь любой лайв с линуксом, делаешь chroot в свой дебиан и восстанавливаешь загрузчик (update-grub, grub2-install, или что там еще)

Спасибо. Буду пробовать.
Как же я ненавижу этот UEFI, даже кушать не могу.

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

Что-то явно не так, либо семёрка как-то сильно извращается с efi. Я не разбирался в теме, у меня самого всё просто работало (причём, прекрасно. Был дуалбут ляликса и восьмёрки) и продолжает работать (уже один ляликс, вообще без загрузчика). Правда, держалось всё на одном диске. MBR/BIOS'овый кошмар с перезаписывающими друг друга загрузчиками остался в прошлом, и я счастлив.

с mbr на efi

Это как? С MBR - это таблица разделов, EFI - ну это как BIOS, но EFI :)
EFI-раздел создавался же? Если оттуда ничего не выпиливалось - то всё и должно работать.
Я так понимаю, у тебя два диска - один целиком под дебиан, другой целиком под виндой?

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

На самом деле ты просто не умеешь его готовить. Тебе не следовало вытаскивать диск с Debian при установке винды. UEFI увидел, что загрузчик пропал и забыл про него (UEFI хранит список установленных загрузчиков, позволяя изменять их приоритеты загрузки).

В отличии от установки под BIOS при установке под UEFI винда (8-ая версия точно, 7-ая почти наверняка) не портит загрузчик Linux. Можно ставить системы в любом порядке и при этом не потребуется восстанавливать GRUB. Единственное, что винда сделает - поставит свой загрузчик приоритетнее GRUB (впрочем, GRUB делает при установке так же), но это решается простым изменением приоритетов загрузки в настройках UEFI без всяких LiveCD.

У UEFI есть недостатки (Secure Boot, избыток свистелок и ориентация на мышь), но конкретно работа с загрузчиками у него реально удобнее, чем в BIOS.

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

Старое, ещё прошлого тысячелетия правило — сперва ставится Windows, потом — всё остальное.

И то, у меня без всякого UEFI не так давно при обычном обновлении автоапдейтом Win8, перестала грузиться Ubuntu :) Т.е. вообще grub был снесён. Пришлось восстанавливать.

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

Это как? С MBR - это таблица разделов, EFI - ну это как BIOS, но EFI :)

Не совсем верно написал. Имелось ввиду с mbr на gpt и с легаси BIOS на UEFI.

MBR/BIOS'овый кошмар с перезаписывающими друг друга загрузчиками

Не было там никакого кошмара. Было пусть и идиотское, но предсказуемое поведение. А его поменяли на такое же идиотское, но в котором нужно разбираться заново. Зачем меняли?
А по теме, дело действительно в том, что винда устроила зачистку в NVRAM. И это ничем не лучше перезаписывающих друг друга загрузчиков.

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

сперва ставится Windows, потом — всё остальное

С нормальным UEFI и при Windows 8 - правило изжило себя.

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

Всё-таки смущает меня такое обоснование... 40 раз переставлял то линуксы, то винду (8), то и то, и другое - всё работало, и ни про какую NVRAM вообще слышать не приходилось... Странно.

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

На самом деле ты просто не умеешь его готовить.

Конечно не умею. mbr умел, а тут оп и правила поменялись на диаметрально противоположные. Как это готовить - не знаю. Рецептов нигде нет.

В отличии от установки под BIOS при установке под UEFI винда (8-ая версия точно, 7-ая почти наверняка) не портит загрузчик Linux.

Так кто же это знает заранее?

Можно ставить системы в любом порядке и при этом не потребуется восстанавливать GRUB.

Как ни странно, но именно этим я сейчас и буду заниматься.

У UEFI есть недостатки

Я не знаю, можно ли это считать недостатком UEFI, но у меня в текущей ситуации не запустился slax с флешки. Т.е. я теперь вынужден еще и диск нарезать.

Это реально, минное поле какое-то, а не «реально удобнее, чем в BIOS».

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

Старое, ещё прошлого тысячелетия правило — сперва ставится Windows, потом — всё остальное.

Старое правило, еще с прошлого десятилетия гласит: не давай винде лазить по другим дискам. Сегодня для меня оно оказалось неподходящим.

И то, у меня без всякого UEFI не так давно при обычном обновлении автоапдейтом Win8, перестала грузиться Ubuntu

Не нравятся мне эти рассказы. На одном диске жили?

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

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

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

Зачем нужно было отключать винт с дебианом? Какой-то пережиток биосов, когда загрузчик затирал старый загрузчик? И то, в этом случае ничего не стерлось бы, т.к винты разные. Про NVRAM выше написали. Вообщем, сам виноват (ц)

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

Да, я всё на одном держал... Эх, портят мне такие треды веру в идеальность UEFI -_-

evilmanul
()

Лучше киньте в меня каким-нибудь how-to по запуску системы с диска в chroot liveCD, а то я ничего найти не могу.

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

Вообщем, сам виноват (ц)

Получение этого бесценного знания и было целью этой темы!
Спасибо тебе, о мудрейший!

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

Вкратце: настройки загрузки хранятся теперь в UEFI, в nvram. Чтобы добавить туда запись, система (linux) должна быть загружена в EFI mode, иначе нет доступа к nvram. Для загрузки со съемных носителей в этом режиме используется специальная структура директорий на таком носителе, благодаря чему UEFI видит их без внесения изменений в nvram, просто составляя список таких устройств во время опроса оборудования (если, конечно, там ФС типа FAT или iso9660). Если директория EFI отсутствует на носителе, или там нечитаемая ФС, то загрузка с такого носителя возможна только в legacy mode.

Есть еще один вариант загрузки: EFI shell. В нем можно зайти на загрузочный раздел диска gpt и передать управление напрямую загрузчику. В вашем случае, поскольку debian с grub-efi уже был установлен, такой раздел должен существовать, и загрузчик grub.efi там должен быть. Таким образом, можно загрузиться в grub-efi вручную, а дальше загрузка пойдет как обычно.

Kiborg ★★★
()

Было то же самое. Ты же переставлял венду поверх дебиана, верно? Если метка диска в gpt, то хоть отключай, хоть не отключай - результат будет один. Если сделать разметку диска в mbr, и грузиться в режиме uefi+legacy, то такого не будет. Получается гибридный тип диска.

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

См. выше, livecd не обязательно, а если все же загрузка с него, то можно попробовать прям в загрузчике этого live-cd указать ядро и initrd от debian, не загружаясь в live систему. Если livecd поддерживает EFI mode, после этого надо в загруженном линуксе выполнить update-grub или update-bootloader.

Почему не стоит загружаться в live: в образе может отсутствовать модуль ядра для работы с nvram.

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

Есть еще один вариант загрузки: EFI shell. В нем можно зайти на загрузочный раздел диска gpt и передать управление напрямую загрузчику.

Не видит gpt раздел диска в принципе. Говорит, что ничего не найдено.

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

На одном диске жили?

Да.

...

Теперь, вот, подумываю, не порыться ли на тему UEFI, раз, как говорят, Windows смирилась :) Останавливает, что не знаю, можно ли перевести Win8/MBR/BIOS на использование UEFI без переустановки :) Ubuntu-то в паре с ней переустановить не страшно, если что. А вот Windows заколебусь восстанавливать, если переставить.

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

Теперь, вот, подумываю, не порыться ли на тему UEFI

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

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

Так кто же это знает заранее?

А кто знает заранее, что винда перезапишет MBR? Разумеется, это требует опыта. Либо чужого (спросить на форуме), либо своего (попробовать).

Как ни странно, но именно этим я сейчас и буду заниматься.

Потому что надо было идти по самому тупому пути и не вытаскивать диски, а тупо поставить Windows и Linux. Все проблемы мы создаём себе сами.

Я не знаю, можно ли это считать недостатком UEFI, но у меня в текущей ситуации не запустился slax с флешки. Т.е. я теперь вынужден еще и диск нарезать.

Опять же, это не проблема UEFI, а кривых рук. Если дистрибутив поддерживает нормально UEFI (это как минимум Debian, Ubuntu, Arch и Fedora, если авторы других дистрибутивов игнорируют UEFI, то их пользователи само собой будут страдать, без этого никак), то достаточно скопировать содержимое установочного диска на флешку, либо в случае гибридного образа сделать dd. Ах да, во многих случаях можно просто скопировать все файлы с диска на флешку отформатированную в FAT с помощью обычного файлового менеджера. Никакой установки загрузчиков и прочего. Разве это не упрощение?

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

Это реально, минное поле какое-то, а не «реально удобнее, чем в BIOS».

По такой логике можно при переходе с винды на Linux начать критиковать последний, потому что там панелька не так выглядит и можно rm -rf / сделать.

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

Раньше чтобы сделать установочную флешку нужно было думать об установке на неё загрузчика (с появлением гибридных ISO проблема на Linux решена, а вот виндузятники до сих пор страдают, потому что у них нет гибридных образов, линуксоиды, которым нужно сделать загрузочную флешку из-под винды страдают тоже, потому что dd из коробки там тоже нет). Сейчас достаточно скопировать все файлы с диска (дистрибутив должен поддерживать UEFI) файловым менеджером.

Это объективное упрощение. То что применение опыта работы с BIOS к UEFI создаёт проблемы - просто ты ССЗБ.

И да, специально для тех, кому нужны не актуальные ОС, либо кто не хочет изучать новое - оставили режим совместимости.

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

У меня сейчас нет efi shell под рукой нигде. Можно примерное содержимое экрана?

GPT - это не раздел, это формат таблицы разделов диска. Чтобы диск был загрузочным для EFI, нужно чтобы на нем был хотя бы один раздел FAT со специальным флагом boot_efi или как там его. В gparted из livecd можно посмотреть, есть ли такой раздел, и что на нем лежит. Должно быть что-то вроде /EFI/debian/grub.efi + может еще какие файлы.

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

Я перенес windows 7 с mbr на gpt + с legacy на EFI. Вкратце: можно, но требует нереальной возни, шаманства в реестре из-под recovery на предмет порядка дисков, ковыряния в BCD (это кусок реестра, который подцепляется еще загрузчиком). Короче: лишний раз убедился, что проще переставить. Впрочем, та винда до сих пор работает.

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

Хорошо. Я дурак, ты умный.
Скажи мне, уважаемый, где документация по UEFI, где мануалы, где FAQи, где истории успеха в бложиках, где все это?
Я четыре месяца искал это и так и не нашел. Вот у товарища w1nner в мае была похожая проблема. Что изменилось за это время с твоим любимым uefi? Да ничего. Один шлак поменяли на другой, а всю практическую базу на помойку выкинули. Ура товарищи! Теперь можно мышкой повозюкать в биосе!

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

У меня сейчас нет efi shell под рукой нигде. Можно примерное содержимое экрана?

Долго думает, потом рисует окошко со списком:
В заголовке Waring!
В списке одна строка Not Found
Вот и все, собственно
При запуске gparted выдает окно:
Libparted Bug Found!
The backup GPT table is corrupt, but the primary appears OK? so that will be used.

В gparted из livecd можно посмотреть, есть ли такой раздел, и что на нем лежит.

Раздел есть. Лежит /EFI/debian/grubx64.efi

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

Если сделать разметку диска в mbr, и грузиться в режиме uefi+legacy, то такого не будет.

Так не вышло. Я пробовал. В таком режиме mbr разделы грузятся приоритетно вперед UEFI, т.е. legacy тормоза останутся, а геморроя добавится.

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

Плюсы у UEFI все же есть: нет теперь первичных и расширенных разделов, причем их кол-во неограниченно. Также поддерживаются ЖД диски бОльшего объема (которых у меня нет, так что мне это не нужно). Однако минусов у UEFI гораздо больше: теперь сложнее сделать загрузочную флешку, сложнее сделать дуалбут нескольких систем. По сути UEFI предназначена скорее для серверов,(но добрался и до десктопа) так как этот стандрат был разработан для Intel Itanium, где нужны большие объемы информации и ресурсов.

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

Скажи мне, уважаемый, где документация по UEFI, где мануалы, где FAQи, где истории успеха в бложиках, где все это?

Ну не знаю... установщик Debian автоматически выбирает GPT при создании таблицы разделов, если загружен в UEFI-режиме. Дальше достаточно знать, что одному из разделов нужно задать «использовать как EFI System». Если он уже существует (например, стоит винда уже), он подхватывается автоматически. На арчевики информация тоже есть в инструкции по установке. Гибридный образ (а все нормальные дистрибутивы сейчас предоставляют именно такие образы) можно записать на флешку обычным способом и он тоже будет грузиться в UEFI (если авторы дистрибутива не удосужились сделать поддержку UEFI - жри кактус, Debian, Ubuntu, Arch и Fedora - сделали). Даже винда ведёт себя прилично (по крайней мере относительно официальные сборки или основанные на них, за какой-нибудь ZverDVD не ручаюсь) и лишь создаёт свою папку на системном разделе EFI (главное чтобы там было свободное место). Если не тыкать куда попало мышкой, а лишь по нужному разделу, то она ничего не удаляет (благо на GPT нет ограничения в 4 основных раздела, поэтому винда может ставиться на любой раздел).

Теперь можно мышкой повозюкать в биосе!

А я и не говорил, что мне это нравится. Как раз наличие свистелок я считаю минусом UEFI. К счастью, на многих ноутбуках остался обычный интерфейс BIOS, только добавилась опция включения поддержки UEFI загрузчков.

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

Однако минусов у UEFI гораздо больше: теперь сложнее сделать загрузочную флешку, сложнее сделать дуалбут нескольких систем.

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

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

Вероятно в UEFI надо выбрать диск, на котором этот раздел будет искаться в первую очередь. Что-то типа «порядка загрузки» в биосах.

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

Флешку тоже проще. Не надо форматировать или запускать низкоуровневые команды, которые что-то пишут в first sector - каталог создал, загрузчик закинул, и всё.

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

У меня вполне обычный дебиан и вполне обычный виндовс.
Допустим, я делаю апгрейд и переношу диск с дебианом на компьютер, где уже есть винда. Просто присоединяю и он не читается. Почему? Потому что не указан в NVRAM.
Вот так обычный неССЗБ пользователь наворачивает кактус с UEFI. Что скажешь на это?

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

теперь сложнее сделать загрузочную флешку, сложнее сделать дуалбут нескольких систем

С чего бы? Вот я беру иду на сайт Debian, качаю образ гибридный образ, пишу его как обычно на флешку dd и УМВР. Ничего не изменилось. В случае с виндой я тупо копирую все файлы с диска (или с ISO-образа) в корень флешки. Наоборот стало проще (раньше требовалось использовать специальную утилиту, которая была только под Windows).

Дуалбут нескольких систем: ставлю в любом порядке Windows и Linux (только вот лучше сначала разметить разделы из-под Linux, потому что установщик винды очень тупой и малофункциональный). Потом выбираю в настройках UEFI, чтобы GRUB был приоритетнее загрузчика Windows (дело нескольких нажатий клавиш). Раньше либо надо было ставить Linux после Windows, либо грузиться с LiveCD и чинить GRUB (отнимает гораздо больше времени, требует знание консоли и собственно наличие загрузочного носителя).

Если же нужно поставить какую-нибудь Windows XP, то просто включается режим совместимости и всё делается как 10 лет назад. Но при этом конечно же теряются некоторые плюшки UEFI. Но вы же не возмущаетесь, что DOS не поддерживает многоядерность.

Где же тут трудности? Разве что если авторы дистрибутива забили на поддержку UEFI. Но мне кажется в таком случае виноваты они (ибо вся информация открыта), а не UEFI.

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

Он его вообще не видит в режиме UEFI-only. А если включить совместный режим, то и грузанется он в Legacy.

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

Не использовал Gentoo, а в арче в инструкции по установке подробно расписано как поставить систему на UEFI (в случае дуалбута просто надо не форматировать раздел EFI, а так шаги те же), а сам образ поддерживает загрузку в UEFI из коробки (достаточно записать его dd на флешку как и в случае с BIOS).

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

Перенос жёсткого диска в новый компьютер без переустановки ОС это не самая повседневная операция, которая и без загрузчика может привести к необходимости ручного вмешательства (например, если есть проприретарные драйвера на видеокарту или ядро собрано под конкретное железо). В этом случае придётся применить LiveCD и повторить grub-install, да. Но в наиболее частых случаях телодвижений становится меньше.

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

а что, в генте или в арче какой-то свой биос или уефи?

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

Перенос жёсткого диска в новый компьютер без переустановки ОС это не самая повседневная операция

А была вполне себе повседневная. Воткнул и работает, в отличии от винды.

например, если есть проприретарные драйвера на видеокарту

Переставить дрова на работающем линуксе и восстанавливать загрузчик через liveCD - это задачи совершенно разного уровня, это я тебе говорю как «простой пользователь». Конкретно со вторым я не могу разобраться уже целый час.

Но в наиболее частых случаях телодвижений становится меньше.

В каких же?

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

Secure Boot

И в чем проблема? В том, что не мешает загрузке нормальных дистрибов, и при этом отключаем?

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

Плюсы у UEFI все же есть: нет теперь первичных и расширенных разделов, причем их кол-во неограниченно

Это, разве, не плюсы GPT?

Также поддерживаются ЖД диски бОльшего объема

Вот у меня и стоят такие. На обычном GPT и BIOS :)

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

Конкретно со вторым я не могу разобраться уже целый час.

Что именно не получается? Восстановить граб?

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

Не выходит переустановить grub. Возможно из-за того, что liveCD у меня с убунтой, а может и по другой причине.

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

Попробуй вот так

mount /dev/sda1 /mnt/boot/efi
mount /dev/sda2 /mnt
mount -t proc /proc /mnt/proc
mount -o bind /sys /mnt/sys
mount -o bind /run /mnt/run
grub-install /dev/sda
либо
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --debug
grub-mkconfig -o /boot/grub/grub.cfg
Где sda1 - boot-раздел, sda2 /

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