5.5. 验证初始 RAM 文件系统镜像
初始 RAM 文件系统映像的作用是预加载块设备模块,如 IDE、SCSI 或 RAID,以便可以访问和挂载这些模块通常所在的根文件系统。在红帽企业 Linux 7 系统上,每当使用 Yum、PackageKit 或 RPM 软件包管理器安装新内核时,安装脚本始终会调用 Dracut 实用程序来创建 initramfs (初始 RAM 文件系统映像)。
如果您通过修改 /etc/sysctl.conf 文件或其他 sysctl 配置文件更改内核属性,如果在引导过程早期使用了更改的设置,则可能需要运行 dracut -f 命令来重建初始 RAM 文件系统镜像。例如,如果您已对联网进行了更改,并且从网络连接存储引导。
在 IBM eServer System i 以外的所有构架中(请参阅 “在 IBM eServer System i 上验证初始 RAM 文件系统镜像和内核”一节),您可以通过运行 dracut 命令创建 initramfs。但是,您通常不需要手动创建 initramfs :如果从红帽分发的 RPM 软件包安装或升级了内核及其相关软件包,则会自动执行这一步。
您可以按照以下步骤验证与当前内核版本对应的 initramfs 是否存在,并在 grub.cfg 配置文件中正确指定:
验证初始 RAM 文件系统镜像
以
root身份列出/boot目录中的内容,并使用最新(最新的)版本号查找内核(vmlinuz:-kernel_version)和 initramfs- kernel_version例 5.1. 确保内核和 initramfs 版本匹配
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 5.1 “确保内核和 initramfs 版本匹配” 显示:
-
我们已安装三个内核(或者
/boot目录中存在三个内核文件) -
最新的内核是
vmlinuz-3.10.0-78.el7.x86_64,并且 与内核版本
initramfs-3.10.0-78.el7.x86_64kdump.img相匹配的 initramfs 文件也存在。重要在
/boot目录中,您可能找到几个initramfs-kernel_versionkdump.img文件。这些是由 Kdump 机制创建的特殊文件用于内核调试目的,不用于引导系统,可以安全地忽略。有关kdump的详情请参考 Red Hat Enterprise Linux 7 内核崩溃指南。
-
我们已安装三个内核(或者
如果您的
initramfs-kernel_version文件与/boot目录中的最新内核版本不匹配,或者在某些情况下,您可能需要使用 Dracut 实用程序生成initramfs文件。简单地在不使用选项的情况下以root身份调用dracut会导致它在/boot中为该目录中存在的最新内核生成initramfs文件:dracut
# dracutCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您希望
dracut覆盖现有的initramfs,则必须使用-f,--force选项(例如,如果您的initramfs已损坏)。Othertherdracut拒绝覆盖现有的initramfs文件:dracut Does not override existing initramfs (/boot/initramfs-3.10.0-78.el7.x86_64.img) without --force# dracut Does not override existing initramfs (/boot/initramfs-3.10.0-78.el7.x86_64.img) without --forceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以通过调用
dracut initramfs _namekernel_version在当前目录中创建 initramfs:dracut "initramfs-$(uname -r).img" $(uname -r)
# dracut "initramfs-$(uname -r).img" $(uname -r)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您需要指定预加载的特定内核模块,请在
add_dracut)。您可以使用.koconf 配置文件的括号中添加这些模块的名称(减去任何文件名后缀,如.lsinitrd文件的文件内容:initramfs_file 命令列出 dracut 创建的 initramfs 镜像Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关选项和用法的更多信息
,请参阅 mandracut 和 man dracut.conf。检查
/boot/grub2/grub.cfg配置文件,以确保您正在引导的内核版本存在initramfs-kernel_version.img文件。例如:grep initramfs /boot/grub2/grub.cfg initrd16 /initramfs-3.10.0-123.el7.x86_64.img initrd16 /initramfs-0-rescue-6d547dbfd01c46f6a4c1baa8c4743f57.img
# grep initramfs /boot/grub2/grub.cfg initrd16 /initramfs-3.10.0-123.el7.x86_64.img initrd16 /initramfs-0-rescue-6d547dbfd01c46f6a4c1baa8c4743f57.imgCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如需更多信息,请参阅 第 5.6 节 “验证引导装载程序”。
在 IBM eServer System i 上验证初始 RAM 文件系统镜像和内核
在 IBM eServer System i 机器上,初始 RAM 文件系统和内核文件合并到一个文件中,该文件通过 addRamDisk 命令创建。如果从红帽分发的 RPM 软件包安装或升级了内核及其相关软件包,则会自动执行此步骤,因此不需要手动执行该步骤。要验证它是否已创建,请以 root 用户身份 运行以下命令,确保 /boot/vmlinitrd-kernel_version 文件已存在:
ls -l /boot/
# ls -l /boot/
kernel_version 需要与刚才安装的内核版本匹配。
取消对初始 RAM 文件系统镜像所做的更改
例如,在某些情形中,如果您错误配置系统且不再引导,则需要按照以下步骤撤销对初始 RAM 文件系统镜像所做的更改:
撤销对初始 RAM 文件系统镜像的更改
- 在 GRUB 菜单中选择救援内核重新引导系统。
-
更改导致
initramfs出现故障的错误设置。 以 root 用户身份运行以下命令,使用正确的设置重新创建
initramfs:dracut --kver kernel_version --force
# dracut --kver kernel_version --forceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
例如,当您在 sysctl.conf 文件中错误设置了 vm.nr_hugepages 时,上述步骤可能很有用。由于 sysctl.conf 文件包含在 initramfs 中,新的 vm.nr_hugepages 设置会应用到 initramfs 中,并导致重新构建 initramfs。但是,由于设置不正确,因此新的 initramfs 会中断,且新构建的内核不会引导,因此需要使用上述步骤更正设置。
列出初始 RAM 文件系统镜像的内容
要列出 initramfs 中包含的文件,以 root 用户身份运行以下命令:
lsinitrd
# lsinitrd
要只列出 /etc 目录中的文件,请使用以下命令:
lsinitrd | grep etc/
# lsinitrd | grep etc/
要输出存储在 initramfs 中为当前内核保存的特定文件的内容,请使用 -f 选项:
lsinitrd -f filename
# lsinitrd -f filename
例如,要输出 sysctl.conf 的内容,请使用以下命令:
lsinitrd -f /etc/sysctl.conf
# lsinitrd -f /etc/sysctl.conf
要指定内核版本,请使用 --kver 选项:
lsinitrd --kver kernel_version -f /etc/sysctl.conf
# lsinitrd --kver kernel_version -f /etc/sysctl.conf
例如,要列出有关内核版本 3.10.0-327.10.1.el7.x86_64 的信息,请使用以下命令:
lsinitrd --kver 3.10.0-327.10.1.el7.x86_64 -f /etc/sysctl.conf
# lsinitrd --kver 3.10.0-327.10.1.el7.x86_64 -f /etc/sysctl.conf