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"
とかで探せる