您的位置:首页 > 运维架构 > Linux

Linux内核编译升级方法

2013-11-16 15:54 465 查看
本文资料采自网络,本人仅收集整理

以下是以ubuntu 9.04桌面作为编译环境,新内核版本为2.6.31.6为示范例子:

预备工作:

下载新内核源代码,地址:www.kernel.org

本地操作:

解压源代码

把linux源代码包(tar.bz2包)解压到/usr/src下。常用方法就是使用命令(参考 tar --help)

tar -xjf *.tar.bz2 /usr/src
解压完毕后可以在/usr/src目录下看到一个linux-2.6.31.6的文件夹
切换到工作目录

cd /usr/src/linux-2.6.31.6

配置内核

make menuconfig
可以根据自己要求进行配置,但是一般无需做出什么修改,采用默认设置,直接选择最后一项,保存退出即可。
开始编译

make
漫长等待~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~这个开始要花一个小时甚至更多的时间。
加入模块

make modules_install

生成可执行的内核引导文件

make bzImage

把新内核引导文件放入引导环境

简单的说就是将bzImage复制至/boot下

cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.31.6
//2.6.32内核的bzImage目录为arch/x86/boot/bzImage

清除现场

make clean
//这一步最好还是留到最后来做(现在可以先不跳过这一步),这样的话,即使你后面操作失误也可以回到这里重做,而不需要重新编译
将System.map放入引导环境

也就是把它复制至/boot下

cp System.map /boot/System.map-2.6.31.6

生成initrd.img

cd /lib/modules/2.6.31.6
sudo mkinitramfs -o /boot/initrd.img-2.6.31.6
//2.6.32可以为sudo update-initramfs -c - k 2.6.32
更新grub引导

sudo update-grub
它就会自动找到新的内核,并建立引导项。这个过程也可以手动完成,方法是根据grub的版本更改/boot/grub目录下menu.lst(grub旧版引导菜单,Ubuntu 9.04之前使用)或grub.cfg(grub2引导配置,Ubuntu9.10后使用)文件。内容如下:

menu.lst:

title Ubuntu 9.04, kernel 2.6.31
uuid 753efade-04e8-4e2c-8bbb-965e9792b2f5
kernel /boot/vmlinuz-2.6.31.6 root=UUID=753efade-04e8-4e2c-8bbb-965e9792b2f5 ro quiet splash
initrd /boot/initrd.img-2.6.31.6
grub.cfg:
menuentry "Ubuntu, Linux 2.6.32" {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
set quiet=1
insmod ext2
set root=(hd0,3)
search --no-floppy --fs-uuid --set 3c611c5f-f941-4970-956f-fe4c7bf75714
linux    /boot/vmlinuz-2.6.32 root=UUID=3c611c5f-f941-4970-956f-fe4c7bf75714 ro   quiet splash
initrd    /boot/initrd.img-2.6.32
}

重启电脑:reboot

完成~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: