LinuxForum.Fans
Тема

Помогите победить UEFI/GPT

Автор: VQV 10 сообщений 4376 просмотров
01.12.2014 11:16 · отредактировано #403437

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

есть диск на который хочу поставить систему и чтоб она грузилась с этого диска

как я понял есть флаг EF00 - для UEFI и флаг EF00 - затычка для биоса

сначала хотел чтоб грузилось через UEFI

разбил диск так

text
   1            2048         2099199   1024.0 MiB  EF00   ------------------------- FAT32  >> /boot/efi (EF00)
   2         2099200         2433023   163.0 MiB   0700  --------------------------------- ext4 >> /boot
   3         2433024        54861823   25.0 GiB    0700 ----------------------------- ext4 >> /

делал как в wiki gentoo описано
[console]root # mkdosfs -F 32 -n efi-boot /dev/sdc1
root # mkdir /boot/efi
root # echo 'LABEL=efi-boot /boot/efi vfat defaults 0 2' >> /etc/fstab
root # mount /boot/efi[/console]
всё прошло успешно

[console]grub2-install --target=x86_64-efi[/console] (правдо в выводе есть ошибки)
[console]Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
Installation finished. No error reported.[/console]

но всёравно после этого в в /boot/efi появляются файлы с расширениями .efi

потом

[console]grub-mkconfig -o /boot/grub/grub.cfg[/console]
после перезагрузки не работает..

ну и как тут http://docs.slackware.com/howtos:slackware_admin:installing_with_gpt_without_uefi описано тоже пробова

лило не работает
груб тоже

делал раздел 2мб с флагом EF02
и[console]# grub-install --modules=part_gpt /dev/sdc
# grub-mkconfig -o /boot/grub/grub.cfg
[/console]

* исправлена разметка сообщения. -- bormant

01.12.2014 14:50 #403450
"VQV" написал:
есть флаг EF00 - для UEFI и флаг EF00 - затычка для биоса

И в чём отличие?

"VQV" написал:
[console]Try 'modprobe efivars' as root.[/console]

Дело говорит.

Тут нужно понимать, чего хочется.
Если MB грузится в режиме UEFI, то пункты загрузки прописаны в nvram. Доступ к nvram изнутри Линукса осуществляется посредством модуля efivars. Нет модуля -- не прописался в nvram пункт с GRUB-ом, загрузчик MB про него не в курсе.

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

После перезагрузки UEFI смотрит в nvram, загрузочного пункта с GRUB-ом там не видит, причины см.выше.

01.12.2014 15:57 #403461

PS. По поводу:

[console]# echo 'LABEL=efi-boot /boot/efi vfat defaults 0 2' >> /etc/fstab[/console]

хочу обратить внимание на:
1) man fstab оттуда: http://linux.die.net/man/5/fstab

The first field, (fs_spec), describes the block special device or remote filesystem to be mounted.
...
Instead of giving the device explicitly, one may indicate the (ext2 or xfs) filesystem that is to be mounted by its UUID or volume label (cf. e2label(8) or xfs_admin(8)), writing LABEL=<label> or UUID=<uuid>, e.g., 'LABEL=Boot' or 'UUID=3e6be9de-8139-11d1-9106-a43f08d823a6'.
Подчеркнуто мной. vfat нет в списке ФС, которые стоит прописывать по LABEL=.
Но дело даже не в этом. Если у меня в initrd нет драйвера vfat, то udev успевает дважды ругнуться по 10-секундному таймауту на ранней стадии загрузки. Если добавить в initrd модуль vfat (fat добавится по зависимостям), этот момент пройдет. Очевидно, без драйвера ФС читать метку с раздела FAT32 некому.

Вписать в /etc/fstab /dev/sda1 и забыть про необходимость добавлять -m vfat при генерации initrd, или оставить LABEL=efi-boot и помнить -- решать вам.
02.12.2014 05:57 · отредактировано #403560

есть флаг EF00 - для UEFI и флаг EF02* - затычка для биоса


[console]
# modprobe efivars
modprobe: ERROR: could not insert 'efivars': No such device
[/console]

и чтоб efivars заработал это мне надо с UEFI загрузится?

02.12.2014 06:02 #403561

примерно так должно выглядеть ?

text

/dev/sdb1        /boot/efi        auto        defaults         0   0
02.12.2014 08:45 #403563

Почти:

text
/dev/sdb1        /boot/efi        vfat        defaults         0   0

чтобы efivars заработал это мне надо с UEFI загрузиться?

Да. При этом ядро должно быть собрано с поддержкой EFI (это так для Slackware64-14.1) и загружено без параметра noefi.

02.12.2014 09:40 #403566
bormant написал:
Почти:
text
/dev/sdb1        /boot/efi        vfat        defaults         0   0

чтобы efivars заработал это мне надо с UEFI загрузиться?

Да. При этом ядро должно быть собрано с поддержкой EFI (это так для Slackware64-14.1) и загружено без параметра noefi.

у меня Slackware 14.1 64

как я смогу с UEFI загрузится если в меню загрузки UEFI нет пункта со слакой?

02.12.2014 10:29 #403568

всё разобрался заработало!!!

спасибо!

02.12.2014 10:36 #403570

ещё вопрос по разбивки

лучше оставить как есть отдельный раздел под /boot/efi

или сделать 1 раздел /boot ?

02.12.2014 11:02 #403573

VQV,
Для UEFI нужен раздел типа EF00, нынешний /dev/sda1, отформатированный в FAT32 (то есть материнской плате он нужен для загрузки в UEFI режиме).
/boot удобнее иметь с Linux-овой ФС, поддерживающей симлинки и прочие прелести.
Отдельный раздел под /boot необязателен, если в nvram прописывать собственно ядро, лежащее на EF00 разделе. Если с этого раздела грузится только GRUB/ELILO, а ядро читает где-то еще (ну а вдруг?) и по каким-то причинам не может дотянуться до какой-то области диска (мало ли какие баги возможны от производителя материнки), то отдельный /boot может иметь смысл.
Но даже если это и не так и от отдельного /boot пользы в данном конкретном случае нет, то и вреда тоже нет никакого.

Резюме:
/boot/efi -- отдельный, EF00, FAT32
/boot -- или на корне, или отдельный, без разницы (если нет "специфики" имени производителя)

С efibootmgr поосторожнее, Samsung-овые ноутбуки имели зело легко изменяемые установки, позволяющие перезаписать в nvram запись загрузки программы настройки (то, что обычно называют Bios Setup Utility), превращая сей чудный девайс в тыкву. Возможно, они в подобном не одиноки.

Войдите или зарегистрируйтесь, чтобы ответить.