我正在UEFI模式下启动一个编译为x86_64-efi的GRUB应用程序。
这个GRUB应用程序发布了一个32位Linuxv3.18.48,带有CONFIG_EFIVAR_FS=y和CONFIG_EFI_VARS=y。
现在我想读一些efivars,但我甚至不能挂载efivarfs:
mount -t efivarfs efivarfs /sys/firmware/efi/efivars
它返回“没有这样的设备”(ENODEV)。
这是预料之中的,因为dmesg说:
No EFI runtime due to 32/64-bit mismatch with kernel
查看Linux源代码:
我希望能够在启动时选择内核。我已经安装了arch默认值和lts内核。我使用systemdboot作为引导加载程序。
但当我启动我的笔记本,它直接启动,没有显示任何菜单。当我运行uname -r时,我得到:
5.9.0-arch1-1
在/boot/loader/entries/中,我有两个文件:
arch.conf
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root="LABEL=arch_os" rw
和拱形
title A
我想在Ubuntu11.10上安装6.2.0,鹰是32位兼容的,所以我需要安装ia32-libs,但是它会导致以下错误:
Package ia32-libs is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'ia32-libs' has no installation candidat
我有一个双引导Arch Linux和Windows。
在进行了Windows更新之后,我的GRUB丢失了,系统正在引导grub recovery。在那里,我设法将GRUB指向Arch并引导它。但是,它无法使用以下消息完全启动:
filed to listen on Load/Save RF Kill Switch Status /dev/rfkill Match
...
failed to mount /boot/efi
# Enter recovery mode
...
我尝试从恢复模式(wiki是这里)恢复我的GRUB:
mount /dev/sda5 /mnt # my Linu
我有2个ESP,这可能是问题所在,但我认为可以修复,因为我可以使用GRUB集手动启动。不管怎么说这是我的安排。当我在其他机器上重新输入时,请忽略某些可能的错误:
fdisk -l
/dev/sda1 Windows recovery
/dev/sda2 EFI system
/dev/sda3 Microsoft reserved
/dev/sda4 Microsoft basic data
/dev/sda5 Windows recovery
/dev/sda6 EFI System (linux)
/dev/sda7 Linux fs
linux
为了研究UEFI问题,我遵循了一个教程:当我尝试编译时,我得到了这个我不明白的
ERROR:`hello.c: In function ‘efi_main’:
hello.c:8:10: warning: passing argument 1 of ‘Print’ from incompatible pointer type [-Wincompatible-pointer-types]
Print(L"Hi,,,");
^~~~~~~~
In file included from hello.c:2:0:
/usr/local/include/efi
因此,我已经将rEFInd作为引导加载程序安装到我的Linux安装程序上(在试用实际硬件之前,在虚拟盒上安装)。
我已经将refind_linux.conf文件配置如下:
## This file should be present in the same directory as the EFISTUB kernel and initramfs files
## More info at http://www.rodsbooks.com/refind/linux.html , http://www.rodsbooks.com/efi-bootloaders/efistub.html