ADSL网络协议PPPOE

作为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
inutils 2.12 ld-v
util-linux 2.10o fdformat--version
module-init-tools 0.9.9 depmod-V
rocps 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
fs-utils 1.0.5 showmount --version
另外 , 少数实用程序当你用到它时才需要升级的有:
Name: Minimum version: How to find version:
cmcia-cs 3.1.21 Cardmgr -V
quota-tools 3.09 Quota -V
PPP 2.4.0 ppd--version
isdn4k-utils 3.1pre1 Isdnctrl 2>&1grep 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 。
【ADSL网络协议PPPOE】
第五步:创建新内核
创建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 rootroot1094390 Aug 12 20:30 bzImage-2.4.21-ck3
-rw-r--r-- 1 rootroot1639129 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.gztar xvf - (XX为新内核的版本号)
注:不得用/usr/src/linux
通过补丁升级2.5.xx版本 。
gzip -cd ../patch-2.5.xx.gzpatch -p1或bzip2-dc ../patch-2.5.xx.bz2patch -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 C2.95.3 # gcc --version
Gnu make 3.78# make --version
inutils2.12 # ld -v
util-linux2.10o # fdformat --version
module-init-tools 0.9.9 # depmod -V
e2fsprogs 1.29 # tune2fs
jfsutils 1.0.14# fsck.jfs -V
reiserfsprogs3.6.3 # reiserfsck -V 2>&1grep reiserfsprogs
xfsprogs2.1.0 # xfs_db -V
cmcia-cs 3.1.21# cardmgr -V
quota-tools 3.09 # quota -V
PPP2.4.0# pppd --version
isdn4k-utils 3.1pre1# isdnctrl 2>&1grep version
fs-utils1.0.5 # showmount --version
rocps 2.0.9# ps --version
oprofile 0.5.3# oprofiled --version
内核编译
GCC:2.95.x (x >= 3)
Gnu make:3.78
其他
:2.4.0
……
附3
其他技巧:对于运行的内核2.6.x升级到它的下一个版本的方法
如做2.6.0-test5的升级 , 其大致步骤为:备份数据——获取2.6.0-test5补丁——应用2.6.0-test5补丁 , 修补内核——删除old.o文件及其从属文件(利用“#make mrproper”)——新内核配置——创建新内核——内核的导入和试用 。