How To Update Modules In Iniramfs Fastly

Home » CentOS » How To Update Modules In Iniramfs Fastly
CentOS 6 Comments

I know dracut can update modules in initramfs, but I think it is too slow. So I’m wondering what is the fastest way to update modules in initramfs of CentOS 7?

Thanks!

6 thoughts on - How To Update Modules In Iniramfs Fastly

  • This solution does not work in CentOS 7, because initramfs in CentOS 7 is not a gzipped cpio:
    [root@bogon a]# file /boot/initramfs-3.10.0-693.el7.x86_64.img
    /boot/initramfs-3.10.0-693.el7.x86_64.img: ASCII cpio archive (SVR4 with no CRC)
    If I use
    zcat /boot/initrd-2.6.18-164.6.1.el5.img | cpio -idmv to uncompress initramfs, it will report errors:
    [root@bogon a]# zcat /boot/initramfs-3.10.0-693.el7.x86_64.img | cpio -idmv

    gzip: /boot/initramfs-3.10.0-693.el7.x86_64.img: not in gzip format
    cpio: premature end of archive

  • Maybe some ucode archive is in front of the initrd archive.

    Did you try to unpack it without uncompressing it? Whats the contents?

  • [root@bogon a]# cpio -id < /boot/initramfs-3.10.0-693.el7.x86_64.img 28 blocks [root@bogon a]# ls -R .: early_cpio kernel ./kernel: x86 ./kernel/x86: microcode ./kernel/x86/microcode: GenuineIntel.bin Obviously, above is not what I want. In order to get full contents of initramfs, I have to use skipcpio to skip initial cpio of initramfs: [root@bogon a]# /usr/lib/dracut/skipcpio /boot/initramfs-3.10.0-693.el7.x86_64.img | zcat | cpio -id 85469 blocks [root@bogon a]# ls bin etc lib proc run shutdown sysroot usr dev init lib64 root sbin sys tmp var I can use skipcpio to get full contents of initramfs, and then edit files in it. But the problem is how to recreate initramfs by extracted contents?