跳转至内容

kernel-install

来自 ArchWiki

kernel-install(8) 是一个灵活的实用工具,旨在简化 Linux 内核镜像在系统上的安装和管理。它具有插件系统,可以与其他实用程序无缝集成。这些插件定义了在 Linux 内核镜像的安装和管理过程中所需的一系列操作和配置。此类任务的示例包括配置引导加载程序条目、生成 统一内核镜像 (UKI) 或为 安全启动 合规性提供内核签名。

注意 kernel-install 本身不生成 initramfs,而是使用 mkinitcpiodracut 等程序的插件。

安装

kernel-installsystemd 的一部分,并与其一同打包。 systemd-ukify 选装依赖对于 统一内核镜像 也是必需的,除非指定了其他 UKI 生成器(参见 #主配置)。

配置

主配置

主配置文件是 /etc/kernel/install.conf。使用它来配置您想要使用的 布局,即 bls 用于传统的分割内核和 initramfs 镜像,或者 uki 用于 统一内核镜像

/etc/kernel/install.conf
layout=bls
注意 默认情况下,mkinitcpio 将生成 initramfs,并且(如果布局设置为 ukiukify 将生成 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/ 中。

统一内核镜像 (UKI)

请参阅 统一内核镜像#kernel-install

用法

手动设置

要从 /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

注意 mkinitcpiopacman 钩子 已提供类似功能。为避免重复,需要手动屏蔽这些钩子。
# ln -s /dev/null /etc/pacman.d/hooks/60-mkinitcpio-remove.hook
# ln -s /dev/null /etc/pacman.d/hooks/90-mkinitcpio-install.hook

要恢复,只需删除上面创建的符号链接。

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.