Small Memory Mini-HOWTO v0.1

di: Todd Burgesst, burgess@uoguelph.ca

1. Introduzione

Lo scopo di questo mini HOWTO è descrivere come far funzionare Linux su un sistema dotato di una piccola quantità di memoria. Assumendo che comprare più memoria sia fuori discussione, ci sono molti accorgimenti che si possono usare per ridurre la richiesta di memoria in Linux.

Molte distribuzioni sono piuttosto esose dal punto di vista della richiesta di memoria. Lanciano servizi e offrono configurazioni che la maggior parte di noi non userà mai. Rimuovendo molti di questi servizi si possono liberare alcuni megabyte di memoria.

Il mio sistema è un 486DX2-66 con 12MB di memoria fisica e 12MB di swap. Ha fatto girare Linux negli ultimi 3 anni abbastanza bene e spero che continui a farlo per molti altri anni. :)

2. Il kernel di Linux

Tutti i kernel che si trovano nelle distribuzioni sono piuttosto gonfiati e contengono caratteristiche di cui nessuno di noi avrà bisogno o userà. Se non avete ricompilato il kernel, siete fortemente raccomandati di farlo. Come ricompilare il kernel è al di là degli scopi di questo documento ma ci sono molti ottimi libri di Linux e manuali che trattano questo argomento in profondo dettaglio.

Se ricompilate il kernel ricordatevi di inserire solo le caratteristiche di cui avete realmente bisogno. Per esempio: quanti di voi hanno incluso il supporto per PLIP nel kernel? Quanti di coloro che lo hanno incluso lo utilizzano realmente? Un kernel più ridotto richiede meno tempo per essere caricato, usa meno memoria e meno cicli di CPU.

Un altro punto importante: i moduli. Personalmente non li uso perché li trovo scomodi. Se li usate e vi piacciono, possono aiutare a "sgonfiare il kernel".

3. Console virtuali (VC)

Le VC sono un ottimo modo per liberare memoria. La maggior parte delle distribuzioni ne usa circa 6. In media, far girare 6 VC richiede circa 4MB di memoria. Eliminarne un paio può liberare un paio di MB di memoria.

La maggior parte degli utenti se la cava anche con solo 3 o 4 VC. Quante rimuoverne dipende dalle proprie personali preferenze. Ricordatevi solo che meno ne girano, più memoria sarà a disposizione delle applicazioni.

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

  1. Aprite /etc/inittab con un editor di testo
  2. Cercate una linea simile a questa (la cosa importante è che inizi con c1): c1:12345:respawn:/sbin/getty tty1 38400 linux. Iniziate dal numero più alto (per esempio c6) e commentatelo inserendo un '#' nella prima colonna. Ripetete questo passo tante volte quante necessario. Ricordate che ogni linea che commentate è una VC in meno.
  3. Riavviate il sistema perché i cambiamenti abbiano effetto.

4. Demoni

Molte distribuzioni attivano molti demoni che la maggior parte di noi non utilizzerà mai. La maggior parte di questi demoni sono lanciati con degli script. Dove si trovano questi script e come vengono chiamati dipende dalla distribuzione. Gli script di inizializzazione di Slackware si trovano in /etc/rc.d/rc.*.

Prima di procedere, è data per scontata una conoscenza della programmazione in shell di unix. Se però non siete pratici a scrivere shell script, ciò che segue è probabilmente la più veloce introduzione alla programmazione di shell script mai scritta.

Considerate il seguente esempio


#!/bin/sh
echo "hello world"
#echo "addio mondo crudele"

Visualizzerà la stringa "hello world". Gli shell script devono contenere "#!/bin/sh" nella prima linea. Dopo quella, ogni linea è eseguita come se l'aveste inserita da tastiera (potete pensare che gli shell script non siano niente di più che delle macro un po' in grande).

Le linee che iniziano con un '#' si dice che sono commentate perché non vengono eseguite dalla shell. La maggior parte degli script di inizializzazione quando caricano demoni assomigliano a


if qualchecondizione
 do qualcosa
fi

Quello che dovete fare è commentare ogni linea che inizia con l'espressione if e finisce con fi

Se volete capire dove viene caricato un demone, ciò che dovete fare è cercare nello script di inizializzazione il nome del demone. Se volessi trovare dove è caricato inetd in Slackware, farei così:


  1. cd /etc/rc.d
    


  2. grep -n inetd rc.*
    

4.1 inetd

inetd permette di fare cose come telnet, ftp e inviare richieste di talk alle vostre macchine. Se non usate mai il vostro sistema come server o non avete bisogno di accedere ad alcuno di questi servizi remotamente, allora potete rimuovere inetd

4.2 lpd

lpd è usato per stampare file sulla vostra stampante usando il comando lpr. Se non stampate mai sulla vostra macchina Linux potete rimuovere lpd. Se avete una stampante HP Deskjet e volete stampare, vi raccomando fortemente il pacchetto che ho creato, chiamato dj-printcap. È disponibile presso: ftp://sunsite.unc.edu/pub/Linux/system/Printing/dj-printcap.tar.gz

4.3 nfs e mountd

Questi due demoni sono usati per far funzionare un server NFS. Se non usate mai la vostra macchina Linux come server NFS, potete tranquillamente rimuovere questi due demoni.

4.4 portmap

Il demone portmap è usato per gestire i servizi RPC. Se non usate un server NFS o qualche altro programma RPC, potete rimuovere portmap.

4.5 sendmail

sendmail è un altro demone che richiede abbastanza memoria. Se non usate mai la vostra macchina Linux come stazione per inviare e-mail o non ricevete posta sulla macchina Linux, potete probabilmente rimuovere sendmail. Se invece inviate e-mail dalla macchina Linux, la maggior parte dei client di posta possono essere configurati in modo tale da inviare le e-mail attraverso un altro server di posta.

4.6 altri

Ci potrebbero essere altri demoni che il vostro sistema lancia e che voi non usate. Rimuovete quelli che pensate di dovere rimuovere. Due demoni che invece devono rimanere attivi sono syslogd e klogd.

5. Conclusioni

Questo documento illustra i passi che ho intrapreso per ridurre la richiesta di memoria sulla mia macchina Linux. Spero di avervi dato qualche buona dritta su cosa potete fare con la vostra macchina Linux per conservarne la memoria.

Buona fortuna e happy hacking! Todd Burgess

tburgess@uoguelph.ca http://eddie.cis.uoguelpg.ca/~tburgess

Traduzione a cura di Marco Cova marcocova@infinito.it