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.

Inhoudsopgave

1. Introductie............................................................................................................................................................1 2. Linux Kernel.........................................................................................................................................................1 3. Virtuele Consoles..................................................................................................................................................2 4. Daemons...............................................................................................................................................................2 5. Conclusies.............................................................................................................................................................4

1. 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. :)

2. 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.

3. 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:

1. Laad /etc/inittab in een teksteditor.

2. 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.

3. Start het systeem opnieuw op om de wijzigingen te activeren.

4. 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.*

4.1. 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.

4.2. 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 (ftp://ftp.redhat.com/pub/redhat/redhat-4.2/i386/RedHat/RPMS/dhcpcd-0.6-2.i386.rpm)

4.3. 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.

4.4. 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.

4.5. 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.

4.6. 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.

5. 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!