准备统一内核映像 #
内核命令行 #
mkinitcpio 支持从目录中的命令行文件读取内核参数。它会将 /etc/cmdline.d 目录中所有扩展名为 .conf 的文件的内容连接起来,并用于生成内核命令行。命令行文件中任何以特殊字符 # 开头的行都会被视为注释,并被 mkinitcpio 忽略。请注意移除指向 microcode 和 initramfs 的条目。
例如:
/etc/cmdline.d/root.conf
root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw提示:
- 如果您的根文件系统位于非默认的 Btrfs 子卷上,请确保在配置文件中设置必要的挂载标志——
rootflags,例如,rootflags=subvol=/path/to/subvolume
- 由于
rootflags仅在启动时使用,因此无需复制/etc/fstab中的所有标志
- 此前自定义的内核参数需要在这里指定
root和rw需要指定
- 可以运行
cat /proc/cmdline检查系统启动时使用的参数,看看需要添加哪些内核参数,如果有两个相同的参数,选自己手动指定的,并删除另一个参数
.preset 文件 #
接下来,按如下方式修改 /etc/mkinitcpio.d/linux.preset 或者你正在使用的内核对应的 .preset 文件,注意包含正确的 EFI 分区挂载点 :
- 取消注释
PRESET_uki=参数 - (可选) 注释掉
PRESET_image= - (可选) 对
PRESET_options=每一行添加或取消注释--splash参数,主要为启动动画
以下是 Linux 内核和 Arch 启动画面 的 linux.preset 工作示例:
/etc/mkinitcpio.d/linux.preset
# mkinitcpio preset file for the 'linux' package
#ALL_config="/etc/mkinitcpio.conf"
ALL_kver="/boot/vmlinuz-linux"
PRESETS=('default' 'fallback')
#default_config="/etc/mkinitcpio.conf"
#default_image="/boot/initramfs-linux.img"
default_uki="esp/EFI/Linux/arch-linux.efi"
default_options="--splash=/usr/share/systemd/bootctl/splash-arch.bmp"
#fallback_config="/etc/mkinitcpio.conf"
#fallback_image="/boot/initramfs-linux-fallback.img"
fallback_uki="esp/EFI/Linux/arch-linux-fallback.efi"
fallback_options="-S autodetect"提示:如果您只想从统一内核映像启动,您可以将 ESP 挂载到 /efi,并且只有这些映像需要驻留在 ESP 分区上。
pacman 钩子 #
systemd-stub(systemd 的一部分)、微码(包括 intel-ucode 和 amd-ucode)以及 linux 内核包的更新将自动触发 UKI 重建。
构建 UKI #
最后,确保 UKIs 目录存在,并重新生成 initramfs。例如,对于 linux 预设:
# mkdir -p esp/EFI/Linux
# mkinitcpio -p linux注意改 esp 为你实际的 EFI 分区
安全启动 #
sbctl 会自动处理。
启动 #
systemd-boot 会自动配置。