kernel-install
kernel-install(8) 是一个灵活的实用程序,旨在简化系统上 Linux 内核镜像的安装和管理。它具有插件系统,允许与其他实用程序无缝集成。这些插件定义了 Linux 内核镜像安装和管理期间所需的一系列操作和配置。此类任务的示例包括配置启动加载器条目、生成 统一内核镜像 (UKI),或促进内核签名以符合 安全启动。
安装
kernel-install 是 systemd 的一部分并与其打包在一起。systemd-ukify 可选依赖项也是 统一内核镜像 所必需的,除非指定了不同的 UKI 生成器(参见 #主要配置)。
配置
主要配置
主配置文件是 /etc/kernel/install.conf
。使用它来配置您想要使用的 布局,即 bls
用于传统的分离内核和 initrd 镜像,或 uki
用于 统一内核镜像
/etc/kernel/install.conf
layout=bls
uki
)ukify 将生成 UKI。这可以使用 initrd_generator=
和 uki_generator=
进行更改,请参阅 kernel-install(8)。# kernel-install inspect --verbose
可用于查看有关为什么自动使用某些默认值的更多信息。内核命令行
内核参数 必须在 /etc/kernel/cmdline
中设置。它们将被嵌入到 UKI 中,或根据使用的布局添加到启动加载器配置中。如果 /etc/kernel/cmdline
不存在,kernel-install 将使用 /usr/lib/kernel/cmdline
或 /proc/cmdline
中的参数,不在 /etc/kernel/cmdline
中设置内核参数可能会导致 kernel-install 使用当前运行内核的参数。
插件
要列出安装、升级或删除内核镜像时 kernel-install
使用的激活的插件,您可以使用 inspect
参数
# kernel-install inspect
... Plugins: /usr/lib/kernel/install.d/50-depmod.install /usr/lib/kernel/install.d/50-mkinitcpio.install /usr/lib/kernel/install.d/60-ukify.install /usr/lib/kernel/install.d/90-loaderentry.install /usr/lib/kernel/install.d/90-uki-copy.install ...
可用的插件位于 /usr/lib/kernel/install.d/
下
ls /usr/lib/kernel/install.d/
50-depmod.install 50-mkinitcpio.install 60-ukify.install 90-loaderentry.install 90-uki-copy.install 91-sbctl.install
/etc/kernel/install.d/
中类似命名的文件将覆盖默认文件。
例如,要禁用默认的 sbctl 插件(它会自动为安全启动签名新的 UKI)
# ln -sf /dev/null /etc/kernel/install.d/91-sbctl.install
您还可以编写自己的 kernel-install
插件,并将它们放在 /etc/kernel/install.d/
中。
统一内核镜像
用法
手动
要从 /usr/lib/modules
手动安装内核,请使用以下 add
命令
# kernel-install add A.B.C-name /usr/lib/modules/A.B.C-name/vmlinuz
# kernel-install add-all
一次性添加所有已安装的内核。要手动删除内核,请使用 remove
命令
# kernel-install remove A.B.C-name
自动
要在安装或更新内核包时自动触发 kernel-install
和所有活动的插件,您可以安装 pacman-hook-kernel-installAUR。
值得注意的是,mkinitcpio 的 pacman hooks 已经提供了类似的功能。如果您打算切换到 kernel-install,则需要手动屏蔽这些钩子
# ln -s /dev/null /etc/pacman.d/hooks/60-mkinitcpio-remove.hook # ln -s /dev/null /etc/pacman.d/hooks/90-mkinitcpio-install.hook
要还原,只需删除上面创建的符号链接。