CentOS7でinitramfsを展開する

はじめに

CentOS7であるモジュールがカーネルに組み込まれているか知りたくなったが従来の方法では展開出来なかったのでまとめ

今までの手順でgunzipをcpioにパイプすると

1gzip: initramfs.gz: not in gzip format

みたいに怒られてうまくいかない

展開方法

まずbinwalkというアプリケーションが必要なのでインストール

インストール

https://github.com/devttys0/binwalk
からクローンしてインストールする

1$ git clone https://github.com/devttys0/binwalk
2$ cd binwalk
3$ sudo python setup.py install

展開する

バイナリでgzipが始まるところ以降を展開したいので調べる

 1$ binwalk /boot/initramfs-3.10.0-514.2.2.el7.x86_64.img
 2
 3DECIMAL       HEXADECIMAL     DESCRIPTION
 4--------------------------------------------------------------------------------
 50             0x0             ASCII cpio archive (SVR4 with no CRC), file name: ".", file name length: "0x00000002", file size: "0x00000000"
 6112           0x70            ASCII cpio archive (SVR4 with no CRC), file name: "kernel", file name length: "0x00000007", file size: "0x00000000"
 7232           0xE8            ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86", file name length: "0x0000000B", file size: "0x00000000"
 8356           0x164           ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode", file name length: "0x00000015", file size: "0x00000000"
 9488           0x1E8           ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode/GenuineIntel.bin", file name length: "0x00000026", file size: "0x00005800"
1023164         0x5A7C          ASCII cpio archive (SVR4 with no CRC), file name: "early_cpio", file name length: "0x0000000B", file size: "0x00000002"
1123292         0x5AFC          ASCII cpio archive (SVR4 with no CRC), file name: "TRAILER!!!", file name length: "0x0000000B", file size: "0x00000000"
1223552         0x5C00          gzip compressed data, maximum compression, from Unix, last modified: 2017-01-03 12:15:21
132578829       0x27598D        MySQL MISAM index file Version 6

23552byte以降が当該バイナリなのでこれを展開する

1$ dd if=/boot/initramfs-3.10.0-514.2.2.el7.x86_64.img of=initramfs-output.gz bs=23552 skip=1
2$ gunzip initramfs-output.gz
3$ mkdir temp
4$ cd temp
5$ cpio -i -d -H newc --no-absolute-filenames < ../initramfs-output.gz

展開さえ出来れば

1$ find -name "module.ko"

とかで探せる

参考記事