184 lines
7.4 KiB
Plaintext
184 lines
7.4 KiB
Plaintext
Small Memory mini-HOWTO
|
||
|
||
Todd Burgess
|
||
|
||
tburgess@uoguelph.ca
|
||
|
||
2000-12-12
|
||
Revision History
|
||
Revision 0.1 2000-12-01 Revised by: tb
|
||
|
||
|
||
Describes how to run Linux on a system with a small amount of memory.
|
||
|
||
-----------------------------------------------------------------------------
|
||
Table of Contents
|
||
1. Introduction
|
||
2. Linux Kernel
|
||
3. Virtual Consoles
|
||
4. Daemons
|
||
4.1. inetd
|
||
4.2. lpd
|
||
4.3. nfsd and mountd
|
||
4.4. portmap
|
||
4.5. sendmail
|
||
4.6. others
|
||
|
||
|
||
5. Conclusions
|
||
|
||
-----------------------------------------------------------------------------
|
||
1. Introduction
|
||
|
||
Assuming buying more memory is out of the question there are many things you
|
||
can do to tighten up memory usage in Linux.
|
||
|
||
Many Linux distributions out of the box are quite bloated from a memory
|
||
perspective. They run more services and offer more features than most of us
|
||
will ever need. By removing many of these services you can free up several
|
||
megabytes of real memory.
|
||
|
||
My own system is a 486DX2-66 with 12MB of physical memory and 12MB of swap
|
||
space. It has run Linux for the last 3 years quite happily, and hopefully it
|
||
will run Linux for several more years. :)
|
||
-----------------------------------------------------------------------------
|
||
|
||
2. Linux Kernel
|
||
|
||
All the Linux kernels which come with distributions are quite bloated and
|
||
contain more features than any of us will ever need or use. If you have not
|
||
re-compiled your own kernel, it is highly recommended that you do so. How to
|
||
re-compile a kernel is beyond the scope of this document, but many excellent
|
||
Linux books and guides cover this subject in intimate detail.
|
||
|
||
If you do re-compile your kernel, remember to put in no more features than
|
||
you need. For instance: how many of you include PLIP support in your kernel?
|
||
How many of you who include it actually use it? Smaller kernels require less
|
||
time to load, use less memory, and use less CPU cycles.
|
||
|
||
Another thing is modules. I personally do not use them because I found them
|
||
to be a cumbersome. If you use them and like them then they can help to
|
||
relieve "kernel bloat."
|
||
-----------------------------------------------------------------------------
|
||
|
||
3. Virtual Consoles
|
||
|
||
VCs are a great way to free up memory. Most Linux distributions run about 6
|
||
of them out of the box. On average running 6 VCs requires about 4MB of
|
||
memory. Removing a couple of them can free up a couple MBs of memory. Most
|
||
users can get away with running only 3 or 4 VCs. How many you choose to
|
||
remove is a matter personal preference. Just remember that the fewer you run,
|
||
the more memory your applications will have to run.
|
||
|
||
The file which outlines how many VCs get loaded is /etc/inittab. In order to
|
||
remove VCs:
|
||
|
||
1. Load /etc/inittab in a text editor.
|
||
|
||
2. Look for a line which looks like the following line (the key feature
|
||
being a line which starts with c1):
|
||
c1:12345:respawn:/sbin/getty tty1 38400
|
||
linux
|
||
|
||
Start at the highest number (i.e. c6) and comment it out by inserting a '
|
||
#' in the first row. Repeat this step as many times as needed. Remember
|
||
every line you comment out is one less VC running.
|
||
|
||
3. Re-boot the system for your changes to take effect.
|
||
|
||
|
||
-----------------------------------------------------------------------------
|
||
4. Daemons
|
||
|
||
Many Linux distributions run daemons most of us will never use. Most of these
|
||
daemons are loaded by scripts. Where these scripts are and what they are
|
||
called depends on your Linux distribution. Slackware set-up scripts are
|
||
buried in /etc/rc.d/rc.*.
|
||
|
||
Before you proceed, a knowledge of Unix shell script programming would be a
|
||
definite asset. However, if you have no experience writing Unix shell
|
||
scripts, what follows is probably the quickest introduction to shell script
|
||
programming ever written.
|
||
|
||
Take the following shell script:
|
||
#!/bin/sh echo "hello world"
|
||
#echo "good bye cruel world"
|
||
|
||
The previous code will echo the string "hello world". Shell scripts must
|
||
contain the the line
|
||
"#!/bin/sh"
|
||
at the very top line. After that every line is executed as if you had typed
|
||
it at the keyboard (think of shell scripts as nothing more then glorified
|
||
keyboard macros).
|
||
|
||
Lines which begin with a '#' are said to be commented out because they do not
|
||
get executed by the shell. Most start-up scripts when they load daemons look
|
||
like:
|
||
if somecondition
|
||
do something
|
||
fi
|
||
|
||
What you want to do is comment out every line starting with the
|
||
if
|
||
statement and ending with the
|
||
fi
|
||
statement.
|
||
|
||
If you want to find where a daemon is loaded, search the start-up scripts for
|
||
the name of the daemon. If I wanted to find where inetd is loaded in
|
||
Slackware I would do the following:
|
||
$ cd /edt/rc/d $grep -n inetd rd.*
|
||
-----------------------------------------------------------------------------
|
||
|
||
4.1. inetd
|
||
|
||
inetd allows people to do things like telnet, ftp, and send talk requests to
|
||
your machine. If you never use your system as a server or need to access any
|
||
of its services remotely you can remove inetd.
|
||
-----------------------------------------------------------------------------
|
||
|
||
4.2. lpd
|
||
|
||
lpd is used to print files on your printer using the lpr command. If you
|
||
never print on your Linux box you can remove lpd. If, however, you own a HP
|
||
Deskjet ?? printer and would like to print, I highly recommend the package I
|
||
put together called dj-printcap which is available at:
|
||
|
||
ftp://sunsite.unc.edu/pub/Linux/system/Printing/dj-printcap.tar.gz
|
||
-----------------------------------------------------------------------------
|
||
|
||
4.3. nfsd and mountd
|
||
|
||
These two daemons are used to run an NFS server. If you never use your Linux
|
||
system as an NFS server you can safely remove these two daemons.
|
||
-----------------------------------------------------------------------------
|
||
|
||
4.4. portmap
|
||
|
||
The portmap daemon is used to handle RPC services. If you do not run an NFS
|
||
server or any other RPC programs you can remove portmap.
|
||
-----------------------------------------------------------------------------
|
||
|
||
4.5. sendmail
|
||
|
||
sendmail is another daemon which requires a fair bit of memory. If you never
|
||
use your Linux box as a relay for sending e-mail or you never receive mail on
|
||
your Linux box, you can probably remove sendmail. If you do send e-mail from
|
||
your Linux box most e-mail clients can be set-up to send e-mail from another
|
||
mail server.
|
||
-----------------------------------------------------------------------------
|
||
|
||
4.6. others
|
||
|
||
There may be other daemons your system starts up which you do not need.
|
||
Remove what you feel you have to. Two daemons which you must run are syslogd
|
||
and klogd.
|
||
-----------------------------------------------------------------------------
|
||
|
||
5. Conclusions
|
||
|
||
The previous discussion illustrates the steps I took to tighten up my memory
|
||
usage on my Linux box. Hopefully I have provided you with some insight into
|
||
what you can do with your Linux box to conserve memory. Good luck and happy
|
||
hacking!
|