在FOSDEM 2022 上的 GRUB 项目状态更新中,他们讨论了在 GRUB 2.12 中添加分离标头支持(用于解密):
添加加密磁盘分离标头和密钥文件支持,Denis 'GNUtoo' Carikli、Glenn Washburn、Patrick Steinhardt
GRUB 2.12 于 2023 年 12 月发布,但我在其NEWS
文件中找不到任何提及该功能的内容。
有谁知道 2.12 现在是否支持分离标头(如最初计划的那样)?
在FOSDEM 2022 上的 GRUB 项目状态更新中,他们讨论了在 GRUB 2.12 中添加分离标头支持(用于解密):
添加加密磁盘分离标头和密钥文件支持,Denis 'GNUtoo' Carikli、Glenn Washburn、Patrick Steinhardt
GRUB 2.12 于 2023 年 12 月发布,但我在其NEWS
文件中找不到任何提及该功能的内容。
有谁知道 2.12 现在是否支持分离标头(如最初计划的那样)?
我在一台配备 24 个磁盘和 256 GB RAM 的新 Dell PowerEdge R760xd2 服务器上运行 Debian Stable(Debian 12、Bookworm)。初始安装(包括重新启动到新安装的操作系统)工作正常,但现在 grub 无法启动。
error: no such device: [some UUID].
Loading Linux 6.1.0-17-amd64
error: out of memory.
Loading initial ramdisk ...
error: you need to load the kernel first.
正如您所看到的,grub 无法加载内核,这与可能的 ramdisk (initrd) 问题无关。
我还观察到:
ls (hd22,gpt1)/
给出out of memory
(在恢复控制台中)我正在使用 UEFI 并添加了 500 MB UEFI 分区(使用 Debian 的安装程序)。引导设备是使用两个磁盘的硬件 RAID1。
在上次成功重新启动和失败之间,我在 24 个磁盘中的 22 个上配置了 ZFS。此外,引导 RAID1 的剩余存储现在也用作第二个 zpool (ZFS)。我认为 22 个磁盘中的每一个都有两个(GPT?)分区,但我不知道为什么,因为我将整个磁盘用于 ZFS。
我的直觉是 grub 会扫描所有磁盘,并且对磁盘/分区的绝对数量有点不知所措。
如何让系统重新启动?
我想了解有关 Linux 启动过程以及启动分区加密如何工作的更多信息。我有几个问题。
我知道UEFI系统必须有ESP分区,可以挂载在/boot/efi
或/efi
. ESP 分区包含引导加载程序和内核。在我的 Endeavor OS 系统上,我也有/boot
,它只包含英特尔微代码。我的理解是,系统首先加载引导加载程序(在我的例子中是 systemd-boot),然后加载所选的内核。/boot
那么,根据我当前的配置以及一般在 UEFI 系统中的情况,如果单独存在的话,其目的是什么/efi
?
然后,我想加密我的系统,并且我正在阅读 Arch Wiki 指南“加密启动分区 (GRUB)”。在这种情况下,未加密的是 GRUB 和 ESP。对于UEFI系统来说,这种方式有什么好处呢?现在加密的内容在“正常”配置中是这样的?ESP 里面还有什么?
我也在尝试了解什么是 EFISTUB 以及它是如何工作的。据我了解,不使用引导加载程序,统一的内核映像放在 ESP 内。这种情况下/boot
还有必要吗?
GRUB 或 SuperGRUB 是否可以在 UEFI 工作站上启动像 Debian 这样的平台,而不使用 CSM?
实际上是什么阻止了这种情况?;)
所以,我遇到了这个问题,我的 PC 默认情况下不启动 NVME,并且没有在 BIOS 中选择它作为启动选项的选项,但它也有 SATA SSD 和 NVME 插槽并启动 Linux我会按 F12 并从那里选择 NVME 启动选项。否则,它将直接启动至 SATA SSD 上的 Windows。考虑到它是 Alienware X51 R3 并且采用最新的 BIOS,这种行为很奇怪,但该信息仅供参考。
为了解决这个问题,我尝试将 Linux 引导加载程序(我使用 Pop OS 22.04)移动到 SATA SSD,但由于引导分区上没有足够的空间,我最终调整了它的大小,一切顺利。一旦我移动了引导加载程序,我就无法启动 Linux,然后尝试通过 Live CD 进行引导修复,但始终会收到“NVRAM 已锁定”消息。然而,我设法通过使用 Windows 安装 rEFInd 来启动 Linux,尽管现在当我尝试更新系统时却失败并出现以下 grub 错误:
Need to get 0 B/840 kB of archives.
After this operation, 14.8 MB disk space will be freed.
(Reading database ... 570790 files and directories currently installed.)
Removing linux-image-unsigned-6.3.2-060302-generic (6.3.2-060302.202305111150) .../etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-6.3.2-060302-generic
/etc/kernel/postrm.d/zz-update-grub:
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
/usr/sbin/grub-probe: error: failed to get canonical path of `/boot/grub/unicode.pf2GRUB_DISABLE_OS_PROBER=false'.
No path or device is specified.
Usage: grub-probe [OPTION...] [OPTION]... [PATH|DEVICE]
Try 'grub-probe --help' or 'grub-probe --usage' for more information.
run-parts: /etc/kernel/postrm.d/zz-update-grub exited with return code 64
dpkg: error processing package linux-image-unsigned-6.3.2-060302-generic (--remove):
installed linux-image-unsigned-6.3.2-060302-generic package post-removal script subprocess returned error exit status 1
dpkg: too many errors, stopping
Errors were encountered while processing:
linux-image-unsigned-6.3.2-060302-generic
Processing was halted because there were too many errors.
这到底意味着什么?我该如何解决它?
当我运行时,grub-install /dev/vda -v
我在输出中看到这一行:
grub-mkimage --directory '/usr/lib/grub/i386-pc' --prefix '(,msdos1)/boot/grub' --output '/boot/grub/i386-pc/core.img' --dtb '' --format 'i386-pc' --compression 'auto' 'ext2' 'part_msdos' 'biosdisk'
如何配置 GRUB 以在参数列表中添加特定模块grub-mkimage
?
背景故事:我正在尝试将 PureOS 的 BIOS/MBR 安装从 ext4 迁移到 btrfs,因此我需要在运行之前将 btrfs 模块添加到 GRUB 映像中grub-install
。这里的说明很好,但它是针对 UEFI/GPT 的。
我有一台运行 KDE Neon 的计算机。我最近尝试使用修复 grub,boot-repair
因为我在启动时一直显示grub-rescue
屏幕。现在,当我尝试启动时,我看到了 grubSelect Operating System
屏幕,但是在选择列表中的任何选项、单击E
或C
编辑选择或打开 grub 命令行后,整个计算机只是冻结,迫使我按住电源按钮将其关闭。
今天,出于完全无关的原因,我在我的(不同的)Windows 计算机上的 VirtualBox 中安装了 KDE Neon 的全新安装。安装操作系统后我可以使用它,但是在我使用它几分钟后重新启动 VM 后,我看到 grub 屏幕的地方发生了同样的问题,并且在选择任何选项后 VM 冻结Select Operating System
。我还收到了来自 VirtualBox 的消息说A critical error has occurred
.
在此之前,我已经重新启动了 VM 几次,并且运行良好。我不确定这个问题是否与另一台计算机的问题有任何关系,但我想我至少会提到它。此外,与 VM 相比,我更担心修复另一台计算机。如果有人知道如何让我的计算机再次启动,我将不胜感激。谢谢。
我用这个命令创建了一个图像文件:
dd if=/dev/zero of=linux.img bs=16M count=1024
cfdisk linux.img
mkfs.ext4 linux.img
并按照 Linux From Scratch 11.3 一书的说明安装了 linux 系统。我可以通过 chroot 访问这个系统,但是当我尝试使用这个命令运行它时:
qemu-system-x86_64 -hda linux.img -vga std -m 4G
系统的初始化被这个问题标题中描述的错误中断。我的文件/boot/grub/grub.cfg
如下所示:
# Begin /boot/grub/grub.cfg
set default=0
set timeout=5
insmod ext4
#set root=(hd0,2)
menuentry "GNU/Linux, Linux 6.1.11-lfs-11.3" {
linux /boot/vmlinuz-6.1.11-lfs-11.3 root=/dev/hda1 ro
我试过的:
在 grub 启动屏幕后取消注释行set root=(hd0,2)' and trying the values
hd0,0 or
hd0,1 hd0,X not found`。(the system not even initialize with this, and I got the error
将 menuentry 选项中以 linux 开头的行中的根值更改为 /dev/loopXX(我遇到了同样的错误)。
将 menuentry 选项中以 linux 开头的行中的根值更改为 /dev/sda1(在本例中,消息相同,但块为(8,1)
)。
任何人都可以告诉我我能做些什么来解决这个问题?
在 Windows 上,可以在不使用任何交换的情况下使用休眠。
我想知道这在 Linux 上是否可行?
因为在我的 Debian 11 上,我在 /etc/default/grub 中找到了这一行
GRUB_CMDLINE_LINUX_DEFAULT="... resume=/dev/mapper/luks-4205519b-f3fe-468f-b05e-44f25f6882a4"
如您所见,“resume=”选项指定用于休眠的交换分区。
现在,如果我删除这个交换分区(以禁用交换),我要在 /etc/default/grub 中写入什么?
是否可以像在 Windows 上一样使用休眠文件?
因为我有 32GB RAM,如果我只将 32GB 交换分区用于休眠,那就是浪费空间。
我已经安装了 Windows 11、Lububtu 和 Manjaro。当我用Windows的Lubuntu的GRUB启动时,它启动正常。然而,当我安装 Manjaro 时,它现在显示像“奇怪的线条”和斑点,但 Windows 11 正常启动。我还取消选中“快速启动”选项,Lubuntu 的 GRUB 将 Windows 11 显示为“Windows Vista”。