LINUX.ORG.RU

efibootmgr: EFI variables are not supported on this system.

 , ,


0

2

Добрый день. Не могу настроить EFISTUB на Gentoo. Efibootmgr пишит: efibootmgr: EFI variables are not supported on this system.

Сделал:

# gdisk /dev/sda
Command (? for help): t
Partition number (1-2): 1
Hex code or GUID (L to show codes, Enter = 8300): EF00
Command (? for help): w
# mkfs.vfat -F 32 /dev/sda1
Processor type and features  --->
    [*] EFI runtime service support 
    [*]   EFI stub support
Firmware Drivers  --->
   EFI (Extensible Firmware Interface) Support  --->
       <*> EFI Variable Support via sysfs
Processor type and features  --->
    [*] Built-in kernel command line
    (root=/dev/gentoo/lvolroot)
General setup  --->
    [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
    (/boot/initramfs-4.4.26-gentoo.cpio) Initramfs source file(s)
Собрал
# modprobe efivars
modprobe: FATAL: Module efivars not found in directory /lib/modules/4.4.26-gentoo
$ lsblk 
NAME                MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                   8:0    0 111,8G  0 disk 
├─sda1                8:1    0   100M  0 part /boot
└─sda2                8:2    0 111,7G  0 part 
  ├─gentoo-lvolroot 253:0    0    10G  0 lvm  /
  ├─gentoo-lvolvar  253:1    0     4G  0 lvm  /var
  ├─gentoo-lvolswap 253:2    0     8G  0 lvm  [SWAP]
  └─gentoo-lvolhome 253:3    0  89,7G  0 lvm  /home
# blkid
/dev/sda1: UUID="4678-7D7A" TYPE="vfat" PARTUUID="d3def5a8-af5f-44a7-8af5-a0b8b6bef3b2"
/dev/sda2: UUID="JBRRq8-IoOn-7ECa-Ldb7-rxah-cZEk-VeO7Lq" TYPE="LVM2_member" PARTUUID="7bac48bc-3d64-472d-ad33-ca8914910109"
/dev/mapper/gentoo-lvolroot: UUID="eb078242-943e-4166-bff5-c7d281907790" TYPE="ext4"
/dev/mapper/gentoo-lvolvar: UUID="87e06eb9-637b-43ce-a7f7-ae7e5d965cdc" TYPE="ext4"
/dev/mapper/gentoo-lvolswap: UUID="03ccb8d3-3ef5-4546-969f-8932e43e4a55" TYPE="swap"
/dev/mapper/gentoo-lvolhome: UUID="2e41acf5-eb67-47d8-9ecc-5d786ce28242" TYPE="ext4"
Не получается. Система запущена через grub2 x86_64-efi

Module efivars not found in directory

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

Radjah ★★★★★ ()

Ходи в мой профиль, там ходи в ссылку, там кури до просветления.

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

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

Все перепроверил, все как у тебя. efibootmgr шлет меня далеко

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

Ну допустим, модуль подгружать не надо - но efibootmgr у ТС всё равно не работает.

mfhunruh, efivar -l что-нибудь пишет?

BattleCoder ★★★★★ ()

Система запущена через grub2 x86_64-efi

Запущена какой командой linuxefi или может просто linux?

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

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

r3lgar ★★★★★ ()

выглядит так, будто система загружена не через EFI а через legacy MBR. Отключи legacy boot в биосе.

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

Да, скорее всего с grub что-то не так.

grub-install с какими параметрами запускали?

BattleCoder ★★★★★ ()

Дебиановское ведро собрано так:

$ grep -i efi /boot/config-3.16.0-4-amd64
# неинтересное убрал
CONFIG_EFI_PARTITION=y
CONFIG_EFI=y
CONFIG_EFI_STUB=y
CONFIG_EFI_MIXED=y
CONFIG_FB_EFI=y
CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
# EFI (Extensible Firmware Interface) Support
CONFIG_EFI_VARS=m
CONFIG_EFI_VARS_PSTORE=m
# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set
CONFIG_EFI_RUNTIME_MAP=y
CONFIG_UEFI_CPER=y
CONFIG_EFIVAR_FS=m
CONFIG_EARLY_PRINTK_EFI=y

Модули efi_pstore, efivars загружены.

Тебе скорее всего нужно это:

CONFIG_EFI_VARS=m/y
CONFIG_EFI_VARS_PSTORE=m/y
CONFIG_EFIVAR_FS=m/y

Я в этом деле не сильно компетентен, но вот как-то он работает с такой схемой.

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

Нет такой команды linuxefi. Модуля тоже

Без такой команды ты ядро с поддержкой efi через grub не запустишь.
Ковыряй настройки grub-а.

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

В директории с grubx64.efi есть директория x86_64-efi с модулями?
Если нет скопируй. Покажи grub.cfg.

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

С ядром у него всё в порядке, оно просто загружено не через efi.

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

Есть директория с модулями, только когда grub запускается, он идет в директорию grub/x86_64-efi/x86_64-efi, и соответственно не находит там нечего и открывается grub rescue

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="0"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_gpt
insmod lvm
insmod ext2
set root='lvm/gentoo-lvolroot'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint='lvm/gentoo-lvolroot'  eb078242-943e-4166-bff5-c7d281907790
else
  search --no-floppy --fs-uuid --set=root eb078242-943e-4166-bff5-c7d281907790
fi
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=ru_RU
  insmod gettext
fi
terminal_output gfxterm
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
  set timeout=5
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Gentoo GNU/Linux' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-eb078242-943e-4166-bff5-c7d281907790' {
	load_video
	if [ "x$grub_platform" = xefi ]; then
		set gfxpayload=keep
	fi
	insmod gzio
	insmod part_gpt
	insmod fat
	set root='hd0,gpt1'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1  4678-7D7A
	else
	  search --no-floppy --fs-uuid --set=root 4678-7D7A
	fi
	echo	'Загружается Linux 4.4.26-gentoo …'
	linux	/vmlinuz-4.4.26-gentoo root=/dev/mapper/gentoo-lvolroot ro  dolvm intel_idle.max_cstate=1
	echo	'Загружается начальный виртуальный диск …'
	initrd	/initramfs-genkernel-x86_64-4.4.26-gentoo
}
submenu 'Дополнительные параметры для Gentoo GNU/Linux' $menuentry_id_option 'gnulinux-advanced-eb078242-943e-4166-bff5-c7d281907790' {
	menuentry 'Gentoo GNU/Linux, с Linux 4.4.26-gentoo' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.26-gentoo-advanced-eb078242-943e-4166-bff5-c7d281907790' {
		load_video
		if [ "x$grub_platform" = xefi ]; then
			set gfxpayload=keep
		fi
		insmod gzio
		insmod part_gpt
		insmod fat
		set root='hd0,gpt1'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1  4678-7D7A
		else
		  search --no-floppy --fs-uuid --set=root 4678-7D7A
		fi
		echo	'Загружается Linux 4.4.26-gentoo …'
		linux	/vmlinuz-4.4.26-gentoo root=/dev/mapper/gentoo-lvolroot ro  dolvm intel_idle.max_cstate=1
		echo	'Загружается начальный виртуальный диск …'
		initrd	/initramfs-genkernel-x86_64-4.4.26-gentoo
	}
	menuentry 'Gentoo GNU/Linux, с Linux 4.4.26-gentoo (режим восстановления)' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.26-gentoo-recovery-eb078242-943e-4166-bff5-c7d281907790' {
		load_video
		if [ "x$grub_platform" = xefi ]; then
			set gfxpayload=keep
		fi
		insmod gzio
		insmod part_gpt
		insmod fat
		set root='hd0,gpt1'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1  4678-7D7A
		else
		  search --no-floppy --fs-uuid --set=root 4678-7D7A
		fi
		echo	'Загружается Linux 4.4.26-gentoo …'
		linux	/vmlinuz-4.4.26-gentoo root=/dev/mapper/gentoo-lvolroot ro single 
		echo	'Загружается начальный виртуальный диск …'
		initrd	/initramfs-genkernel-x86_64-4.4.26-gentoo
	}
}

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

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

он идет в директорию grub/x86_64-efi/x86_64-efi, и соответственно не находит там нечего

Ну так, скопируй их туда. И замени linux/initrd на linuixefi/initrdefi соответсвенно.

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

Какая версия grub у Вас?

grub2-efi-2.02-0.34.el7.centos.x86_64
grub2-efi-modules-2.02-0.34.el7.centos.x86_64

Да где Вы взяли linuxefi и initrdefi??

из /usr/lib/grub/x86_64-efi

P.S. Вообще, меня достала кривость анаконды (инсталятор centos/fedora) и я обячно ставлю grub-efi руками (просто копирую нужные файлы на boot раздел).

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

У меня такого нет, загрузился через efi shell, проблема осталась та жа, это не загрузчик виноват

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