Ubuntu下编译新内核

来源:互联网 发布:招生管理系统数据库 编辑:程序博客网 时间:2024/06/11 03:48

 

本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2010-05/26263.htm

 

 

Ubuntu 10.04 编译安装最新版本Linux-2.6.34内核 (编译安装其他Linux-2.6.**版本,只需要该版本编号)

 

第一步:准备工作

 

打开终端获得root权限:sudo su

然后安装编译内核时需要的工具:

 

apt-get install build-essentialkernel-package libncurses5-dev libqt3-headers

 

 build-essential  (基本的编程库(gcc, make等)

 

 

 kernel-package   (Debian 系统里生成 kernel-image 的一些配置文件和工具)

 libncurses5-dev  (meke menuconfig要调用的)

 libqt3-headers   (make xconfig要调用的)

其他工具在升级过程中可以按提示安装

 

第二步:下载内核源代码linux-2.6.34.tar.gz

请到www.kernel.org官网下载最新版本linux-2.6.34.tar.gz内核

假设下载在root目录,然后解压到/usr/src/linux-2.6.34目录里

cd /usr/src

tar zxvf /root/linux-2.6.34.tar.gz

解压后会在/usr/src生成新文件夹linux-2.6.34

cd /usr/include
rm -rf asm linux scsi
ln -s /usr/src/
linux-2.6.34/include/asm-i386asm
ln -s /usr/src/
linux-2.6.34/include/linuxlinux
ln -s /usr/src/
linux-2.6.34/include/scsiscsi

 

第三步:配置

把正在使用中的内核配置文件/usr/src/linux-headers-2.6.32-22-generic/.config拷到/usr/src/linux-2.6.34目录下

cp/usr/src/linux-headers-2.6.32-22-generic/.config /usr/src/linux-2.6.34

执行:

cd /usr/src/linux-2.6.34

make menuconfig

终端会弹出一个配置界面

注意主菜单最后有两项:load a kernel configuration...

                  save a kernelconfiguration...

先选第一项load ....,意思是,利用当前的内核配置详单来设置将要编译的内核,然后选save这一项保存,最后退出配置界面。

 

 

第四步:开如编译安装新内核

执行:sudo make mrproper   (清除以前曾经编译过的旧文件,如果你是第一次编译,可不执行)

执行:sudo make    (编译,可以加-j4,如果你CPU是双核心,够牛的话,因为可以提高速度)

然后:sudo make install 

再:sudo make modules (编译模块)

再:sudo make modules_install (安装模块)

最后创建initrd文件:

mkinitramfs -o /boot/initrd.img-2.6.34

 

第五步:更新配置GRUB引导列表

sudo gedit /boot/grub/grub.cfg

我的grub.cfg添加如下:

menuentry 'Ubuntu 10.04Linux 2.6.34'--class ubuntu --class gnu-linux --class gnu --class os {

 recordfail

 insmod ext2

 setroot='(hd1,9)'

 search --no-floppy --fs-uuid --set501d3a42-1d52-4438-99bf-e679da605867

 linux /vmlinuz-2.6.34root=UUID=33883099-83a5-49f3-9c12-ee6a4d90da9e ro   quiet splash

 initrd /initrd.img-2.6.34

}

#以下是原2.6.32内核启动项

menuentry 'UbuntuLinux2.6.32-22-generic' --class ubuntu --class gnu-linux --class gnu --class os {

 recordfail

 insmod ext2

 setroot='(hd1,9)'

 search --no-floppy --fs-uuid --set501d3a42-1d52-4438-99bf-e679da605867

 linux /vmlinuz-2.6.32-22-genericroot=UUID=33883099-83a5-49f3-9c12-ee6a4d90da9e ro   quiet splash

 initrd /initrd.img-2.6.32-22-generic

}

 

       到此为止,整个内核的编译就全部完成啦。

 

    不过也许你重启系统时,虽然启动菜单中增加了新内核2.6.34的启动项,但极可能会启动失败,出现以下提示:

 

FATAL:can't open directory/lib/modules/2.6.34modules.dep,no such files or directory

 

 

       此时不应气馁,玩LINUX要有敢食螃蟹的勇气和毅力,哈哈。

在提示框后面输入reboot:(mkinitramfsreboot

选择从旧内核启动登录系统,然后执行以下命令(为了避免输入错误,最好复制下面的命令)修改后就能成功启动新内核了。

 

 

######################################

sudo su (保证获得root权限,否则会提示权限不够,不能成功完成任务哦)

cd /boot

cp initrd.img-2.6.34 initrd-2.6.34.old (先做一个备份以防万一,哈哈)

depmod -a

update-initramfs -k 2.6.34 -c

cd /tmp

gzip -dc /boot/initrd.img-2.6.34| cpio -id

touch /lib/modules/2.6.34/modules.dep

find ./ | cpio -H newc -o >/boot/initrd.img-2.6.34.new

gzip /boot/initrd.img-2.6.34.new

cd /boot

mv initrd.img-2.6.34.new.gzinitrd.img-2.6.34

 

######################################

 

 

0 0
原创粉丝点击