linux内核的编译( 六 )


4.1.;kbd
Linux;的控制台有著比你所能吃惊更多的特色 。这包括切换字型,重新对映你的键盘,
切换显示模式(比较新的核心)的能力等等 。kbd;这套软体里有能够让使用者做这些动
作的支援程序,还加上一大堆的字型以及几乎足以适用任何键盘的一些键盘对映表 。
4.2.;hdparm
像很多软体一样,这曾经是一个核心修补档及其支援程序 。这些修补档被公认为核心的
一部分,而用来最佳化以及调适你硬碟的支援程序一般是分开发行的 。
5.;一些陷阱
5.1.;清除
如果你的新核心会做一些真的很奇怪的事(这曾经发生在我身上),有可能是因为你忘
了做清除(;make;clean;) 。症状从你的核心不正常地崩溃到奇怪的输出入问题,一直
到可怜的执行效率等等不一而足,可以是任何事 。最好也要确定你有做确认(;make
dep;) 。
5.2.;巨大或缓慢的核心
如果你的核心占用了大量的记忆体,或者它真的是很大很大,也或者是即使用你全新的
486DX6/440;来编译却都还像是永远编译不完的话,那麽有可能是因为你配置了太多不
必要的东西(设备驱动程序,文件系统等等) 。如果你不会用到某些东西,那就不要配
置它,因为它真的会占用记忆体 。
如果你的记忆体少於;16;Megs;,确定你在″;limit;memory;to;low;then;16MB;″这个
问题上回答的是″;y;″ 。这会造成很大的不同(尤其是只有在;4;MB;的系统上)最明
显的症状是记忆体与磁碟之间异常大量的资料交换 。如果你的磁碟发出很多噪音,检查
一下你的核心配置 。
你可以找出你机器上全部记忆体的数量,然後减掉;/proc/meminfo;里面的″;total
mem;″或″;free;″指令所得的记忆体数量来得知核心使用了多少记忆体 。你也可以执
行”;dmesg;”(或者也可以查看核心的记录档,它一定在会你的系统里) 。看起来就
像这一行:
Memory:;15124k/16384k;available;(552k;kernel;code,;384k;reserved,;324k
data)
我的;386(配置很少垃圾)显示如下:
Memory:;7000k/8192k;available;(496k;kernel;code,;384k;reserved,;312k
data)
5.3.;核心没有编译
如果它没有被编译,那麽可能是有个修补档失败了,或者是你从某个地方拿到的原始程
式码有问题 。也有可能是因为你的;gcc;版本不正确或坏掉了 。确定;Linus;在;README
里所描述的符号链结都有正确建立 。一般说来,如果核心没能编译,这表示在某些地方
有严重的错误 。
5.4.;新版的核心似乎不能启动
没有执行;LILO;,或是没有正确的配置它 。有一次我曾经碰到的问题是出在配置档里,
我用了″;root;=;/dev/hda;″而不是″;;root;=;/dev/hda1″(这在刚开始时真的是
很讨厌,但是一旦你有了一个可以用的配置档,应该不需要去再去改变它)
5.5.;你忘了执行;lilo;,或系统根本不能启动
噢!现在最好的办法是用磁片启动,并且准备另一张可以启动的磁片(像是”;make
zdisk;”时做的磁片) 。你得知道你的根目录(;/;)所在的分割区以及它的格式(
second;extended,;minix;等等)在下面的例子中,你也得知道你的;/usr/src/linux
source;tree;在那个分割区,它的格式,以及它一般会挂在那儿 。
在这个例子中,;根目录;/;是;/dev/hda1;,而持有;/usr/src/linux;的分割区是
/dev/hda3;,;一般会挂在;/usr;下 。它们都是;second;extended;文件系统 。可以运作
的核心映像叫做;zImage;,放在;/usr/src/linux;底下 。
这个主意是这样的,假若有一个可以运作的核心映像叫做;zImage;在;/usr/src/linux
下,可能可以把它用在新的磁片上 。另外一个不一定会更好的变通办法(这跟你的系统

推荐阅读