答案1
为了回答这个问题,核心引导+SeaBIOS做支持GPT分区!
强调拥有 UEFI 或 BIOS 固件与启动磁盘可以拥有的分区表类型正交的评论是正确的:
- UEFI支持MBR和GPT
- BIOS 支持 MBR 和 GPT1
- coreboot+SeaBIOS 支持 MBR 和 GPT1
¹您只需在 BIOS 和 coreboot+SeaBIOS 上为 GPT 创建 BIOS 启动分区即可。
我最近买了一台带有 coreboot+SeaBIOS 的 Librem 14 笔记本电脑,我也想知道同样的事情:coreboot 会对使用 GPT 分区造成一些特殊障碍吗? (在搜索引擎中搜索这个问题让我想到了这个问题!) 令人高兴的是,我可以报告使用经典的 BIOS/GPT 布局对我来说很有效。
基本安装
遗憾的是,我从未安装过 Gentoo(我使用的发行版是 Arch),而且我不知道为什么你的系统会抱怨 EFI 变量,但希望我可以提供一些可跨发行版安装传输的信息:
我用了基本 BIOS/GPT 分区方案,除了交换分区(我使用交换文件)。
使用
gdisk
,我对驱动器进行了 GPT 分区 (/dev/nvme0n1
),创建了一个 1 MiB BIOS 启动分区,然后是跨越驱动器其余部分的根分区。BIOS启动分区有没有文件系统(
FSTYPE
)或挂载点,以及我的根分区的 ext4。lsblk -o name,parttypename,fstype,size,mountpoint
NAME PARTTYPENAME FSTYPE SIZE MOUNTPOINT nvme0n1 ├─nvme0n1p1 BIOS boot 1M └─nvme0n1p2 Linux filesystem ext4 931.5G /
然后我安装了 GRUB:
grub-install --target=i386-pc /dev/nvme0n1
(你可能会想,'什么?!
i386-pc
???我使用的不是 1985 年的 32 位 CPU!' 但这是grub-install
默认标志,而且它是用于 x86-64 BIOS 系统的标志,包括 coreboot+SeaBIOS 系统。我在这里提到它只是为了解释它在其他来源中的出现,并阻止人们包含错误的标志,例如x86_64-efi
,它仅适用于 UEFI。)之后,您可以通过编辑来设置任何更好的 GRUB 设置
/etc/default/grub
(但我没有设置任何设置)。然后我生成了 GRUB 配置文件:
grub-mkconfig -o /boot/grub/grub.cfg
之后,我安装了显示管理器和桌面环境,启用了一些服务,然后重新启动到新的 Arch 安装。我很想列出全部我的安装的血腥细节(我大致遵循Arch 安装指南),但它们超出了这里的范围;关键信息应该是上面列出的分区方案和 GRUB 安装。
使用 LUKS 磁盘加密进行安装
要在 coreboot+SeaBIOS 上加密 GPT 磁盘,有效的设置是上面的基本设置加上加密根分区 ( p3
) 并添加未加密的约 500 MiB/boot
分区 ( p2
)。
lsblk -o name,parttypename,fstype,size,mountpoint
NAME PARTTYPENAME FSTYPE SIZE MOUNTPOINT
nvme0n1 931.5G
├─nvme0n1p1 BIOS boot 1M
├─nvme0n1p2 Linux filesystem ext2 512M /boot
└─nvme0n1p3 Linux filesystem crypto_LUKS 931G
└─cryptroot ext4 931G /
奖金信息
对于任何想知道如何使用上述分区方案进行此操作的人,首先将加密的根分区设置为根分区,打开它并格式化它。
cryptsetup --verify-passphrase --verbose luksFormat /dev/nvme0n1p3
cryptsetup open /dev/nvme0n1p3 cryptroot
mkfs.ext4 /dev/mapper/cryptroot
然后安装它和/boot
分区...
mount /dev/mapper/cryptroot /mnt
mkdir /mnt/boot
mount /dev/nvme0n1p2 /mnt/boot
...并且,对于 Arch 来说,通常遵循安装指南从那时起。
当需要设置引导加载程序 (GRUB) 时,与 GRUB 安装详细信息的唯一区别基本安装上面的部分是你将要想要在 中配置 GRUB 设置/etc/default/grub
,您需要将GRUB_CMDLINE_LINUX
顶部的 var 编辑为
GRUB_CMDLINE_LINUX="cryptdevice=UUID=XXXXXX:cryptroot root=/dev/mapper/cryptroot"
在哪里XXXXXX
的 UUID 在外,加密根分区,nvme0n1p3
(不是内部、解密的根分区,cryptroot
):
lsblk -o name,uuid
NAME UUID
...
└─nvme0n1p3 XXXXXX
└─cryptroot
然后生成 GRUB 配置文件并按照以下步骤进行基本安装部分。