当前位置: 首页 > 文档资料 > systemd 中文手册 >

kernel-install 中文手册

优质
小牛编辑
140浏览
2023-12-01

名称

kernel-install — 在 /boot 中添加或删除内核与 initrd 镜像

大纲

kernel-install COMMAND KERNEL-VERSION KERNEL-IMAGE [INITRD-FILE...]

描述

kernel-install 用于在 /boot 中添加或删除内核与 initrd 镜像。

kernel-install 将会执行 /usr/lib/kernel/install.d//etc/kernel/install.d/ 目录下的可执行文件。所有可执行文件,无论它位于哪个目录,都统一按照文件名的字典顺序依次执行。因为 /etc/kernel/install.d/ 目录下的文件会取代 /usr/lib/kernel/install.d/ 目录下的同名文件,所以,如果系统管理员想要屏蔽 /usr/lib/kernel/install.d/目录中的某个可执行文件,那么最佳做法是在 /etc/kernel/install.d/目录中创建一个指向 /dev/null 的同名符号链接。注意,可执行文件必须以 ".install" 作为后缀名,否则将被忽略。

这些可执行文件在执行成功后必须返回 0 。如果返回 77 则表示彻底终止整个操作,也就是所有字典顺序上的后续可执行文件都将被跳过。

命令(COMMAND)

可以使用的命令如下:

add KERNEL-VERSION KERNEL-IMAGE [INITRD-FILE ...]

KERNEL-VERSION 是内核版本字符串、KERNEL-IMAGE 是内核镜像文件的路径。 kernel-install 将会创建 /boot/MACHINE-ID/KERNEL-VERSION/ 目录,并在调用 /usr/lib/kernel/install.d/*.install/etc/kernel/install.d/*.install 插件时向它们传递如下参数:

add KERNEL-VERSION /boot/MACHINE-ID/KERNEL-VERSION/ KERNEL-IMAGE [INITRD-FILE ...]

有两个默认的插件将会被调用,并执行下列操作:

  • 50-depmod.install 将会以 KERNEL-VERSION 为参数调用 depmod(8) 工具(创建内核模块之间依赖关系的描述文件)。

  • 90-loaderentry.install 将会:(1)把 KERNEL-IMAGE 复制到 /boot/MACHINE-ID/KERNEL-VERSION/linux 、 (2)把 INITRD-FILE(若存在) 复制到 /boot/MACHINE-ID/KERNEL_VERSION/INITRD-FILE 、 (3)按照 Boot Loader Specification 规范创建一个 /boot/loader/entries/MACHINE-ID-KERNEL-VERSION.conf 启动项描述文件,启动项标题将被设为 /etc/os-release/usr/lib/os-release(如果前一个不存在) 中 PRETTY_NAME 值(若不存在则使用"Linux KERNEL-VERSION")。

remove KERNEL-VERSION

KERNEL-VERSION 是内核版本字符串。该命令在调用 /usr/lib/kernel/install.d/*.install/etc/kernel/install.d/*.install 插件时向它们传递如下参数:

remove KERNEL-VERSION /boot/MACHINE-ID/KERNEL-VERSION/

然后 kernel-install 将会完整删除整个 /boot/MACHINE-ID/KERNEL-VERSION/ 目录及其内容。

有两个默认的插件将会被调用,并执行下列操作:

  • 50-depmod.install 将会删除由 depmod 命令为该内核生成的文件。

  • 90-loaderentry.install 将会删除 /boot/loader/entries/MACHINE-ID-KERNEL-VERSION.conf 文件。

退出状态

如果每一个可执行插件都返回 0 或 77 ,那么返回 0 表示成功;否则返回非零值表示失败。

文件

/usr/lib/kernel/install.d/*.install /etc/kernel/install.d/*.install

可执行插件(一般都是脚本)

/etc/kernel/cmdline /proc/cmdline

将会被 90-loaderentry.install 插件读取。 /etc/kernel/cmdline 记录了内核引导选项。 如果该文件不存在,则使用 /proc/cmdline 文件。

/etc/kernel/tries

如果该文件存在,那么 90-loaderentry.install 插件将会从中读取一个整数值。 在生成启动项描述文件时,该整数将被嵌入文件名称中(也就是 /boot/loader/entries/MACHINE-ID-KERNEL-VERSION+TRIES.conf)。 对于实现了启动计数机制的 systemd-boot(7) 引导管理器来说,是很有意义的。

/etc/machine-id

记录了本系统的 MACHINE-ID

/etc/os-release /usr/lib/os-release

记录了用作启动选项标题的 PRETTY_NAME

参见

machine-id(5),os-release(5),depmod(8),systemd-boot(7),Boot Loader Specification