这份 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 系统节省内存的方法。