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>.
2000-12-12
0.1
2000-12-01
tb
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 :)
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".
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:
Aprire
/etc/inittab con un
editor di testo.
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.
Riavviare il sistema affinché
le modifiche abbiano effetto.
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.*
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.
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
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.
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.
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.
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.
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"!