In CentOS 7 the initramfs consists of two concatenated gzipped cpio files. If you want to check what files and probably configuration files are included you can unpack it, but you should use
the dracut tool skipcpio
/usr/lib/dracut/skipcpio <initramfs-file> | zcat | cpio -id --no-absolute-filenames
The following is the output of a CentOS 7
[root@srv ~]# mkdir initramfs-unpacked [root@srv ~]# cd initramfs-unpacked/ [root@srv initramfs-unpacked]# /usr/lib/dracut/skipcpio /boot/initramfs-3.10.0-957.10.1.el7.x86_64.img | zcat | cpio -id --no-absolute-filenames 164026 blocks [root@srv initramfs-unpacked]# ls -al общо 52 drwxr-xr-x. 12 root root 4096 1 Apr 11,48 . dr-xr-x---. 5 root root 4096 1 Apr 11,48 .. lrwxrwxrwx. 1 root root 7 1 Apr 11,48 bin -> usr/bin drwxr-xr-x. 2 root root 4096 1 Apr 11,48 dev drwxr-xr-x. 9 root root 4096 1 Apr 11,48 etc lrwxrwxrwx. 1 root root 23 1 Apr 11,48 init -> usr/lib/systemd/systemd lrwxrwxrwx. 1 root root 7 1 Apr 11,48 lib -> usr/lib lrwxrwxrwx. 1 root root 9 1 Apr 11,48 lib64 -> usr/lib64 drwxr-xr-x. 2 root root 4096 1 Apr 11,48 proc drwxr-xr-x. 2 root root 4096 1 Apr 11,48 root drwxr-xr-x. 2 root root 4096 1 Apr 11,48 run lrwxrwxrwx. 1 root root 8 1 Apr 11,48 sbin -> usr/sbin -rwxr-xr-x. 1 root root 3117 1 Apr 11,48 shutdown drwxr-xr-x. 2 root root 4096 1 Apr 11,48 sys drwxr-xr-x. 2 root root 4096 1 Apr 11,48 sysroot drwxr-xr-x. 2 root root 4096 1 Apr 11,48 tmp drwxr-xr-x. 7 root root 4096 1 Apr 11,48 usr drwxr-xr-x. 3 root root 4096 1 Apr 11,48 var [root@srv initramfs-unpacked]# ls -al /boot/ общо 114812 dr-xr-xr-x. 6 root root 4096 30 Mar 2,36 . dr-xr-xr-x. 19 root root 4096 30 Mar 2,37 .. -rw-r--r--. 1 root root 151923 18 Mar 15,10 config-3.10.0-957.10.1.el7.x86_64 drwxr-xr-x. 3 root root 4096 28 Jan 20,52 efi drwxr-xr-x. 2 root root 4096 30 Mar 2,29 grub drwx------. 5 root root 4096 29 Mar 13,50 grub2 -rw-------. 1 root root 44256471 28 Jan 20,57 initramfs-0-rescue-05cb8c7b39fe0f70e3ce97e5beab809d.img -rw-------. 1 root root 44821343 29 Mar 13,50 initramfs-3.10.0-957.10.1.el7.x86_64.img -rw-------. 1 root root 10982937 30 Mar 2,36 initramfs-3.10.0-957.10.1.el7.x86_64kdump.img drwx------. 2 root root 16384 29 Mar 13,46 lost+found -rw-r--r--. 1 root root 314087 18 Mar 15,10 symvers-3.10.0-957.10.1.el7.x86_64.gz -rw-------. 1 root root 3544363 18 Mar 15,10 System.map-3.10.0-957.10.1.el7.x86_64 -rwxr-xr-x. 1 root root 6639808 28 Jan 20,57 vmlinuz-0-rescue-05cb8c7b39fe0f70e3ce97e5beab809d -rwxr-xr-x. 1 root root 6643904 18 Mar 15,10 vmlinuz-3.10.0-957.10.1.el7.x86_64 -rw-r--r--. 1 root root 171 18 Mar 15,10 .vmlinuz-3.10.0-957.10.1.el7.x86_64.hmac
You can see the init is handled by systemd!
Not using dracut skipcpio
early_cpio – dracut set this file at the beginning of the CentOS 7 initramfs. It contains the CPU microcode.
You can check it with “file” command and if it shows: “ASCII cpio archive (SVR4 with no CRC)” there is a microcode prepended to the initramfs file.
And here without the dracut skipcpio tool with an example:
- cpio the original initramfs and write down the number of blocks reported
- use dd to skip the first blocks from the above step
- Uncompress (and unpack) the file created by dd – this is the real initramfs file.
Here is how you can do it:
[root@srv ~]# file /boot/initramfs-3.10.0-957.10.1.el7.x86_64.img /boot/initramfs-3.10.0-957.10.1.el7.x86_64.img: ASCII cpio archive (SVR4 with no CRC) [root@srv ~]# mkdir initramfs-unpacked-3 [root@srv ~]# cd initramfs-unpacked-3 [root@srv initramfs-unpacked-3]# cat /boot/initramfs-3.10.0-957.10.1.el7.x86_64.img | cpio -idmv . early_cpio kernel kernel/x86 kernel/x86/microcode kernel/x86/microcode/AuthenticAMD.bin kernel/x86/microcode/GenuineIntel.bin 3412 blocks [root@srv initramfs-unpacked-3]# dd if=/boot/initramfs-3.10.0-957.10.1.el7.x86_64.img of=initramfs-tmp.img bs=512 skip=3412 84129+1 records in 84129+1 records out 43074399 bytes (43 MB) copied, 0.191311 s, 225 MB/s [root@srv initramfs-unpacked-3]# ls early_cpio initramfs-tmp.img kernel [root@srv initramfs-unpacked-3]# file initramfs-tmp.img initramfs-tmp.img: gzip compressed data, from Unix, last modified: Fri Mar 29 13:49:41 2019, max compression [root@srv initramfs-unpacked-3]# zcat ./initramfs-tmp.img | cpio -idm 164026 blocks [root@srv initramfs-unpacked-3]# ls -al total 42128 drwxr-xr-x. 13 root root 4096 Apr 1 12:38 . dr-xr-x---. 10 root root 4096 Apr 1 12:38 .. lrwxrwxrwx. 1 root root 7 Apr 1 12:38 bin -> usr/bin drwxr-xr-x. 2 root root 4096 Apr 1 12:38 dev -rw-r--r--. 1 root root 2 Mar 29 13:49 early_cpio drwxr-xr-x. 9 root root 4096 Apr 1 12:38 etc lrwxrwxrwx. 1 root root 23 Apr 1 12:38 init -> usr/lib/systemd/systemd -rw-r--r--. 1 root root 43074399 Apr 1 12:35 initramfs-tmp.img drwxr-xr-x. 3 root root 4096 Mar 29 13:49 kernel lrwxrwxrwx. 1 root root 7 Apr 1 12:38 lib -> usr/lib lrwxrwxrwx. 1 root root 9 Apr 1 12:38 lib64 -> usr/lib64 drwxr-xr-x. 2 root root 4096 Mar 29 13:49 proc drwxr-xr-x. 2 root root 4096 Mar 29 13:49 root drwxr-xr-x. 2 root root 4096 Mar 29 13:49 run lrwxrwxrwx. 1 root root 8 Apr 1 12:38 sbin -> usr/sbin -rwxr-xr-x. 1 root root 3117 Nov 2 17:40 shutdown drwxr-xr-x. 2 root root 4096 Mar 29 13:49 sys drwxr-xr-x. 2 root root 4096 Mar 29 13:49 sysroot drwxr-xr-x. 2 root root 4096 Mar 29 13:49 tmp drwxr-xr-x. 7 root root 4096 Apr 1 12:38 usr drwxr-xr-x. 3 root root 4096 Apr 1 12:38 var