1. Linux系统编译内核的通用方法
1. 下载源代码2.6.32.2 version linux kernel
2. 解压,并把它放到/usr/src/目录下
note: 如果出现不能解压的情况,可以使用如下命令改变文件夹得属性
#sudo chmod 777 /usr/src
3. cd linux-2.6.32.2
4. 清理源代码(如果是之前已生成一些中间文件可运行此命令,否则不必了)
make mrproper
5. 生成config文件
cp /boot/config-`uname -r` ./.config
make menuconfig
在make menuconfig的配置界面中,先选择Load config file, 把该才拷贝的文件加载进来再进行修改,修改完成后,直接选Exit,然后在提示中选择保当前配置文件。
6. 编译
make
7.安装模块
make modules_install
该命令会把模块及相关文件放到目录/lib/modules/2.6.18.1/下,并不会与当前内核产生冲突,除非内核版本是一样的。
8.安装内核
make install
该命令会把内核相关文件(bzImage, initrd.img,System.map .config)放到/boot/目录下,文件名均带有内核版本名,与其它版本相关区别。
如果系统安装了LILO,它会自己把该内核的启动加进来。如果是grub程序,那要看情况而定。我在Fodera系统中,它会自动添加该启动项到/boot/grup/menu.lst文件中,而在Ubuntu中则不会,需要手动添加。添加完也,即可重启进行新内核。
9.Ubuntu 中手动添加启动新内核的选项
打开文件/boot/grup/menu.lst
添加
title Ubuntu 9.04, kernel 2.6.32.2
uuid ba85f405-a168-4669-b838-95f631d580a2
kernel /vmlinuz-2.6.32.2 root=UUID=25aa1e16-b459-444c-a86e-78d9547ae687 ro quiet splash
initrd /initrd.img-2.6.32.2
quiet
title Ubuntu 9.04, kernel 2.6.32.2 (recovery mode)
uuid ba85f405-a168-4669-b838-95f631d580a2
kernel /vmlinuz-2.6.32.2 root=UUID=25aa1e16-b459-444c-a86e-78d9547ae687 ro single
initrd /initrd.img-2.6.32.2
10.Ubuntu 检查一下以上的你添加的
vmlinuz-2.6.32.2
initrd.img-2.6.32.2
在boot目录下是不是都存在。
我的就不存在initrd.img-2.6.32.2,所以起机的时候就会有/lib/modules/2.6.32.2/modules.dep not open.的问题
并进initramfs>的提示符下。
解决办法是
在终端里
#sudo /usr/sbin/mkinitramfs -o /boot/initrd.img-2.6.32.2 2.6.32.2
的命令之后就可以了。
11.重启电脑。你的kernel可以用了。
12 用命令 #umame -a
恭喜你你成功的运行在自己编译的kernel上了。
reference:http://blog.csdn.net/linyt/archive/2009/03/16/3995435.aspx