lsinitrdコマンドの使い方

#1 lsinitrdコマンドとは?
initramfsの中身を表示するコマンドです。

#2 環境
VMware Workstation 15 Player上の仮想マシンを使いました。
仮想マシンの版数は以下のとりです。

```console:CentOSの版数
[root@server ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
```

```console:カーネル版数
[root@server ~]# uname -r
3.10.0-957.el
```

#3 オプション一覧

```
[root@server ~]# lsinitrd -h
Usage: lsinitrd [options] [<initramfs file> [<filename> [<filename> [...] ]]]
Usage: lsinitrd [options] -k <kernel version>

-h, --help                  print a help message and exit.
-s, --size                  sort the contents of the initramfs by size.
-m, --mod                   list modules.
-f, --file <filename>       print the contents of <filename>.
-k, --kver <kernel version> inspect the initramfs of <kernel version>.
```


#4 オプションなしで実行した場合
オプションなしでlsinitrdを実行すると、`/boot`配下のinitramfsの中身を表示します。

```console:
[root@server ~]# lsinitrd
Image: /boot/initramfs-3.10.0-957.el7.x86_64.img: 18M
========================================================================
Version: dracut-033-554.el7

Arguments: -f

dracut modules:
bash
nss-softokn
-snip-
```



#5 initramfsの中身をファイルサイズ順に表示する方法(-s)

```
[root@server ~]# lsinitrd -s

Image: /boot/initramfs-3.10.0-957.el7.x86_64.img: 18M
========================================================================
Version: dracut-033-554.el7


========================================================================
-rw-r--r--   1 root     root            0 Nov  8 21:24 etc/fstab.empty
-rw-r--r--   1 root     root            0 Nov  8 21:24 usr/lib/dracut/need-initqueue

-snip-

-rwxr-xr-x   1 root     root      1616360 Nov  8 21:24 usr/lib/systemd/systemd
-rwxr-xr-x   1 root     root      2107544 Nov  8 21:24 usr/lib64/libc-2.17.so
-rwxr-xr-x   1 root     root      2513000 Nov  8 21:24 usr/lib64/libcrypto.so.1.0.2k
========================================================================
```


#6 モジュール一覧を確認する方法(-m)

```
[root@server ~]# lsinitrd -m
Image: test.img: 18M
========================================================================
Version: dracut-033-554.el7

dracut modules:
bash
nss-softokn
i18n
network
ifcfg
drm
plymouth
kernel-modules
qemu
qemu-net
resume
rootfs-block
terminfo
udev-rules
biosdevname
systemd
usrmount
base
fs-lib
microcode_ctl-fw_dir_override
shutdown
========================================================================
```

#7 initramfsに含まれているファイルの中身を確認する方法(-f)

```console:hostnameファイルの中身
[root@server ~]# lsinitrd -f /etc/hostname
server
```

```console:tuned.confファイルの中身
[root@server ~]# lsinitrd -f /etc/modprobe.d/tuned.conf
# This file specifies additional parameters to kernel modules added by Tuned.
# Its content is set by the Tuned modules plugin.
#
# Please do not edit this file. Content of this file can be overwritten by
# switch of Tuned profile.
-snip-
```



#8 その他
lsinitrdコマンド以外のコマンドを使って、initramfsの中身を確認してみます。


```console:作業用ディレクトリの作成
[root@server ~]# mkdir work
[root@server ~]# cd work/
```
作業用ディレクトリにinitramfsをコピーします。

```console:initramfsのコピー
[root@server work]# cp /boot/initramfs-3.10.0-957.el7.x86_64.img .
```

ファイル種別を確認します。gzipで圧縮されたファイルであることがわかります。

```console:ファイル種別の確認
[root@server work]# file initramfs-3.10.0-957.el7.x86_64.img
initramfs-3.10.0-957.el7.x86_64.img: gzip compressed data, from Unix, last modified: Fri Nov  8 21:24:15 2019, max compression
```

gunzipコマンドを使って、ファイルを解凍します。

```console:ファイルの解凍
[root@server work]# gunzip -S .img initramfs-3.10.0-957.el7.x86_64.img
```

解凍したファイル種別を確認します。cpioでアーカイブされていることがわかります。

```console:ファイル種別の確認
[root@server work]# file initramfs-3.10.0-957.el7.x86_64
initramfs-3.10.0-957.el7.x86_64: ASCII cpio archive (SVR4 with no CRC)
```

cpioコマンドを使って、アーカイブファイルを展開します。

```console:アーカイブの展開
[root@server work]# cpio -id < initramfs-3.10.0-957.el7.x86_64
76435 blocks
```

展開したファイル一覧を確認します。

```console:展開したファイル一覧
[root@server work]# ls -F
bin@  dev/  etc/  init@  initramfs-3.10.0-957.el7.x86_64  lib@  lib64@  proc/  root/  run/  sbin@  shutdown*  sys/  sysroot/  tmp/  usr/  var/
```



#Z 参考情報