最近一篇写的关于linux内核的文章是2年前,这次因为某些原因,不得不再接触内核。2年过去了,激情不再,看着满是灰尘的2440开发板,不禁感慨当年奋斗的时光。

再次接触内核,发现自己竟然也是移植过内核的人,正如在部门推广git的时候,发现自己原来也是使用过git的人。曾经学习的东西,冥冥中却遇上了。我期望有一天,有一天能对同窗说:我在大学学的杂七杂八的东西,可以在我的工作中使用到!

这次学习,纯粹是不得已而为之,深入想一想,除了事情本身外,自己还是能学到东西的。作为日后的一个资本,也是不错了。鉴于环境限制,只能在虚拟机上进行模拟测试。我有一个原则,自己学习的东西(不是工作)不占用公司资源——公司有现成的arm嵌入式设备,有现成的linux内核,但我不会这样做。正如我自己学习xml,公司代码使用tinyxml第一版,我偏偏使用第二版。当然,说话不能太绝对,说没有占公司资源干自己事是不可能的,但做公司的事却一直占用自己的资源:周末的时间、陪女朋友的时间、去湖边发呆的闲情。

说起折腾内核,是好多年前的事情了,为rh9升级为2.6的内核,自己动手做LFS,往事历历在目。

本来想用一个比较新的内核,但发现3开头的内核在我的fc10上跑不起来,只好放弃,选一个与fc10内核版本相近的内核:2.6.30。编译内核其实比较简单,这里只作一个流水账。(注:我一直钟情于fc10,是因为大学里用得久的就是fc10)

下载内核后,进行编译:

make menuconfig
make zImage

make modules
make modules_install(必须做)

在/boot要做些配置。

cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.30
cd /boot/
mkinitrd initrd-2.6.30.img 2.6.30

编辑/boot/grub/grub.conf文件(注:/etc/grub.conf是该文件的链接),将新内核加进去。整个文件内容如下:

vim grub.conf

title Fedora (3.10.0)
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda2
#          initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu

title Fedora (2.6.30)
        root (hd0,0)
        kernel /vmlinuz-2.6.30 ro root=UUID=c0d40e44-a9cd-4eb4-8877-dbdcf0ea6926 rhgb quiet
        initrd /initrd-2.6.30.img
title Fedora (2.6.27.5-117.fc10.i686)
        root (hd0,0)
        kernel /vmlinuz-2.6.27.5-117.fc10.i686 ro root=UUID=c0d40e44-a9cd-4eb4-8877-dbdcf0ea6926 rhgb quiet
        initrd /initrd-2.6.27.5-117.fc10.i686.img

保存之后,重启,默认使用新内核。下面是版本信息:

Linux latelee 2.6.30 #1 SMP Sun Oct 6 10:02:24 CST 2013 i686 i686 i386 GNU/Linux

 

后面将陆续记录学习的笔记,当然,作为一个不是入门者的入门者,随意写写就行。

 

                   迟,于2013年11月18日

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