1.查看当前内核版本
uname -a
2.下载源码
http://www.kernel.org/ 可以放在自己的工作目录下
并解压缩
tar xvjf linux.x.y.z.tar.bz2
3.前期准备工作
sudo apt-get install build-essential kernel-package libncurses5-dev libqt3-headers
build-essential (基本的编程库(gcc, make等)
kernel-package (Debian 系统里生成 kernel-image 的一些配置文件和工具)
libncurses5-dev (meke menuconfig要调用的)
libqt3-headers (make xconfig要调用的)
4.内核配置
内核配置的方法有四种:
make config: 该工具会挨个遍历所有配置项,很耗时;
make menuconfig:基于ncurse库编制的图形界面工具;
make xconfig:基于X11的图形工具;
make gconfig:基于gtk+的图形工具。
可以利用已有系统的配置选项:把现在内核用的.config文件拷贝过来当作模版
cd ./linux-2.6.36
cp /usr/src/linux-headers-2.6.32-26-generic/.config .config
make menuconfig
终端会弹出一个配置界面,选择最后一项:load a kernel configuration...利用当前的内核配置来配置将要编译的内核,然后选择save kernel configutation..保存并退出配置界面。
5.开始编译
sudo make-kpkg clean
sudo make-kpkg --append-to-version -custom kernel_iamge kernel_headers
此部分时间比较长....
完成后得到两个文件:linux-headers-...Custom_i386.deb和linux-image..._i386.deb
用如下命令安装这两个文件:
sudo dpkg -i linux-headers-2.6.36-custom_2.6.36-custom-10.00.Custom_i386.deb
sudo dpkg -i linux-image-2.6.36-custom_2.6.36-custom-10.00.Custom_i386.deb
运行下面的命令生成initrd文件:
mkinitramfs -o initrd.img-2.6.36
编译即将大功告成,再坚持一下..
6.修改启动文件
把initrd.img-2.6.36拷贝到/boot目录下:
cp initrd.img-2.6.36 /boot
此时/boot目录下应该有initrd vmlinuz和system.map三个文件,ok!
修改/boot/grub目录下的menu.lst文件,添加下面几行:
title Ubuntu 10.04.1 LTS, kernel 2.6.36-custom
root ()/ubuntu/disks
kernel /boot/vmlinuz-2.6.36-custom root=UUID=01CAE99CC7D0CB80 loop=/ubuntu/disks/root.disk ro quiet splash
initrd /boot/initrd.img-2.6.36
大功告成!重启计算机,进入自己编译的内核!
问题:
1.如果restart的时候出了问题,当你看见屏幕上出现 "Press ESC to enter the menu...1"这行字的时候,按下ESC,此时会进入grub的启动菜单,好,选择你的旧版内核,启动系统。现在,你不得不重新编译一次内核,使其能够正常使用。
2.我碰到一个问题:FATAL: modprobe: Could not load /lib/modules/2.6.36-custom/modules.dep
解决方法:1.删除initrd文件
2.进入源码存放的目录,运行:
sudo update-initramfs -c -k 2.6.36-custom (与你自己的命名对应)
会在/boot目录下生成initrd-img-2.6.36-custom文件
3.运行:sudo update-grub
搞定,重启!Just Do It!
Ubuntu下Linux内核编译
最新推荐文章于 2022-08-24 20:43:21 发布