linux内核从2.4.20升级到2.6.18 2010-03-30 22:18:50
原创作品,允许转载,转载时请务必以超链接形式标明文章
原始出处 、作者信息和本声明。否则将追究法律责任。
http://chenboqiang.blog.51cto.com/1068057/289660
今天总结一下内核升级,我个人观点:升级linux还不如下载个高版本的linux来安装,升级高版本的linux内核还要升级gcc编译器,还有一些gcc辅助工具,编译一个gcc要一个钟左右,如果升级了,根文件系统又不支持,又要升级根文件系统,很麻烦。Google一下,很多文章都有介绍,下面升级一个不要升级GCC的2.6.18的版本的linux内核,找内核可以到http://www.kernel.org官方网站下载。到http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2下载linux-2.6.18.tar.bz2内核。
我做实验的是linux-2.6.18.tar.bz2稳定版,第一个数字2是主版本号,第二个数字6为次版本号,第三个是修订号。如果次版本号为偶数则是稳定版,如果是奇数则是开发版。一个操作系统至少有引导程序(bootloader)、内核(kernel)、根文件系统(Rootfs).现代的操作系统一般由进程管理、内存管理、文件系统、驱动程序和网络等几个功能模块组成。内核的源代码目录:
arch:所有和体系结构相关的核心代码。
Include:内核大部分头文件
Init:内核的初始化代码(不是系统的引导代码)
Mm:内存管理代码
Driver:设备驱动代码
Ipc:核心进程间的通信代码
Fs:存放linux支持的文件系统代码
Kernel:内核管理的核心代码
Net:内核网络部分代码
Lib:核心的库代码
Script:用于配置核心的脚本文件
Documentation:一些文档,是对每个目录作用的具体说明
辅助内核升级工具下载,可以默认安装
http://rpm.pbone.net/index.php3/stat/4/idpl/1532769/com/device-mapper-1.00.19-2.i386.rpm.html
编译的大概流程是:
(1)Make menuconfig //配置编译选项
(2)make dep //提供变量依赖关系信息
(3)make clean //删除生成的模板和目标文件
(4)make zImage //编译内核生成压缩的映像
(5) make modules //编译安装
(6)make modules_install //安装编译完成的模板
编译完成之后最终在linux-2.6.18/arch/i386/boot/bzImage压缩内核映像。
(7)make install //安装
[root@localhost root]#cd /mnt/hgfs/linux
//切换到共享目录
[root@localhost linux]#cp linux-2.6.18.tar.bz2 /usr/src/
//拷贝内核文件到/usr/src目录下
[root@localhost src]#tar –xjvf linux-2.6.18.tar.bz2
//解压内核bz2压缩包
![](https://i-blog.csdnimg.cn/blog_migrate/7fb4473430d4550629429782b8b2aa72.jpeg)
[root@localhost src]# cd linux-2.6.18
//到内核目录
[root@localhost linux-2.6.18]# make mrproper
//清理源代码树
[root@localhost linux-2.6.18]# make menuconfig
//进入menuconfig配置菜单
![](https://i-blog.csdnimg.cn/blog_migrate/a7ae18e463a3a75916fb1bd992ad5ce9.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/b1f804c0290530c52bc98c23fd1d84b8.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/c785d26d88a55bf7c6663b98fc94b37d.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/7199289277e3940386bd70c03e0bfe65.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/83b999bc1c9a92ab1652b5d1a3d19849.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/cd68c01709336a08102bf703f5511778.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/918c6653dbb3ffda1a49a43e57b0e6e5.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/76c283dc7340c3c96a0e21f31a8c2cf1.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/29ba998496ad2047061dfd6918bfed12.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/2cf64a3b364bc3afed82934a798a01ad.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/915755bd5d2df00929ab6bba8b5f108a.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/c2708bdb4d5404a674001b1594f98657.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/86998b9b170e39f7f9fe4ba51fb7ea98.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/33277be1a087c2c06712236848471ea9.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/d844fe175691e88c85276d726d2b2940.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/02c24b63be3c57de3bac4344317740a6.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/43e205fc3603d382c3c3a439420cbeda.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/5261927e4309dcb7612e1e9e455d167a.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/05da6215ebbfa9ed0fcac8b33707eb7d.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/858dda90c828263a4c6d26152df34519.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/ac8dd0c868e54a46267b348cf1248a65.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/24d2273d254cfaff96e76c93be3a6078.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/22ed29224cc12889a99c2d638afadf0c.jpeg)
[root@localhost linux-2.6.18]#make clean
//清除产生的生成的模板和目标文件
[root@localhost linux-2.6.18]#make bzImage
//编译内核生成压缩的映像
![](https://i-blog.csdnimg.cn/blog_migrate/79db0eaa60e852f4f292f40feff5ad2e.jpeg)
[root@localhost linux-2.6.18]#make modules
//编译模块
![](https://i-blog.csdnimg.cn/blog_migrate/212d534fa55969245605e788d1a83453.jpeg)
[root@localhost linux-2.6.18]#make modules_install
//安装编译完成的模块
![](https://i-blog.csdnimg.cn/blog_migrate/a4757e87441765ac30deca48cf95c38f.jpeg)
[root@localhost linux-2.6.18]#make install
//安装内核
![](https://i-blog.csdnimg.cn/blog_migrate/5ad949667a9e94c0cde6cb532c3753af.jpeg)
[root@localhost linux-2.6.18]# cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.18
//拷贝bzImage到boot目录,命名为vmlinuz-2.6.18
cp:是否覆盖‘/boot/vmlinuz-2.6.18’? y
[root@localhost linux-2.6.18]# cp System.map /boot/System.map-2.6.18
//拷贝System.map到boot目录,命名为System.map-2.6.18
cp:是否覆盖‘/boot/System.map-2.6.18’? y
[root@localhost linux-2.6.18]# cd /boot
//切换到boot目录
[root@localhost boot]# rm -rf System.map
//删除源有的System.map连接名
[root@localhost boot]# rm -rf vmlinuz
//删除源有的vmlinuz连接名
[root@localhost boot]# ln -s System.map-2.6.18 System.map
//建立软连接
[root@localhost boot]# ln -s vmlinuz-2.6.18 vmlinuz
//建立软连接
[root@localhost boot]# new-kernel-pkg --mkinitrd --depmod --install 2.6.18
//执行new-kernel-pkg命令生成镜像文件
![](https://i-blog.csdnimg.cn/blog_migrate/0c3239618d4b75b0a3fcab52d036a663.jpeg)
这步做不做也没有多大的关系,直接修改/boot/grub/grub.conf文件就可以了
![](https://i-blog.csdnimg.cn/blog_migrate/09cc1db88d9edc1b437b0a409e67a1c8.jpeg)
[root@localhost boot]#df –h
//查看根目录设备名称
![](https://i-blog.csdnimg.cn/blog_migrate/1bcf46865053c873c8d5dd941adee37c.jpeg)
[root@localhost boot]# vim /boot/grub/grub.conf
//编辑启动文件
![](https://i-blog.csdnimg.cn/blog_migrate/21368027f93a82f7cfff2e5079178b19.jpeg)
default=0
//设置为第一启动程序
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.18)
root (hd0,0)
kernel /vmlinuz-2.6.18 ro root=/dev/sda2
//修改设备名
initrd /initrd-2.6.18.img
title Red Hat Linux (2.4.20-8)
root (hd0,0)
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
initrd /initrd-2.4.20-8.img
![](https://i-blog.csdnimg.cn/blog_migrate/f462ad54aaa560d57a58eef73f56e799.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/9f2b4bc6f723e1bf40961512cb2555a4.jpeg)
查看内核版本信息可以用uname –a或用cat /proc/version
![](https://i-blog.csdnimg.cn/blog_migrate/aebb8b79a52e7ed07a3e222380eccb7c.jpeg)
本文出自 “嵌入式技术” 博客,请务必保留此出处http://chenboqiang.blog.51cto.com/1068057/289660