极限首页 业界焦点 软件工程师之路 系统工程师之路 网络工程师之路 软件下载 技术社区
 Linux操作系统的内核编译内
 Linux下设备完全驱动之四
 Linux下设备完全驱动之二
 Linux下设备完全驱动之三
 Linux下设备完全驱动之一
 开源世界的虚拟机 QEMU
 Linux下软件RAID的实现
 RHEL4内建LVM工具入门
 linux SSH 的一些安全小技
 Cron服务配置详解
 Linux操作系统的内核编译内
 Linux下设备完全驱动之四
 Linux下设备完全驱动之二
 Linux下设备完全驱动之三
 Linux下设备完全驱动之一
 开源世界的虚拟机 QEMU
 Linux下软件RAID的实现
 RHEL4内建LVM工具入门
 linux SSH 的一些安全小技
 Cron服务配置详解

Shell 中文手册

Python 2.3 中文手册

Python 2.4 中文手册

Mysql 4.x 中文手册

PHP 4.x 中文手册

Apache 2.x 中文手册
更多手册

站内搜索:
当前位置:首页>>系统工程师之路>>管理进阶>>正文
Linux内核如何从2.4升级到2.6
时间:2005-06-19 作者:天极网 来源:天极网

 
升级Linux内核步骤
第一步:当前2.6内核的安装
第二步:熟悉已有文件
第三步:升级系统内每个change文件的版本
第四步:配置新内核
第五步:创建新内核
第六步:安装新内核
第七步:确认数据的备份
  作为2.6.0的最后一个测试版本,2.6测试版经历了更多的检测器的检验,尤其是在当前对开发者进一步追捕内核bugs和稳定工作有非常重大的意义。一旦2.7版本开发树开展起来,必定将带来其新特征的研究热潮。

  本文的目的在于为2.4内核的读者提供一些升级到2.6内核的技巧。因为2.6内核仍然是个发展中的内核,或许你在运行中会遇到些问题,但是它的总体性能和稳定性还是非常好的。

 

小知识:Linux采用了双树系统。一个树是稳定树(stable tree),另一个树是非稳定树(unstable tree)或者开发树(development tree)。一些新特性、实验性改进等都将首先在开发树中进行。如果在开发树中所做的改进也可以应用于稳定树,那么在开发树中经过测试以后,在稳定树中将进行相同的改进。一旦开发树经过了足够的发展,开发树就会成为新的稳定树。

