Small Memory mini-HOWTO

Todd Burgess

tburgess@uoguelph.ca

Descrive come eseguire Linux su un sistema con un piccolo quantitativo di memoria. Traduzione a cura di pctips <pctips@TOGLIMI.hardwaretips.com> e revisione a cura di Claudio Cattazzo <claudio@TOGLIMI.pluto.linux.it>.

Sommario

1. Introduzione ..............................................................................................................................................................2 2. Il kernel Linux...........................................................................................................................................................2 3. Le console virtuali.....................................................................................................................................................2 4. Demoni .......................................................................................................................................................................2

4.1. inetd................................................................................................................................................................3 4.2. lpd...................................................................................................................................................................3 4.3. nfsd e mountd.................................................................................................................................................4 4.4. portmap...........................................................................................................................................................4 4.5. sendmail .........................................................................................................................................................4 4.6. altri .................................................................................................................................................................4

5. Conclusione................................................................................................................................................................4

1. Introduzione

Assumendo che comprare ulteriore memoria sia fuori luogo, ci sono molte cose che si possono fare per ottimizzare l’utilizzo della memoria sotto Linux.

Molte distribuzioni Linux sono sprecone da questo punto di vista. Eseguono più servizi e offrono più funzionalità di quelle che serviranno mai alla maggior parte di noi. Rimuovendo molti di questi servizi si potranno liberare importanti megabyte di memoria reale.

Il mio sistema è un 486DX2-66 con 12MB di memoria fisica e 12 MB di spazio swap. Ha fatto funzionare Linux piuttosto felicemente negli ultimi tre anni e spero che lo farò girare per molti altri anni ancora :)

2. Il kernel Linux

Tutti i kernel Linux presenti nelle distribuzioni sono piuttosto abbondanti e contengono più funzionalità di quelle che chiunque tra noi richiederà o userà mai. Se non si è ricompilato un proprio kernel si consiglia altamente di farlo. Come ricompilare un kernel è fuori dallo scopo di questo documento, ma molti libri e guide eccellenti per Linux coprono questo argomento nei minimi dettagli.

Se si ricompila il kernel ci si ricordi di non inserirvi più funzionalità di quelle necessarie. Per esempio: quanti includono il supporto PLIP nel kernel? Quanti lo usano realmente? Kernel più piccoli richiedono meno tempo per caricarsi, usano meno memoria e occupano meno cicli di CPU.

Un’altra cosa sono i moduli. Personalmente non li uso perché li trovo ingombranti. Se si usano e si gradiscono possono aiutare ad alleggerire "l’abbondanza dei kernel".

3. Le console virtuali

Le console virtuali [NdT: o VC, dall’inglese Virtual Consoles] sono una buona maniera per liberare memoria. La maggior parte delle distribuzioni Linux ne usa all’incirca sei. In media eseguire 6 VC richiede circa 4MB di memoria. Rimuovendone un paio è possibile liberare un paio di MB di memoria. La maggior parte degli utenti usa solo 3 o 4 VC. Quante eliminarne è una scelta strettamente personale. Ci si ricordi solo che meno se ne eseguono più memoria avranno le proprie applicazioni per lavorare.

Il file che stabilisce quante VC vengono caricate è /etc/inittab. Per rimuovere delle VC:

1. Aprire /etc/inittab con un editor di testo.

2. Cercare una riga che somigli alla seguente (la caratteristica chiave è una riga che inizi per c1):

    c1:12345:respawn:/sbin/getty tty1 38400 linux

Iniziare dal numero più grande (p.e. c6) e commentarlo inserendo un ’#’ nella prima colonna. Ripetere questo passaggio quante volte si vuole. Ci si ricordi che ogni riga commentata equivale ad una VC in meno.

3. Riavviare il sistema affinché le modifiche abbiano effetto.

4. Demoni

Molte distribuzioni Linux avviano demoni che la maggior parte di noi non userà mai. Molti di questi demoni sono caricati attraverso degli script. Dove sono e come sono chiamati dipende dalla distribuzione Linux. Nella configurazione di Slackware questi script sono contenuti in /etc/rc.d/rc.*.

Prima di iniziare, una conoscenza della programmazione degli script di shell in Unix sarebbe una solida base. Comunque, se non si ha esperienza nello scrivere script di shell per Unix, quella che segue probabilmente è la più breve introduzione alla programmazione di script di shell mai scritta.

Si osservi questo script di shell:

#!/bin/sh
echo "ciao mondo"
#echo "addio mondo crudele"

Questo codice mostrerà la stringa "ciao mondo". Gli script di shell devono contenere la riga

#!/bin/sh

come prima riga. Dopo questo viene eseguita ogni riga come se fosse stata scritta alla tastiera (si pensi agli script di shell come a nulla più che delle macro da tastiera).

Le righe che iniziano con un ’#’ sono usate per commenti poiché non sono eseguite dalla shell. La maggior parte degli script di avvio che caricano demoni è più o meno così:

if condizione
do operazione
fi

Quello che si dovrebbe fare è commentare ogni riga inziante con

if

e terminante con

fi

Se si vuole vedere da dove viene caricato un demone, quello che si deve fare è cercare gli script di avvio con il suo nome. Se si vuole cercare dove si trova inetd in Slackware si deve eseguire ciò che segue:

$ cd /edt/rc/d $grep -n inetd rd.*

4.1. inetd

inetd permette di utilizzare strumenti come telnet, ftp ed inviare richieste di tipo talk alla propria macchina. Se non si usa mai il proprio sistema come server o non si deve accedere a nessuno di questi servizi remotamente, si può rimuovere inetd.

4.2. lpd

lpd permette di stampare file con la propria stampante utilizzando il comando lpr. Se non si stampa mai sulla propria macchina Linux si può rimuovere lpd. Comunque, se si ha una stampante HP Deskjet ™ e si vuole stampare, consiglio il pacchetto dj-printcap che ho pubblicato e che è disponibile su

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 e mountd

Questi due demoni sono usati per eseguire un server NFS. Se non si usa il proprio sistema Linux come server NFS si possono tranquillamente rimuovere.

4.4. portmap

Il demone portmap è usato per gestire servizi RPC. Se non si esegue un server NFS o nessun altro programma RPC si può rimuovere portmap.

4.5. sendmail

sendmail è un altro demone che richiede una discreta quantità di memoria. Se non si usa mai la propria macchina Linux come server per mandare e-mail o non se ne riceve, probabilmente si può rimuovere sendmail. Se si mandano e-mail dalla propria macchina Linux, la maggior parte dei client può essere configurata per inviare e-mail da un altro server di posta.

4.6. altri

Ci possono essere molti altri demoni che il proprio sistema avvia di cui non si ha bisogno. Si rimuova quello che si vuole. I due demoni che devono essere eseguiti per forza sono syslogd e klogd.

5. Conclusione

La precedente discussione mostra i passaggi che ho svolto per ottimizzare l’utilizzo della memoria sulla mia macchina Linux. Ho illustrato alcune tecniche che potete usare sulla vostra macchina Linux per conservare memoria. Buona fortuna e "happy hacking"!