(bzImage),另外也可以直接由 loader 来启动 ramdisk (initrd)。有关
initrd 的部份请参阅 Documentation/initrd.txt。如果想编译较大的
kernel,请使用 下列的 make 参数:bzImage, bzlilo, bzdisk (各相当於
zImage, zlilo 和 zdisk)。如果你想使用这项新功能,你必须升级你的
bootloader。LILO 请升级 为 0.19 (lilo.19.tar.gz),loadlin 请升级到 1.6
(lodlin16.tgz)。如果你使 用的是罕见的 SysLinux 或是
etherboot,最新版本分别为 1.3 和 2.0。
C Library
===========
Linux 最新的稳定版 C library 是 5.2.18,如果你从 5.0.9 之前版本升级
为这个版本,请一定务必必须阅读 release.libc-5.2.18,因为 make 及一些重
要工具可能因升级而无法正常工作。
目前正在 beta 的版本则是 5.3.12。这版本有些重大改变,一些有□的程序
可能会遭遇麻烦 (以前的版本用 free() 来处理不是由 malloc()
传回的指标没有 问题,但是新版的 library 就有麻烦了),因此请先仔细阅读
release.libc-5.3.9! 新版的 library 更正了 dirent 的 bug -- 如果有
define USE_GNU 的话,将会错将 d->reclen 定义为 d->namlen,但是有些 GNU
package 却是以错为正,例如 GNU make 3.xx。要更正这项错误你必须 path
後重新 compile。(release.libc-5.3.9 中有 make 的 patch
以及何处可取得编译好的 binary)
另外,libc-5.3.x 有保全的漏洞,而 libc-5.3.12 已经补好这个洞。因此如果
你要使用测试版的 library,请记得使用 5.3.12 版。
如果你遇到以下的错误讯息:
`fcntl_setlk() called by process 123 with broken flock() emulation'
你也必须升级到 5.2.18 版。1.3.x 版 kernel 增加了 BSD 形式的 flock 系
统呼叫,如果你使用旧版的 library
就会有这个错误讯息。不过这讯息一点影响
也没有,因此你可以忽略不管。如果你觉得这个讯息很烦,那就升级你的
library 吧。如果你又烦又懒,那直接把 kernel fs/locks.c 里面的
printk(KERN_WARNING "fcntl_setlk() called by process %d with broken
flock()
emulation\n", current->pid);
去掉然後重新 compile。如果你是使用 aout 格式,你可以升级成 libc-4.7.6
来解决这个问题。
Termcap Library
=================
目前 Termcap 的版本是 2.0.8。如果你升级成这个版本,请阅读 README,
取得有关 tegtent 函式更改的重要讯息。
Procps Utility
================
kernel 1.3.x 的 /proc 结构已经改了,因此你必须将 proc 升级为 0.99a 版
而在最新的 kernel 中,档案结构又再次更改,但是 procps
还没有个正式升级版 反应这个改变,所以还是使用 0.99a
吧。你也可以找找流传在外解决让 0.99a 可以 和 kernel 1.3.94 相容的
patch。
Kernel Modules
================
kernel 1.3.x 版几乎已经全部模组化了,也加入了 kerneld。想使用个功能,
你必须更新到最新版的 modules。目前最新的稳定版 modules 是 1.3.57
(注), beta 版则到了 1.3.69k。这些都可以在你抓 kernel
的同一地点取得,或是到 它的
Homepage:http://www.pi.se/blox/modules/index.html。注意:如果你载入
modules 会出现以下的讯息:
gcc2_compiled, undefined Failed to load module!
The symbols fromkernel 1.3.foo don't match 1.3.foo
那就是该换到 1.3.69 的时候了。会出现这个错误是因为你使用最新版的
binutil,因此大部份的人还是停留在 1.3.57 即可。
另外一点要注意的,你不能同时把 a.out 和 ELF 支援编译成 modules,否则
当你为了能够使用 insmod 而用 insmod 来载入 a.out/ELF modules 时会有
Catch/22 状况发生 (这是啥啊?)如果你的系统主要是 ELF 而你偶尔会需要用到
a.out,你可以把 a.out 支援编译为 modules,否则你最好把它直接放入
kernel 之中。如果你还没进入 ELF 的世纪 (不会吧..),在 compiler kernel
时可以 直接把 ELF 支援去掉。另外的另外,在开机就会 mount 上来的
partition 的 FS 、device driver 记得要 compiler 进
kernel,不能把它弄成 modules。请不要 夸张到为了完全模组化而忘了把
ext2fs 和 IDE dirver compiler 进 kernel 里...
*注:在 kernel 目录下已经可以看到 2.0.0 版的 modules 了
PPP driver
============
你的 pppd 必须是 2.2.0 版或更新。最新的稳定版本是 2.2.0f 可以在
ftp://sunsite.unc.edu/pub/Linux/system/Network/serial/ppp/ppp-2.2.0f.tar.gz
取得。
Named pipes (SysVinit)
========================
Linux 处理 named pipes 的方式改变了 (从 SunOS 方式变成 "正确" 的方式)
,这使得某些程序因此而失效了,最值得注意的就是 SysVinit。如果你的
SysVinit 是 2.59 或更早的版本,在 shutdown
时虽然可以正常工作,但是你会看到这样 的错误讯息:INIT: error reading
initrequest 或是这些字不停的在卷动...
如果你使用 NCSA 的 httpd,你必须把 daemon 的 pre-spawn 设为 0,不过我
建议你直接换成 Apache 的 httpd。
新的 named pipes 方式也让 Hylafax 发生问题,如果你有 Hylafax daemon,
它会不断用掉 CPU time 直到系统没有 idle time
为止。要修正这个错误,修改 Hylafax 的 port.h,把
CONFIG_OPENFIFO="O_RDONLY"
改成
CONFIG_OPENFIFO="O_RDWR"
类似的处理方式 (把 named pipe 开启方式从 read only 改成 read/write)
可以解决因这个改变引起的问题。
File Locking (Sendmail)
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




