编完linux内核只有vmlinz没有initrd.img怎么办?教你为linux内核生成initrd.img

在进行内核编译时,通过以下命令可以将内核编译并生成到指定的目录中。

但是如果查看boot目录,并不能找到initrd.img文件。

因此需要自行制作initrd.img,特别是交叉编译的情况。

下面的代码是交叉编译环境下常用的内核编译和安装方式:

make menuconfig
make -j12
make  INSTALL_PATH=~/jail/5.4.61out/boot   install
make  INSTALL_MOD_PATH=~/jail/5.4.61out     modules_install

// make  INSTALL_MOD_STRIP=1  modules_install 可以有效减小/lib/modules目录的体积

如果直接make install可以将编译的内核安装到/boot目录中,同时会生成initrd.img,但是此initrd.img是与本机匹配的,复制到目标机器上可能是不能使用的。

在CentOS之类下面一般是用mkinitrd命令,

而在Ubuntu/Debian下用的是mkinitramfs命令.

它们的用法稍微有些不一样,如下所示:

注意

下面的命令要在目标机上执行。否则生成的是用于本机的initrd。

这个命令的作用是把/lib/modules/5.4.61中对应的.ko驱动打包到initrd.img文件中。

其中5.4.61为/lib/modules下的目录名称(内核的版本号)

命令执行完成后,就会生成对应的initrd.img。

#centos
mkinitrd   /boot/initrd.img    5.4.61

#ubuntu
mkinitramfs  5.4.61   -o /boot/initrd.img

附:initrd.img文件解压缩以及重新打包的命令:

#Extract
gunzip < /boot/initrd.img | cpio -i –make-directories

#Repack
find ./ | cpio -H newc -o > initrd.cpio
gzip initrd.cpio
mv initrd.cpio.gz initrd.img

参考:

mkinitrd 与 mkinitramfs - 摩斯电码 - 博客园

 The Linux Kernel HOWTO: Appendix A - Creating initrd.img file

initrd/initramfs文件制作及解压

VMX(3) -- VMXON Region_河马虚拟化的博客-CSDN博客

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路边闲人2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值