目标用户

  本文主要针对Lunix2.4内核的用户。(如果之前没有的,可见The Linux Kernel HOWTO)

  准备工作:首先做好重要数据的备份工作

  在开始之前,请确定你的所有数据已经备份。

  第一步:当前2.6内核的安装(获取)

  首先,所有Linux内核的官方版本可以在http://kernel.org/. 找到。通过镜像站点下载内核程序可以比较快捷迅速些。kernel.org 镜像站点列表:http://kernel.org/mirrors 。

  然后下载GnuPG ,它主要用于检验新的内核程序的真实性和合法性。(http://www.kernel.org/signature.html.)

第二步:熟悉已有文件

  至少需要熟悉顶级README文件、Documentation目录中的change文件,它们都是分布式的Linux内核源代码。

  因为2.6.0-test是内核发展中的一个阶段(2.6.0没有扩展名-test,即是2.6的最初版本),所以其顶级README文件引自2.5开发内核的README文件。你将从这个文件中获得许多成功编译Linux内核的技巧。(具体内容见附1)

  “Documentation/Changes”文件列出了发展2.5内核的新需求,提供了新内核程序升级的软件列表。(主要内容见附2)

  第三步:升级系统内每个change文件的版本

  新的2.6内核的升级工作涉及到许多实用程序的升级。对于某些change文件中列出的实用程序也不必担心,它们或许只是某种文件系统的特殊例子而已。但是,下面的文件还是必须至少要满足到下表给出的的最低版本:

Name:
Minimum version:
How to find version:
Gnu C Compiler
2.95.3
gcc--version
Gnu Make
3.78
make--version
binutils
2.12
ld-v
util-linux
2.10o
fdformat--version
module-init-tools
0.9.9
depmod-V
procps
2.0.9
ps--version
[procps 2.x]
[procps .x]
 

  (若有变动,参见“Documentation/Change”中的最新更新。具体可见附2)

  下面的实用程序是文件系统中的特殊程序。若运行ext2 或ext3,那么就必须升级e2fsprogs。若运行jfs,就必须升级jfsutils,等等。如:

Name:
Minimum version:
How to find version:
e2fsprogs
1.29
tune2fs
jfsutils
1.0.14
fsck.jfs -V
reiserfsprogs
3.6.3
reiserfsck–V 2>&1| grep reiserfsprogs
xfsprogs
2.1.0
xfs_db -V
nfs-utils
1.0.5
showmount --version

  另外,少数实用程序当你用到它时才需要升级的有:

Name:
Minimum version:
How to find version:
pcmcia-cs
3.1.21
Cardmgr -V
quota-tools
3.09
Quota -V
PPP
2.4.0
ppd--version
isdn4k-utils
3.1pre1
Isdnctrl 2>&1 | grep version
oprofile
0.5.3
oprofiled--version

  如果首次运行ALSA,请访问http://www.alsa-project.org/获取最新的alsa-lib 和 alsa-utils。

第四步:配置新内核

  这里,你所注意到的首要变化之一就是新的结构体系的形成。旧的TK/Tcl“xconfig”结构由新的QT“xconfig”所取代。当然,GTK“gconfig”也行。

  2.6内核配置包括:

  Make config

  与2.4内核配置“config”相似,做为简单的配置方法,它仅仅要求你选择每个配置选项。需要“bash”。

  Make menuconfig

  与2.4内核配置的“menuconfig”相似。

  Make xconfig

  新的默认的图形化的配置系统,利用了QT库。它非常方便易用。

  Make gconfig

  该选项是xconfig的新的克隆,用GTK库代替了QT库。不幸的是,在测试中发现其中有bug。运行时会不停的重复提示同样的错误信息。

  Make oldconfig

  在内核升级中,该选项非常有用。乍一看它有点象简单的“make config”,实际上,oldconfig是读取和自动响应设置当前的.config设置。它向你提示新的配置选项的功能。如要用,只需简单地复制入你的old.config文件,再运行“make oldconfig”即可。

  (注:首次配置2.6内核时,查看Linux代码顶级README文件时请注意以下技巧: ①多余的驱动将增大内核,在一定条件下会导致问题的出现

  ②内核hacking配置信息的选择常常导致内核更庞大更缓慢,甚至导致内核的不稳定。因此在回答“development”、“experimental”或“debugging”特征时多数选择“N”。)

  ALSA:

  从2.4版本到2.6版本的升级,这就要使用到ALSA(Advanced Linux Sound Architecture即:新的 Linux 音频体系结构)。它取代了OSS(Open Sound System)。配置内核时,选定ALSA的OSS API效法选项(SND_OSSEMUL、SND_MIXER_OSS和SND_PCM_OSS)和适当的声音驱动(PCI 驱动)。最后,下载和安装最新的alsa-lib和alsa-utils。

第五步:创建新内核

  创建2.6内核比2.4的更容易些,不必进行“make dep”这一步。创建新的内核,进行“make bzlmage”。如果选择了编译模块,那么还需要运行“make modules”和“make modules_install”。可以一起进行:“make bzlmage && make modules && make modules_install”。

  第六步:安装新内核

  创建了内核,需要将之复制到一个位置,若x86的机子,其位置路径就是“arch/i386/boot”。拷贝该文件和新的体系.map到根目录/boot下。例如:

  # pwd
  /usr/src/linux-2.6.0-test4
  # mv arch/i386/boot/bzImage /boot/bzImage-2.6.0-test4
  # mv System.map /boot/System.map-2.6.0-test4
  # cd /boot
  # rm System.map
  # ln –s System.map-2.6.0-test4 System.map

  拷贝了新内核后,然后是使用grub和lilo配置根loader。有个发现就是新的2.6内核比用同样版本的gcc编译的2.4内核更大,或许是在编译时选了更多选项的缘故吧。

  -rw-r--r-- 1 root  root  1094390 Aug 12 20:30 bzImage-2.4.21-ck3
  -rw-r--r-- 1 root  root  1639129 Aug 27 22:06 bzImage-2.6.0-test4

  第七步:确认数据的备份

  这一步,你不用做任何或许会破坏到硬盘数据的事,但下一步即是启动新内核,最后一次请确认硬盘重要数据已备份。 第八步:试用新内核

  现在,重启计算机,测试新编译的2.6内核。如果所有步骤正确,将会出现内核启动信息:initstate=3,新的内核很快就出现。如果安装了ALSA,可以检验声音驱动: 'cat /proc/asound/cards'。例如:

  $ cat /proc/asound/cards
  0 [Live]:EMU10K1 - Sound Blaster Live!
  Sound Blaster Live! (rev.5) at 0x18e0, irq 11

  如果出现以上信息,说明声音程序没运行,启动“alsamixer”并确认驱动已经开启。另外发现还需开启“Master”和“PCM” (/dev/dsp),声音程序才能正常运作。

附1

  README——Linux 内核2.5.xx(部分数据)

  讲述了内核的安装方法和出错的处理方法。

  内核的安装

  安装了所有必须的资源后,将内核解压缩在许可目录下(如主目录):

  gzip -cd linux-2.5.XX.tar.gz | tar xvf -   (XX为新内核的版本号)

  注:不得用/usr/src/linux

  通过补丁升级2.5.xx版本。

  gzip -cd ../patch-2.5.xx.gz | patch -p1或bzip2-dc ../patch-2.5.xx.bz2 | patch -pl或linux/scripts/patch-kernel linux
  删除旧的.o文件及其附属文件
  cd linux
  make mrproper

  软件需要

  编译和运行2.5.xx内核必须要升级各种软件包的新版本。参见./Documentation/change中需要的最低版本。

  编译内核

  ⑴确定gcc 2.95.3版本以上

  ⑵ make bzImage (如果用磁盘启动则插入A盘再进行make bzdisk)

  ⑶ make modules (若编译部分modules,则在“make modules_install”后执行)

  ⑷ 保留一份内核的备份件

  ⑸ 启动新内核

  新内核的拷贝。编译后的新内核在.../linux/arch/i386/boot/bzImage可找到,将之拷贝到可启动的位置。若是软盘驱动的,将内核的bzImage文件拷贝到/dev/fd0形成可启动的软驱。若是硬盘启动,则用LILO(/etc/lilo.conf)。内核映象文件常常是/vmlinuz、/boot/vmlinuz、/bzImage或/boot/bzImage。保存新的内核映象文件覆盖旧的,然后再运行LILO,就可以启用新内核了。

  重新设置LILO是运行/sbin/lilo的关键。你可通过编辑/etc/lilo.conf来指定旧的内核映象(即是/vmlinux.old)的出口以避免新内核运行出现问题。LILO重设后,所有准备工作就都做好了,然后就是关闭系统,重启计算机。

  注:如果需要改变缺省的root驱动、video 方式、ramdisk大小等等,可在内核映象中用“rdev”程序(或LILO的引导选项)。不必重新编译内核来改变这些参数。

  ⑹重新启动新内核。

附2

  Documentation/Changes文件(部分数据)

  软件需要的最低版本:

Gnu C      2.95.3         # gcc --version
Gnu make     3.78          # make --version
binutils      2.12         # ld -v
util-linux      2.10o         # fdformat --version
module-init-tools   0.9.9         # depmod -V
e2fsprogs     1.29         # tune2fs
jfsutils       1.0.14        # fsck.jfs -V
reiserfsprogs    3.6.3         # reiserfsck -V 2>&1|grep reiserfsprogs
xfsprogs      2.1.0         # xfs_db -V
pcmcia-cs     3.1.21        # cardmgr -V
quota-tools     3.09         # quota -V
PPP        2.4.0        # pppd --version
isdn4k-utils     3.1pre1        # isdnctrl 2>&1|grep version
nfs-utils      1.0.5         # showmount --version
procps       2.0.9        # ps --version
oprofile       0.5.3        # oprofiled --version

  内核编译

  GCC:2.95.x (x >= 3)
  Gnu make:3.78

  其他

  ppp:2.4.0
  ……

  附3

  其他技巧:对于运行的内核2.6.x升级到它的下一个版本的方法

  如做2.6.0-test5的升级,其大致步骤为:备份数据——获取2.6.0-test5补丁——应用2.6.0-test5补丁,修补内核——删除old.o文件及其从属文件(利用“#make mrproper”)——新内核配置——创建新内核——内核的导入和试用。

 
推荐】【 】【关闭


关于极限 | 站内地图 | 意见反馈 | 广告服务 | 数据服务 | 联系我们
本站所刊登的文章,技术资料,软件均整理于网络资源或本站原创,转载请务必联系原作者或本站。
Copyright ? 2001-2004 UPLinux.com All Rights Reserved.
本站唯一联系信箱:
京ICP备05010519