linux内核的烧制流程,如何制作内核deb包

root@huang-VirtualBox:/usr/src/linux-3.4.6# cp /boot/config-3.0.0-22-generic ./.config

root@huang-VirtualBox:/usr/src/linux-3.4.6#make-kpkg --initrd kernel-image

###编译的过程,挺久的

###make-kpkg命令的简单使用介绍

###通常我们会看到这样的命令

###make-kpkg --initrd --revision huang.001 --append-to-version -20110107 kernel_image

###--initrd选项会让make-kpkg自动帮我们生成initramfs;

###--revision会给生成的deb文件加上一个版本信息。这个参数只是影响到文件名,如果不指定,默认会是“10.00.Custom”;

###--append-to-version也是一种版本信息,它不仅出现在deb安装包的文件名里,也会影响到kernel的名称,比如本例中,内核更新完成之后,用“uname -r”察看会得到“3.4.6-20110107”,不指定的话,默认内核版本号;

###kernel_image表示生成内核和默认模块的安装包,另外您也可以加上kernel_headers,这样make-kpkg会再生成一个内核头文件的安装包。

###本例中make-kpkg --initrd kernel-image

###产生的deb包为linux-image-3.4.6_3.4.6-10.00.Custom_i386.deb

root@huang-VirtualBox:/usr/src# ls

linux-3.4.6          linux-headers-3.0.0-22          linux-image-3.4.6_3.4.6-10.00.Custom_i386.deb

linux-3.4.6.tar.bz2  linux-headers-3.0.0-22-generic

###是不是就这样直接安装deb就好了,完成内核的安装替换了呢

###这里我碰到了一个问题,/boot目录下没有生成initrd.image文件,只有vmlinuz文件,怎么回事呢,有问题就得解决么,继续谷歌,百度么

###google了一把,找到资料说ubuntu10.04开始,用上面命令生成deb包,安装后不会生成initrd,说kernel-package作者是故意这样做的,现在是要通过hook来完成initrd的生成,没办法我刚好是ubuntu10.04之后,继续解决

###需要copy一个initramfs脚本到你要安装的rootfs的/etc/kernel/postinst.d/ 目录里,然后在安装kernel的时候post-install脚本会通过hook来完成initrd 的生成

root@huang-VirtualBox:/usr/src#cp /usr/share/kernel-package/examples/etc/kernel/postinst.d/initramfs  /etc/kernel/postinst.d/

###拷贝过来,保持此目录下只有此脚本,下面对deb进行安装

###直接dpkg -i linux-image-3.4.6_3.4.6-10.00.Custom_i386.deb

###安装完去看一下?

root@huang-VirtualBox:/boot# ls

initrd.img-3.4.6  System.map-3.4.6  vmlinuz-3.4.6config-3.4.6

###看到没!!!!!!这里省略了其他信息,再看看grub信息??

root@huang-VirtualBox:/boot#cat grub/grub.cfg

menuentry 'Ubuntu, with Linux 3.4.6' --class ubuntu --class gnu-linux --class gnu-

-class os {

recordfail

set gfxpayload=$linux_gfx_mode

insmod gzio

insmod part_msdos

insmod ext2

set root='(hd0,msdos1)'

search --no-floppy --fs-uuid --set=root be22009d-e2b0-40c5-b179-7f19a900c758

linux   /boot/vmlinuz-3.4.6 root=UUID=be22009d-e2b0-40c5-b179-7f19a900c758 ro   quiet splash vt.handoff=7

initrd  /boot/initrd.img-3.4.6

}

menuentry 'Ubuntu, with Linux 3.4.6 (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {

recordfail

insmod gzio

insmod part_msdos

insmod ext2

set root='(hd0,msdos1)'

search --no-floppy --fs-uuid --set=root be22009d-e2b0-40c5-b179-7f19a900c758

echo    'Loading Linux 3.4.6 ...'

linux   /boot/vmlinuz-3.4.6 root=UUID=be22009d-e2b0-40c5-b179-7f19a900c758 ro recovery nomodeset

echo    'Loading initial ramdisk ...'

initrd  /boot/initrd.img-3.4.6

}

###有木有!!!!成功了,有木有,呵呵,省略了其他信息

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值