这份 mini HOWTO 的目的是用来描述如何在一个拥有相当小的记忆体的系统上执
行 Linux。假设购买更多的记忆体是不可行的情况下,仍然有许多方法可以让记
忆体的使用更有效率。
许多 Linux 安装套件(distribution)往往过度的膨胀以致於透支了记忆体的空
间,这些套件执行了许多平常我们并不会经常用到的服务程式及特殊功能,藉由
移除这些不必要的功能与服务可以提升真实记忆体的使用空间。
我的系统是 486DX2-66 的 CPU,有 12MB 的记忆体及 12MB 的 Swap 空间的电
脑,它已经愉快的执行了近三年的 Linux,也深深地希望它能执行 Linux 更多
年 :)。
所有的安装套件通常都安装了包含过多我们平常用不到的功能的 Linux 核心,
如果你还没有重新编译一个适合你的核心,我强烈的建议你重新编译一个,如何
重新编译一个核心已经超过这份文件所讲的□围,但是许多 Linux 的书籍与导
引文件都有包含到这方面更详细的资料。
如果你重新编译一个核心,记得不要放进太多你所不需要用到的功能,例如:
你们之中有多少人不会用到 PLIP 的功能却又把它编译进你的核心之中?较小
的核心需要较少的时间读入记忆体,同时也使用较少的记忆体及较少的 CPU 周
期。
另外一个有关的东西是模组(module),我个人并不使用这些模组,因为我发现
这些模组蛮笨重,如果你使用它们并且喜爱它们,那麽它们会帮助你减轻"核心
膨胀"的现象。
从虚拟终端机下手是一个提升记忆体空间的好方法,大多数的 Linux 安装套件
大约都执行了六个左右的虚拟终端机,平均来说执行六个虚拟终端机大约需要
4MB 的记忆体空间,移除几个虚拟终端机可以提升部份记忆体空间。
一般使用者只需要执行三到四个虚拟终端机就够用了,至於你要使用
几个虚拟终端机则视你的喜好而定,只要记得你执行越少的虚拟终端
机,你就能替你其他的应用程式取得更多的记忆体使用。
关於执行几个虚拟终端机的设定档案位於 /etc/inittab,要移除不必
要的虚拟终端机,应该执行如下步骤:
c1:12345:respawn:/sbin/getty tty1 38400 linux在越高数字(例如 c6)的那行的第一列加上注解的符号 '#',重覆
许多 Linux 安装套件执行了许多我们平常并不会用到的 daemons,大
多数的 daemons 都是用 Script 所启动,这些 Script 大多由你所用
的 Linux 安装套件所决定,Slackware 这个安装套件将它放置在
/etc/rc.d/rc.* 这些档案中。
在你对这些档案做处理之前,如果你有 Unix shell script 程式设计
这方面的背景知识会是一项很大的资产,如果你对撰写 Unix shell
script 毫无经验,以下所写的或许可以当做一份快速的简介。
以下面这段程式码为例:
#!/bin/sh echo "hello world" #echo "good bye cruel world"
这段程式码会在萤幕上显示出 "hello world" 的字串,Shell script
程式一定要有这行 "#!/bin/sh" 在档案的第一行,在这之後的每一行
就会像你直接在键盘上键入後,当场执行的结果(试著想像 Shell
script 就像是键盘的巨集指令一般)。
除了第一行之外的任何一行若开头的起始是用 '#' 开始,表示这行只
是单纯的注解,因为这行将不会被 shell 所执行,大部份的用来启动
daemon 的 script 会看起来像这样:
if somecondition do something fi
你所要做的就是把从 if 开始的叙述一直到 fi 的叙述用 '#' 标记起
来就好了。
如果你想要找到任何一个 daemon 是从那启动的,你所要做的是寻找那
个 daemon 的名字所在的位置即可,如果我想要找 inetd 是从那里启动
的,我会这麽做:
% cd /etc/rc.d % grep -n inetd rc.*
inetd 允许使用者使用向你的机器要求像 telnet、ftp、talk 等等的服
务,如果你不想要你的系统成为一台 Server 或是不需要任何人从远端向
你的机器要求这样的服务,你可以移除 inetd 的启动。
lpd 是一个让你可以使用 lpr 这个指令来列印你的文件,如果你不需要
在你的 Linux 系统中列印文件,那麽你可以移除 lpd 的启动,就算你有
一台 HP Deskjet 列表机,而且要在 Linux 下列印些文件,我强烈建议
你采用一个名为"dj-printcap"的软体,你可以从这找到这个软体:
ftp://sunsite.unc.edu/pub/Linux/system/Printing/dj-printcap.tar.gz
这两个 daemons 是让你的机器成为一台 NFS Server,如果你不想让你的
Linux 系统成为一台 NFS Server,你可以放心地移除这两个 daemons的启
动。
Portmap daemon 是用来处理 RPC 服务用的,如果你的机器不是台 NFS
Server 或不想执行 RPC 程式,你可以移除 portmap 的启动。
sendmail 是另外一个需要相当大量记忆体的 daemon,如果你从不使用
你的 Linux 机器当做 Mail Server,你可以放心的移除 sendmail 的启
动。
在你的系统上一定还有许多你不需要用到的 daemons 启动,将它们移除
掉,你唯一需要留著启动的 daemon 是 syslogd 及 klogd。
几个虚拟终端机则视你的喜好而定,只要记得你执行越少的虚拟终端
以上的这些步骤是我在我的 Linux 系统上用来节省记忆体的方法,希
望我已经提供了能让你的 Linux 系统节省记忆体的方法。