ubuntu 11.04 编译内核

今天完整的尝试了一把在ubuntu 11.04下更换内核的整个过程,现在写下来做个纪念。

1.到www.kernel.org下载一个版本比较接近的内核源码,并解压。如果以前进行过编译,可以执行make mrproper清除上的产生的配置文件、临时文件

2.从/boot目录下,拷贝config-2.6.35-22-generic文件到源码目录下,并命名为.config,这个文件用来记录当前内核的编译选项,尤其能够保证新编译出的内核带有系统必需的硬件驱动。之前曾经有过一次教训,就是对一个服务器的linux系统升级内核,没有使用系统/boot(有的发行版在/proc/config.gz)下的config,而是用的内核源码自带的config,结果内核编译安装后,发现raid的驱动没有带上,无法启动。

3.make menuconfig,选择编译选项。保存后退出

4.make (编译内核,有的教程中提到了make bzImage,貌似这个命令已经被make取代了)

5.make modules(编译内核模块)

6.make modules_intall(将内核ko模块拷贝到/lib/module-version,如果使用INSTALL_MOD_DIR参数,可以讲ko安装到/lib/module-version的一个特定子目录下)

7.make install(将编译出的vmlinux拷贝的/boot目录,并更新/boot/grub/grub.cfg)

我看了很多编译内核的教程,就写到这里就结束了,但是当我实际操练了一下发现在这之后还应该有两步:

8.mkinitramfs-kpkg -o /boot/initrd.img-module-version  module-version,比如mkinitramfs-kpkg -o initrd.img-2.6.38.8    2.6.38.8,这个命令会到/lib/modules/2.6.38.8下提取需要的ko,将其打包制成一个ramfs中,在引导开机的过程中使用

9.更新/boot/grub/grub.cfg文件,由于ubuntu 11.04使用了版本为1.99的grub,也被称为grub 2,它与之前的grub不太相同,配置文件不再放到menu.lst中了,而且,配置文件的格式也不同了。在之前,make install的时候,grub.cfg中已经增加了新内核的引导条目,但是缺少initrd这一项,所以应该补齐(首先要执行chmod +w grub.cfg为其添加写权限),比如加入initrd  /boot/initrd.img-2.6.38.8,一个完整的内核启动记录应该如下:

menuentry 'Ubuntu, with Linux 2.6.38.8' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        set gfxpayload=$linux_gfx_mode
        insmod part_msdos
        insmod ext2
        set root='(hd0,msdos1)'
        search --no-floppy --fs-uuid --set=root da48f6f6-7872-478c-9112-e4dad6d3efef
        linux   /boot/vmlinuz-2.6.38.8 root=/dev/sda1 ro   quiet splash vt.handoff=7
        initrd  /boot/initrd.img-2.6.38.8
}



以上全部完成之后,reboot重启后,执行uname -a,就可以看到新的内核被启用了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值