Вы здесь

[Решено] Дуалбут. UEFI + GPT + grub2 + загрузчик windows 8 (меняет порядок загрузки).

Доброго времени суток, уважаемые.

Имеется:
Система с UEFI. SSD c GPT табличкой разделов, на нём две системы -- gentoo linux x86_64 и windows 8.
Windows 8 поставила свой загрузчик, для дженту по хендбуку поставил grub2.
Т.е. GRUB_PLATFORMS="efi-64" в make.conf, конфиги прописаны, установка примерно так.

Граб делает своё дело -- грузит выбранную систему. Однако если эта система windows 8 то в UEFI порядок загрузки меняется (!!) и Windows Boot Manager _занимает_первую_строчку_, и понятное дело, после перезагрузки проиходит прямая загрузка windows 8. Без захода в grub. Вот так выглядит настройка порядка загрузки в UEFI (под записью «gentoo» подразумевается grub2).

Менять вручную порядок бесполезно -- Windows Boot Manager пишет себя на первое место (после первой загрузки в windows 8). Даже если выставить только "gentoo". Я считаю что это просто свинское поведение с его стороны. Ну да речь не о том, собственно вопрос -- это как-нибудь лечится?

haku написал:
это как-нибудь лечится?

sys-boot/efibootmgr

Мы тоже не всего читали Шнитке!.. © В. Вишневский

efibootmgr -v | wgetpaste
Your paste can be seen here: http://bpaste.net/show/74137/

Похоже сейчас boot order правильный.
Перегрузился в windows и назад, выхлоп стал таким:

efibootmgr -v | wgetpaste
Your paste can be seen here: http://bpaste.net/show/74138/

дал команду

efibootmgr -o 0002,0000,0001

