分类: LINUX
2008-11-08 18:40:02
第一步 安装必要的工具
首先要安装必要的包。
包有:libncurses5-dev(menuconfig需要的)和essential
sudo apt-get install build-essential kernel-package
sudo apt-get install make
sudo apt-get install gcc
另外,查看系统是否有这样的两个命令
mkinitramfs mkisofs
这两个工具在编译内核时用来生成 *.img文件的。如果没有就需安装。
第二步 下载内核
到下载新内核。我下载的是2.6.28:
http:///pub/linux/kernel/v2.6/linux-2.6.28.tar.gz)
原内核为2.6.26(我用的是debian系统)
第三步 编译前的准备
察看当前内核的版本
niutao@niutao:~$ uname -a
Linux niutao 2.6.28 #0 SMP Sat Mar 28 14:10:03 CST 2009 i686 GNU/Linux
niutao@niutao:~$
建议最好下载比当前已安装版本高的内核
解压linux-2.6.28.tar.gz到linux-2.6.28
cd /usr/src
sudo tar zxvf linux-2.6.28.tar
cd linux-2.6.28/
第四步 开始编译
cd /usr/src/linux-2.6.28 #以下所有的工作都在/usr/src/linux-2.6.28下完成
sudo make menuconfig #用menuconfig的话还需要Ncurses,或者用
sudo make xconfig
sudo make menuconfig #一般是用menuconfig
配置完以后保存(系统中保存的一份内核配置文件是在/usr/src/linux-2.6.28下名为.config,你也可以自己在别的地方另存一份)
也可以cp原来在/boot目录下的config-2.6.xx 到当前目录下,在make menuconfig是使用这个配置文件。
sudo make -j2 可以分两个线程来进行编译工作
sudo make bzImage #编译内核,将保存到/usr/src/linux-2.6.28/arch/i386/boot/下
sudo make modules #编译模块
sudo make modules_install #安装模块
sudo mkinitramfs -o /boot/initrd-2.6.28.img 2.6.28
sudo make install #安装内核
安装完后/boot下将增加以下几个文件(用ls -l *28*查看)
niutao@niutao-desktop:/boot$ ls -l *28*
-rw-r-r- 1 root root 85203 2008-03-14 22:28 config-2.6.28
-rw-r-r- 1 root root 37968871 2008-03-15 08:31 initrd-2.6.28.img
-rw-r-r- 1 root root 932315 2008-03-14 22:28 System.map-2.6.28
-rw-r-r- 1 root root 1858864 2008-03-14 22:28 vmlinuz-2.6.28
niutao@niutao-desktop:/boot$
给/boot/grub/menu.lst中添加一个新的启动项,如我的menu.lst增加了如下一段文字
title Debian, kernel 2.6.28
root (hd0,0)
kernel /boot/vmlinuz-2.6.28 root=/dev/sda12 ro
initrd /boot/initrd-2.6.28.img
从新启动即可。
chinaunix网友2009-04-24 01:59:31
修改menu.list,加入以下内容(从既有的menu.list中相关的内容拷贝): title zp, make defconfig, 2.6.17.13 root (hd0,2) kernel /boot/mynewkernel/vmlinuz-2.6.17.13 root=/dev/sda3 ro quiet splash savedefault :请问,这里有root=/dev/sda3 ro quiet splash是什么意思呢?我试过很多次都不行,还有,不需要设置那个沤心initrd吗??谢