在某些情况下,可能需要解压initramfs映像文件以检查内置的文件信息。与以前的版本不同,在RHEL7上,对initramfs映像文件使用cpio命令不会直接解压所有文件, 将会给出一些错误。例如:

# ls -la /boot/initramfs-$(uname -r).img
-rw------- 1 root root 19602671 Feb  4  2016 /boot/initramfs-3.10.0-229.el7.x86_64.img
# file initramfs-3.10.0-229.el7.x86_64.img
initramfs-3.10.0-229.el7.x86_64.img: gzip compressed data, from Unix, last modified: Thu Feb  4 16:02:04 2016, max compression
# gzip -dc initramfs-3.10.0-229.el7.x86_64.img | cpio -id      --- 不会直接解压所有文件, 将会给出一些错误。

1.查看initramfs镜像

如果你要列出initramfs映像文件的内容,可以使用lsinitrd命令:

# lsinitrd /boot/initramfs-3.10.0-229.el7.x86_64.img  | more
Image: /boot/initramfs-3.10.0-229.el7.x86_64.img: 19M
========================================================================
Version: dracut-033-359.el7

Arguments: -f

dracut modules:
bash
nss-softokn
i18n
network
ifcfg
drm
plymouth
dm
kernel-modules
lvm
resume
rootfs-block
terminfo
udev-rules
biosdevname
systemd
usrmount
base
fs-lib
shutdown
========================================================================
drwxr-xr-x  12 root     root            0 May 23 10:27 .
crw-r--r--   1 root     root       5,   1 May 23 10:27 dev/console
crw-r--r--   1 root     root       1,  11 May 23 10:27 dev/kmsg
crw-r--r--   1 root     root       1,   3 May 23 10:27 dev/null

2.解压initramfs镜像

要在RHEL7上解压它,需要使用skipcpio:

a.将initramfs映像文件复制到某个目录。

# mkdir /tmp/initramfs
# cp /boot/initramfs-3.10.0-229.el7.x86_64.img /tmp/initramfs/

b.使用/usr/lib/dracut/skipcpio命令解压initramfs镜像:

# cd /tmp/initramfs
# /usr/lib/dracut/skipcpio initramfs-3.10.0-229.el7.x86_64.img | zcat | cpio -ivd
.
var
var/lock
var/run
lib

其中skipcpio是dracut的内置工具。

附, Ubuntu和REHL系列稍有不同,在debian系的发行版本上一般使用的unmkinitramfs命令来解压initramfs文件

mkdir /tmp/initramfs
unmkinitramfs initrd.img-4.15.0-46-generic .

参考链接

【腾讯云】境外1核2G服务器低至2折,半价续费券限量免费领取!
https://cloud.tencent.com/act/cps/redirect?redirect=1068&cps_key=e4b50f6c64a4480367f8a8d16fd07c5a&from=console

标签: dracut, initramfs, gzip, lsinitrd, skipcpio, unmkinitramfs

添加新评论