перезагрузился, попал в grub, выбрал windows 8, загрузился в неё, нажал перезагрузку и снова загрузился в windows минуя grub!
Она меняет порядок загрузки сама =(

efibootmgr -v | wgetpaste
Your paste can be seen here: http://bpaste.net/show/74141/

не пробовали играться с загрузчиком win8 из самой виндовс?

Если просто удалить Windows Boot Manager, то и grub перестанет windows грузить, ведь сам grub просто передаёт ему управление.
Запустил EasyBCD -- он показал что загрузчик "gentoo" первый и по умолчанию. Врёт. Или показывает что-то не то.

была такая же проблема как у вас, но на ubuntu. помогло исключение в строчке
efibootmgr -o 0002,0000,0001
записи о виндовс, то ессть в ваше случае должно выглядеть так :
efibootmgr -o 0000,0001.

У меня Secure Boot нет. 7-ка стоит на отдельном диске (не разделе).
В качестве загрузчика юзаю refind. Мать Asus.
Гружу винду через биос. Просто выбираю нужный диск.
refind как был первый, так и стоит. Пару раз сбивался сам по себе, по крайнем мере никаких зависимостей я не заметил... тогда грузилось в винду. Приходилось грузится в генту с флешки и снова выполнять efibootmng.

Пока что у меня опыт работы с UEFI только негативный.

Вот и у меня сейчас вместо менеджера загрузки кнопка F11 и выбор загрузочного устройства (типа как загрузится с флешки или cd-rom, только в gentoo).
И да -- тоже без Secure Boot.

У вас случаем нет команды makeactive в grub, в секции, описывающей запуск Windows ?

menuentry "Microsoft Windows Vista/7/8 x86_64 UEFI-GPT" {
        insmod part_gpt
        insmod fat
        insmod search_fs_uuid
        insmod chain
        search --fs-uuid --no-floppy --set=root --hint-bios=hd0,gpt5 --hint-efi=hd0,gpt5 --hint-baremetal=ahci0,gpt5 780B-8B6D
        chainloader /efi/Microsoft/Boot/bootmgfw.efi
}

Вобщем, чтобы проверить в грабе ли дело, собрал ядро как приложение EFI. И создал две новые EFI загрузочные записи:

efibootmgr --create  --label 'gentoo.efi' --loader '\bzImage.efi' --part 5
efibootmgr --create  --label 'Win8' --loader '\EFI\Microsoft\Boot\bootmgfw.efi' --part 5

Где bzImage.efi просто образ ядра лежащий в корне EFS раздела. Т.е. EFI передаёт упрвление выбранной ОС напрямую, не трогая GRUB. Фиг там. Gentoo нормально грузится, окошко создаёт свой "Windows Boot Manager" и ставит ему самый первый номер в списке загрузочных устройств.

Как раз для этого можно юзать refind. То есть EFI грузить Refind, а уже в нем выбираем OS.

RazrFalcon написал:
для этого можно юзать refind. То есть EFI грузить Refind, а уже в нем выбираем OS

В данном случае как это поможет? Диспетчер rEFInd - точно такое же приложение EFI, соотв., если в BIOS очерёдность изменится, то и управление будет передаваться не в него, а снова в вынь-загрузчик...

Мы тоже не всего читали Шнитке!.. © В. Вишневский

haku написал:
создал две новые EFI загрузочные записи:
...
efibootmgr --create --label 'Win8' --loader '\EFI\Microsoft\Boot\bootmgfw.efi' --part 5
...

А зачем две? Для вынь у вас запись и так уже была (созданная вынь-инсталлером) - лучше бы наоборот, удалили её нафих, добавить-то потом завсегда можно... И ещё - "part 5" это в какой (вернее - в чьей) нумерации? В EFI партиции не совпадают с партициями в понимании православного линуксоида (в конкретике не разбирался, но помню, что там там как-то хитро с этим)...

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Две? Просто чтобы грузить обе системы без grub. Своими записями. Экспериментировал.
"--part 5" это EFS раздел (для UEFI он нужен). FAT32 с соответствующими флагами. sda5 по-нашему.

Поудалять / попереименовывать UEFI-записи попробую на днях. Отпишусь.

Да нет, знаешь, шаманил и так, и эдак. Ни в какую. Понятия не имею как ещё это можно обойти.

грузишься с live cd ubuntu

sudo apt-get install efibootmgr
sudo efibootmgr

находишь номер точки входа в загрузчик windows boot mgr

допустим это номер boot0004

пишешь
sudo efibootmgr -b 0004 -a

делаешь ее не активной. У меня работает

Спасибо, однако efibootmgr -b 0004 -A
И нет, после первой перезагрузки в шindoшs 8 всё возвращается на свои места. Ох уж этот UEFI.

Быть может, тут есть нужная инфа?

Тут загрузка ядра средствами EFI, пробовл, работает, (можно выбросить такую сущность как GRUB). Однако в данном случае это не помогает, ибо проблема в порядке EFI-записей для загрузок и том что шиндовс его самовольно меняет.

Но всё-равно спасибо.

Публикую решение, может кому-то сэкономит кучу нервов и сил:

  1. грузимся в windos
  2. запускаем cmd от root-а
  3. даём на выполнение строку "bcdedit /set {bootmgr} path \EFI\gentoo\grubx64.efi"
  4. Profit! (хоть и костыль): при каждой своей загрузке виндос по прежнему передёргивает uefi. Ставит первой загрузочной записью Windows Boot Manager. Однако теперь Windows Boot Manager передаёт управление grub2, в котором мы и выбираем что именно грузить.

P.S. Отдельное спасибо топику http://askubuntu.com/questions/235567/windows-8-removes-grub-as-default-boot-manager (не сочтите за рекламу).

Реклама – это ерунда, а вот ссылки на бубунту, особенно в качестве решения для гентушников, некоторыми могут быть расценены как гнуснейшая ересь :D

А все-таки лучше снести винду.

и почему?

Beelzebubbie написал:
и почему?

не нужна она... не нужна

_вообще_ не нужна? :D и никому?

Beelzebubbie написал:
_вообще_ не нужна? :D и никому?

изначально я имел в виду - на одном винте с линуксом,
но если так глобально... то тоже да, скорее не нужна, чем нужна

Пойми меня правильно, я винду плохо знаю, тем-более восьмую, тем-более их вуду-магию с порядком загрузки через Windows Boot Manager в UEFI.
Поэтому бубунте простое человеческое спасибо за нужную строку. Ещё бы 12309 побороть, но это уже оффтоп)

я не о себе говорил :) знания можно получить и с форумов MS

Beelzebubbie написал:
Реклама – это ерунда, а вот ссылки на бубунту, особенно в качестве решения для гентушников, некоторыми могут быть расценены как гнуснейшая ересь :D

Пусть они сначала предложат Gentoo-style решение!.. ;)

http://www.gentoo.ru/node/26656#comment-205146 вообще-то, этот метод куда проще