Small Memory mini-HOWTO
Todd
Burgess
tburgess@uoguelph.ca
Vertaald door: Ellen
Bokhorst
tburgess@uoguelph.ca
Beschrijft hoe Linux op een systeem met weinig geheugen te draaien.
12-12-2000
0.1
01-12-2000
tb
Introductie
Ervan uitgaande dat er geen sprake kan zijn van het kopen van meer
geheugen, dan kun je een aantal dingen doen om het geheugengebruik onder Linux
terug te dringen.
Veel Linux distributies die klaar voor gebruik worden geleverd, zijn
vanuit geheugenperspectief nogal overbeladen. Ze draaien meer services
en bieden meer features dan de meesten van ons ooit nodig zullen hebben.
Door veel van deze services uit te schakelen kun je verscheidene megabytes
aan geheugen vrijmaken.
Mijn eigen systeem is een 486DX2-66 met 12MB fysiek geheugen en 12 MB
swap space. Hierop heeft Linux de afgelopen jaren prima gedraaid en hopelijk
zal het Linux nog aardig wat meer jaren draaien. :)
Linux Kernel
Alle Linux kernels die met distributies worden geleverd zijn nogal
overbeladen en bevatten meer features dan iemand van ons ooit nodig zal
hebben. Als je je eigen kernel nog nooit hebt gecompileerd, dan is het
zeer aan te raden dat je dit doet. Hoe je een kernel compileert valt buiten
het kader van dit document, maar veel uitstekende Linux boeken en handleidingen
die dit onderwerp in uitzonderlijk detail behandelen.
Denk eraan niet meer features te configureren dat je nodig hebt
wanneer je de kernel gaat compileren. Als voorbeeld: hoeveel van jullie
sluiten PLIP ondersteuning in, in de kernel? En hoeveel van jullie die
het opnemen in de kernel gebruiken het daadwerkelijk? Kleinere kernels
hebben minder tijd nodig om te worden geladen, gebruiken minder geheugen
en gebruiken minder CPU cycli.
Nog iets anders is het gebruik van modules. Persoonlijk maak ik hier
geen gebruik van, omdat ik ze omslachtig vind. Als je er wel prijs op stelt
en ze gebruikt, kunnen ze overbeladen kernels voorkomen.
Virtuele Consoles
Een uitstekende manier om geheugen vrij te maken is het verlagen
van het aantal VC's. Een kant-en-klare Linux distributie draait er ongeveer
6 van. Gemiddeld vereist het draaien van 6 VC's ongeveer 4MB geheugen.
Een paar ervan verwijderen kan een paar MB's geheugen vrij maken.
De meeste gebruikers hebben genoeg aan slechts 3 of 4 VC's. Hoeveel je
ervan wilt uitschakelen is een kwestie van persoonlijke voorkeur. Denk er
gewoon aan dat hoe minder je ervan draait, des te meer geheugen er voor
je applicaties over zal blijven.
Het bestand waarin wordt aangegeven hoeveel VC's worden geladen is
/etc/inittab. Voor het deactiveren van VC's:
Laad /etc/inittab in een teksteditor.
Zoek naar een regel die lijkt op de volgende regel (met als
belangrijkste kenmerk een regel die begint met c1):
c1:12345:respawn:/sbin/getty tty1 38400
linux
Begin bij het hoogste nummer (d.w.z. c6) een plaats hier een
commentaarteken voor (een '#'). Herhaal deze stap zo vaak als nodig is.
Elke regel waar je een commentaarteken voor plaatst, is één
VC minder draaiend.
Start het systeem opnieuw op om de wijzigingen te activeren.
Daemons
Veel Linux distributies draaien daemons die de meesten van ons
nooit zullen gebruiken. De meeste daemons worden door scripts geladen.
Waar deze scripts zijn te vinden en hoe ze worden genoemd is afhankelijk
van je Linux distributie. Slackware setup scripts
zijn te vinden in /etc/rc.d/rc.*.
Voor je verdergaat, is kennis van Unix shellscript programmering
beslist een pluspunt. Als je echter geen ervaring hebt in het schrijven
van Unix shellscripts, is wat hieronder volgt waarschijnlijk de snelste
introductie in shellscript programmering die ooit is geschreven.
Neem het volgende shellscript:
#!/bin/sh echo "hello world"
#echo "good bye cruel world"
De voorgaande code zal de string "Hello world" op het scherm
weergeven. In shellscripts moet op de eerste regel
"#!/bin/sh" voorkomen.
Daarna wordt elke regel uitgevoerd alsof je deze zou hebben getypt vanaf
je toetsenbord (denk aan shellscripts als niets meer dan veredelde
toetsenbordmacro's).
Regels beginnend met een '#' worden beschouwd als commentaarregels,
omdat ze niet door de shell worden uitgevoerd.
De meeste opstartscripts die daemons laden zien er ongeveer zo uit:
if eenconditie
doe iets
fi
Wat je kunt doen om het laden van een daemon uit te schakelen, is het
plaatsen van een commentaarteken voor elke regel beginnend met
if en elke regel eindigend op
fi.
Als je erachter wilt komen vanuit welk script een daemon wordt geladen.
doorzoek je de opstartscripts op de naam van de daemon.
Wanneer ik wil weten vanwaar
inetd wordt geladen onder Slackware dan doe ik
het volgende:
$ cd /edt/rc/d $grep -n inetd rd.*
inetd
inetd staat mensen toe dingen te doen als
telnet, ftp, en het sturen van
talk verzoeken naar je machine.
Als je je systeem nooit als een server gebruikt
of op afstand een van de services hoeft te benaderen, dan kun je
inetd verwijderen.
lpd
lpd wordt gebruikt om bestanden op je
printer af te drukken met behulp van de opdracht
lpr. Je kunt lpd verwijderen
als je nooit iets afdrukt vanaf je Linux box. Als je echter een HP Deskjet
™ printer hebt en wel wilt kunnen afdrukken, dan raad ik je van harte
het package aan dat ik samen heb gesteld met de naam dj-printcap. Het is
beschikbaar vanaf:
ftp://sunsite.unc.edu/pub/Linux/system/Printing/dj-printcap.tar.gz
nfsd en mountd
Deze twee daemons worden gebruikt om een NFS-server te draaien.
Als je je Linux systeem nooit als een NFS server gebruikt, dan kun je
deze twee daemons veilig verwijderen.
portmap
De portmap daemon wordt gebruikt voor het
afhandelen van RPC services. Je kunt portmap
verwijderen als je nooit een NFS-server draait of enig ander RPC programma.
sendmail
sendmail is een andere daemon waarvoor
flink wat geheugen nodig is. Gebruik je je Linux box nooit als een relay
voor het versturen van e-mail of ontvang je nooit mail op je Linux box, dan
kun je sendmail waarschijnlijk wel verwijderen.
Verstuur je e-mail vanaf je Linux box, dan kunnen de meeste e-mail clients
zo worden ingesteld dat ze e-mail versturen vanaf een andere mailserver.
anderen
Het kan zijn dat er nog andere daemons worden geladen wanneer je je
systeem start die je niet nodig hebt.
Verwijder datgeen waarvan je denkt dat dit nodig is. Twee daemons die moeten
blijven draaien zijn
syslogd en klogd.
Conclusies
De voorgaande bespreking illustreert de stappen die ik nam om het
geheugengebruik op mijn Linux box terug te dringen. Hopelijk heb ik je
voldoende inzicht kunnen geven in wat je kunt doen met je Linux box om
geheugen te besparen. Veel geluk en happy hacking!