CentOS/RHEL 6:如何提取 initramfs 镜像并编辑/查看

在某些情况下,我们希望提取 initramfs 镜像文件以检查它里面的内容。

操作步骤

  1. 找到 initramfs 镜像并检查文件类型。
# ls -la /boot/initramfs-$(uname -r).img
-rw-r--r--. 1 root root 16196566 Nov  4  2015 /boot/initramfs-2.6.32-358.el6.x86_64.img
# file /boot/initramfs-2.6.32-358.el6.x86_64.img
/boot/initramfs-2.6.32-358.el6.x86_64.img: gzip compressed data, from Unix, last modified: Wed Nov  4 18:31:54 2015, max compression
  1. 在 /tmp 中创建一个目录,并将 initramfs 镜像文件复制到该目录中(请检查 /tmp 是否有足够的空间来容纳 initramfs):
# mkdir /tmp/initrmafs
# cp /boot/initramfs-$(uname -r).img /tmp/initramfs
  1. 进入/tmp/initramfs并执行
# cd /tmp/initramfs
# gzip -dc /boot/initramfs-2.6.32-358.el6.x86_64.img | cpio -id
90556 blocks

上面的命令应该提取 initramfs 图像并创建我们可以调查的目录

# ls -lrt
total 15924
-rw-r--r-- 1 root root 16196566 Nov  4  2015 initramfs-2.6.32-358.el6.x86_64.img
drwxr-xr-x 2 root root     4096 Sep  2 11:01 pre-udev
drwxr-xr-x 2 root root     4096 Sep  2 11:01 cmdline
drwxr-xr-x 2 root root     4096 Sep  2 11:01 bin
drwxr-xr-x 2 root root     4096 Sep  2 11:01 proc
drwxr-xr-x 4 root root     4096 Sep  2 11:01 var
drwxrwxrwt 2 root root     4096 Sep  2 11:01 tmp
..

现在我们可以检查和编辑 initramfs 镜像,例如引导日志位于 /var/log 目录中。
我们还可以检查 initramfs 中加载了哪些模块,为此请检查 /lib/modules 或者 /lib/dracut 。
也可以编辑 /etc/ 中的任何文件,例如 /etc/multipath.conf 需要改变了。

  1. 现在当进行更改以重新创建 initramfs 镜像时执行
# cd /tmp/initramfs
# rm initramfs-2.6.32-358.el6.x86_64.img
# find . | cpio -H newc -o > initramfs-2.6.32-358.el6.x86_64.cpio
# cat initramfs-2.6.32-358.el6.x86_64.cpio | gzip -9 > /tmp/initramfs-2.6.32-358.el6.x86_64.img
  1. 现在我们可以将这个 initramfs 镜像(/tmp/initramfs-2.6.32-358.el6.x86_64.img)替换为 /boot/
# cp /tmp/initramfs-2.6.32-358.el6.x86_64.img /boot/
on  It Road.com

查看 initramfs 镜像内容

要仅列出 initramfs 镜像文件的内容,我们可以运行:

# lsinitrd /boot/initramfs-2.6.32-358.el6.x86_64.img
/boot/initramfs-2.6.32-358.el6.x86_64.img: 16M
========================================================================
========================================================================
drwxr-xr-x  24 root     root            0 Nov  4  2015 .
drwxr-xr-x   2 root     root            0 Nov  4  2015 pre-udev
-rwxr-xr-x   1 root     root         1208 Jan  9  2013 pre-udev/30resume-genrules.sh
-rwxr-xr-x   1 root     root          149 Jan 15  2010 pre-udev/30mdmon-pre-udev.sh
....
日期:2020-09-17 00:11:57 来源:oir作者:oir