linux内核 initrd,linux内核initrd文件自定义方法

451980

重新编译内核后,可能加入了自定义的模块,就有可能需要修改init文件,而init文件就在initrd中,这里记录下操作步骤,以防遗忘。1.  cp  /boot/initrd-3.2.img  /tmp/mylinux/initrd-3.2.img.gz    这里之所以进行改名,是因为initrd-3.2.img是经过gzip压缩过的,所以需要对其解压,但是gzip对解压的文件的文件后缀名又有要求,所以就先进行改名。2.   gunzip  initrd-3.2.9.img.gz3.   cpio  -id  经过以上三步,就在当前目录下解压了initrd文件,从而得到了init文件。根据自己的需求修改init文件后,通过下面命令重新生成initrd文件。4.   find  .  |  cpio  -H  newc  -o  |  gzip  -9  >  /boot/initrd-3.2.9.img   注意一下内容摘自网上资料,留作参考:en_init_cpio获取 gen_init_cpio,工具 ,gen_init_cpio是编译内核时得到的,在内核源代码的 usr 目录下,我们可以通过 以下步骤获取它,进入内核源代码 执行 :# make menuconfig# make usr/这样即编译好gen_init_cpio,gen_initramfs_list.sh 在内核源代码的 script 目录下,将这两个 文件 copy 到 /tmp 目录下,/tmp/initrd 为 解压好的 initrd 目录,执行以下命令 制作initrd :#制作initrd :# gen_initramfs_list.sh initrd/ > filelist# gen_init_cpio filelist >initrd.img# gzip initrd.img# mv initrd.img initrd-'uname –r’.img只有用这个方式压缩的initrd ,在Linux系统重启的时候才能 一正确的文件格式 boot 起来,也可以用这种方式修改安装光盘的initrd文件 然后 进行系统安装。3. 如何在 initrd 中添加新的驱动,以 ahci.ko 为例3.1 gen_init_cpio# cp initrd-‘uname –r‘.img /tmp/initrd;cd /tmp/initrd#cpio –ivdum # mv initrd-‘uname –r’.img ../#cd /tmp/initrd#vim init加上一行 insmod /lib/ahci.ko#cp ahci.ko lib/#cd  /tmp# gen_initramfs_list.sh initrd/ > filelist# gen_init_cpio filelist >initrd.img# gzip initrd.img# mv initrd.img initrd-‘uname –r’.img至此,新的initrd文件initrd-‘uname –r’.img中就包含了ahci的驱动程序了 ,这种方式是最简单有效的。 3.2 mkinitrd(1) Add “alias scsi_hostadapter ahci” at /etc/modprobe.conf(2) copy ahci.ko to “/lib/module/$(kernel-version)”/kernel/drivers/scsi”(3) mkinitrd initrd.img ‘uname -r’至此,新的initrd文件initrd-‘uname –r’.img中就包含了ahci的驱动程序了 .#释放cpio格式的initrd:       mv initrd.img imitrd.img.gz       gunzip initrd.img.gz       cpio -i --make-directories initrd.img#释放centos6.2系统的initramfs.img1."gunzip initrd.img-2.6.27-7-generic.gz",得到一个未压缩的initrd.img-2.6.27-7-generic2. ”cpio -iv initrd.img-2.6.27-7-generic",提取成功#制作cpio格式的initrd(新2012年使用过的)#cd /root/busybox-1.15.3/rootfs9260#find . | cpio -H newc -o > ../initrd_cpio.img#制作cpio格式的initrd(2009年制作的LFS的方式):dd if=/dev/zero of=/tmp/rootfs bs=1k count=35000losetup /dev/loop0 /tmp/rootfsmkfs.ext2 –F –i 2000 /tmp/rootfsmkdir /tmp/loopmount –o loop /tmp/rootfs /tmp/loop#然后将刚才建立的基本系统拷贝到/tmp/loopcp /lfs/* /tmp/loop –arfpfind . | cpio –o –H newc | gzip –c > /tmp/initrd.img

11-03 20:56

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值