在ubuntu 10.10(2.6.35.22) 编译安装linux-2.6.35.13内核
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在ubuntu 10.10(2.6.35.22) 编译安装linux-2.6.35.13内核
第一步:准备工作
打开终端获得root权限:sudo su
然后安装编译内核时需要的工具:
apt-get install build-essential kernel-package libncurses5-dev libqt3-headers
build-essential (基本的编程库(gcc, make等)
kernel-package (Debian 系统里生成 kernel-image 的一些配置文件和工具)
libncurses5-dev (make menuconfig要调用的)
libqt3-headers (make xconfig要调用的)
其他工具在升级过程中可以按提示安装
第二步:到下载内核源代码linux-2.6.35.13.tar.gz
假设下载在root目录(具体路径个人喜好),然后解压到/usr/src/linux-2.6.35.13目录里
tar zxvf /root/linux-2.6.35.13.tar.gz -C /usr/src
解压后会在/usr/src生成新文件夹linux-2.6.35.13
第三步:配置
把正在使用中的内核配置文件/usr/src/linux-headers-2.6.35-22-generic/.config 拷到/usr/src/linux-2.6.35.13目录下
cp /usr/src/linux-headers-2.6.35-22-generic/.config /usr/src/linux-2.6.35.13
执行:
cd /usr/src/linux-2.6.35.13
make menuconfig
终端会弹出一个配置界面,注意主菜单最后有两项:
Load an Alternate Configuration File
Save an Alternate Configuration File
先选Load an Alternate Configuration File,意思是利用当前的内核配置详单来设置将要编译的内核,然后选Save an Alternate Configuration File,最后退出配置界面。
第四步:开如编译安装新内核
//执行:sudo make mrproper (清除以前曾经编译过的旧文件,如果你是第一次编译,可不执行)
//上面这个操作会把前面拷贝的.config干掉,所以。。。你懂的。。。
执行:sudo make(编译,可以加-j4,如果你CPU是双核心,够牛的话,因为可以提高速度)
然后:sudo make install(安装内核文件到/boot目录,安装过程会自动修改GRUB启动菜单)
再:sudo make modules(编译内核需要的模块)
再:sudo make modules_install(安装模块到/lib/modules目录)
最后创建initrd文件:
mkinitramfs -o /boot/initrd.img-2.6.35.13
第五步:更新配置GRUB引导列表
注意注意:其实这一步很简单,只要:
sudo update-grub
来更新引导文件,但它会扫描所有的可能,可能会生成一些多余的启动项,所以当然也可以自己编辑
/boot/grub/menu.lst(某些系统)或者/boot/grub/grub.cfg文件,注意如果权限不够修改不了,则先执行
sudo chmod 644 /boot/grub/grub.cfg,修改完后,记得再执行sudo chmod 444 /boot/grub/grub.cfg恢复只读属性。如下所示:
sudo gedit /boot/grub/grub.cfg
我的grub.cfg添加如下:
menuentry 'Ubuntu, with Linux 2.6.35.13' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set 509a54da-c698-46f6-8803-f04643f6a08c
linux /boot/vmlinuz-2.6.35.13 root=UUID=509a54da-c698-46f6-8803-f04643f6a08c ro quiet splash initrd /boot/initrd.img-2.6.35.13
}
以下是原2.6.32内核启动项:
menuentry 'Ubuntu, with Linux 2.6.35-22-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set 509a54da-c698-46f6-8803-f04643f6a08c
linux /boot/vmlinuz-2.6.35-22-generic root=UUID=509a54da-c698-46f6-8803-f04643f6a08c ro quiet splash
initrd /boot/initrd.img-2.6.35-22-generic
}
到此为止,整个内核的编译就全部完成啦。在这里要注意,对有些系统,或者你重启后,就再也无法通过按下任何键进入启动菜单选择了,如果你新编译的内核也无法正常启动的话,就真的杯具了,所以,如果你想看到下面的错误警告并且不在乎重装系统的话,可以考虑重启一下,否则最稳妥的方法还是先别重启,继续以下步骤,以防万一。如果你选择了重启,虽然启动菜单中增加了新内核2.6.35.13的启动项,但极可能会启动失败,出现以下提示:
warning:can't open directory /lib/modules/2.6.35.13/modules.dep,no such files or directory
此时不应气馁,重启系统,不断按下ESC或SHIFT(根据具体系统可能按键不同),反正就是为了进入启动菜单选择界面,然后选择旧系统登陆,然后进行下述动作:(如果你尝尽所有办法都无法进入启动菜单选择界面,恭喜你,重装系统吧^_^)
sudo su(保证获得root权限,否则会提示权限不够,不能成功完成任务哦)
cd /boot
cp initrd.img-2.6.35.13 initrd-2.6.35.13.bak (先做一个备份以防万一)
depmod -a(depmod可检测模块的相依性,供modprobe在安装模块时使用。 -a,分析所有可用的模块。)