[>a2381.html>] [<a2379.html<] [^a2.html^]


Capitolo 295.   Configurazione del sistema

295.1   Come mantenere sul sistema più di una distribuzione GNU/Linux

Come si fa a far convivere due o più Linux?

---------

Ecco una metodica:

Nel lilo.conf che segue, c'è una sezione per Debian GNU/Linux, una per Red Hat e una per il Dos

In /boot ho messo tutti i kernel coinvolti, con i rispettivi System.map e in /lib/modules del primo disco ho copiato la directory dei moduli di Debian GNU/Linux, ovviamente compilati in Debian GNU/Linux.

/etc/lilo.conf:

boot=/dev/hda3
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
password=**********
restricted
default=linux
image=/boot/vmlinuz-2.2.5-15
        label=linux
        root=/dev/hda2
        read-only
image=/boot/vmlinuz-2.2.12
        label=nuova
        root=/dev/hda2
        read-only
image=/boot/vmlinuz.debian
        label=debian
        root=/dev/hdc5
        read-only
other=/dev/hda1
        label=dos
        table=/dev/hda

[giuliano@localhost giuliano]$ ls /lib/modules[Invio]

total 3
drwxr-xr-x   9 root     root         1024 Oct 28 19:32 2.0.36/
drwxr-xr-x   6 root     root         1024 Oct 31 18:34 2.2.12/
drwxr-xr-x  11 root     root         1024 Oct 27 01:59 2.2.5-15/

[giuliano@localhost giuliano]$ ls /boot[Invio]

total 3735
-rw-r--r--   1 root     root       145794 Nov  1 13:07 System.map-2.0.36
-rw-r--r--   1 root     root       149820 Oct 31 17:30 System.map-2.2.12
-rw-r--r--   1 root     root       186846 Apr 20  1999 System.map-2.2.5-15
-rw-r--r--   1 root     root          512 Oct 27 01:55 boot.0303
-rw-r--r--   1 root     root         4544 Apr 13  1999 boot.b
-rw-r--r--   1 root     root          612 Apr 13  1999 chain.b
drwxr-xr-x   2 root     root        12288 Oct 27 01:30 lost+found/
-rw-------   1 root     root        26624 Nov  1 15:31 map
lrwxrwxrwx   1 root     root           20 Oct 27 01:38 module-info -> module-info-2.2.5-15
-rw-r--r--   1 root     root        11773 Apr 20  1999 module-info-2.2.5-15
-rw-r--r--   1 root     root          620 Apr 13  1999 os2_d.b
-rwxr-xr-x   1 root     root      1469449 Apr 20  1999 vmlinux-2.2.5-15*
-rw-r--r--   1 root     root       715260 Nov  1 13:08 vmlinuz-2.0.36
-rw-r--r--   1 root     root       454123 Oct 31 17:30 vmlinuz-2.2.12
-rw-r--r--   1 root     root       617431 Apr 20  1999 vmlinuz-2.2.5-15
lrwxrwxrwx   1 root     root           14 Nov  1 15:20 vmlinuz.debian -> vmlinuz-2.0.36

Per i vari kernel Red Hat, nel file /etc/rc.d/init.d/syslog ho sostituito la riga:

daemon klogd

con:

daemon klogd -k /boot/System.map-`uname -r`

per far riconoscere senza problemi ai vari kernel i loro System.map e /lib/modules/versione_che_ti_serve

295.2   Linux e la deframmentazione

Come posso trovare un programma tipo l'utilità di deframmentazione dischi di Windows?

---------

Il deframmentatore per Linux esiste ma non usatelo. Se proprio volete, è necessario utilizzare Linux in una modalità particolare per evitare che processi diversi vadano a scrivere sul filesystem mentre lo si deframmenta. Inoltre c'è lo svantaggio che non vi offre alcuna garanzia sul suo corretto funzionamento (il numero di versione parla chiaro). Normalmente la deframmentazione di un filesystem ext2 si stabilizza fra il 4 e 5 per cento, a meno che non ci siano una grande quantità di installazioni.

Per chi non lo sapesse, ext2 è più ottimizzato rispetto alla FAT perché quando si salvano le informazioni, esse si vanno a ricercare zone del disco per spezzare al minimo i file.

Fino ad ora, il solo mezzo che ho usato per deframmentare un disco è:

Creare un nastro di backup, ricreare il file system, ripristinare il nastro.

È un po' macchinoso ma se proprio bisogna deframmentare è il metodo più sicuro.

295.3   /etc/bashrc, /etc/profile, ~/.bashrc, ~/.bash_profile

Che differenze e relazioni ci sono tra i file: /etc/bashrc, /etc/profile, home/.bashrc, home/.bash_profile? , , ,

---------

Il primo contiene gli alias e le funzioni per il sistema mentre il terzo quelle valide per l'utente.

Il secondo contiene le variabili d'ambiente e i programmi di avvio del sistema mentre il quarto quelli dell'utente.

I file /etc/profile e ~/.bash_profile contengono le configurazioni per una shell di login, mentre gli altri due per quelle non di login. In pratica i primi file vengono letti ed eseguiti solo per la prima shell che si apre, e non per le successive le quali eseguono ogni volta i bashrc (nota: ricordarsi che ogni volta che viene eseguito uno script, viene aperta una shell non interattiva)

295.4   bashrc modificato ma modifiche non effettuate per gli utenti

Ho dichiarato alcuni alias nel file /etc/bashrc ma posso usarli solo se sono root mentre se accedo da utente essi non vengono abilitati. Il problema è relativo al file /etc/bashrc o ai permessi dell'utente?

---------

Inserisci nel file .bashrc dell'utente:

if [ -f /etc/bashrc ]; then
   . /etc/bashrc
fi

295.5   Far rileggere a Linux file di avvio modificati

Quando si modifica un file rc (es .bashrc o .kshrc) nella propria directory, come si fa a rendere attive le modifiche senza riavviare la macchina?

---------

basta fare:

# source .bashrc[Invio]

# source .kshrc[Invio]

oppure, al massimo, logout e poi di nuovo login.

295.6   Modifiche apportate non riscontrabili al riavvio del sistema

Mi è capitato in situazioni di emergenza di apportare modifiche al filesystem ma al riavvio del sistema, è come se non avessi mai effettuato nessun cambiamento. Perché?

---------

Questo succede perché non si è scaricata la memoria cache, quindi le modifiche non sono state applicate. Per fare scrivere effettivamente quello che si è fatto occorre digitare:

# sync[Invio]

In ogni caso è bene riavviare dando:

# shutdown -r now[Invio]

e non premendo il pulsante di reset. Anche in situazioni di emergenza, se si possono fare modifiche al filesystem, si può anche avviare lo spegnimento.

295.7   Lanciare un programma in fase di avvio del sistema

Devo attivare un programma scritto da me in fase di avvio di una macchina Debian GNU/Linux 2.0. Vi chiedo quale possa essere un modo intelligente per farlo. Cioè se devo lanciare uno script, oppure inserire il mio programma in uno script che viene eseguito al boot.

---------

  1. Crea uno script che richiami il tuo programma;

  2. metti il tuo script in /etc/init.d;

  3. crea un link (ln -s) a questo script nella directory /etc/rcX.d dove X è il runlevel. (Può anche essere collegato in più di una directory).

295.8   Servizi all'avvio in Debian GNU/Linux

In Debian GNU/Linux non trovo nessun'applicazione in grado di farmi configurare i servizi che devono essere lanciati all'avvio. Come si procede?

---------

Il comando update-rc.d fa al caso tuo. In ogni caso puoi entrare nelle directory /etc/rcx.d/ , dove rcx=rcS,rc0,rc1,...,rc6 e creare nella directory /etc/init.d/ i link agli script con un nome opportuno (leggiti /usr/doc/sysvinit/README.runlevels.gz).

295.9   Disattivare i servizi in Red Hat 6.0

Durante la procedura di installazione della Red Hat 6.0, ho scelto i servizi che desideravo si attivassero automaticamente ad ogni avvio del sistema. Ora però ho l'esigenza di disattivarne alcuni. Il punto è come fare? Devo riconfigurare il kernel per escluderli oppure devo modificare un particolare file di configurazione?

---------

All'interno di /etc/rc.d/rcX.d/ (con x = il tuo runlevel abituale,normalmente 3) sono presenti dei collegamenti (link) simbolici agli script dei servizi presenti all'interno della directory /etc/rc.d/init.d/.

Se dai il comando:

# ls -l[Invio]

vedrai i link che puntano ai suddetti file. Questi link sono fatti così:

Sxxnome_del_servizio

Kxxnome_del_servizio

S = start cioè partenza K = kill cioè fine;

xx = numero, ordine di partenza del servizio

Se vuoi eliminare un servizio, basta che elimini il link Sxxnome_servizio.

Se poi ti riservirà basta che rifai il link allo script in /etc/rc.d/init.d

295.10   Far ripartire i demoni

Se modifico alcuni file di configurazione di alcuni demoni, come posso rendere effettive tali modifiche senza dover riavviare la macchina?

---------

Devi far ripartire i demoni appropriati per fargli rileggere i file che hai modificato.

Se individui il pid del comando attraverso ps:

# ps -aux | grep nome comando[Invio]

puoi utilizzare il comando:

# kill -HUP numero_di_pid[Invio]

per arrestare il demone del processo e per farlo ripartire, facendogli in questo modo leggere il file di configurazione modificato.

Per riavviare, di solito si può anche mandare il sengale 1 al processo con:

# kill -1 pid-del-processo[Invio]

In Apache ad esempio basta uccidere il primo dei processi attivi (definito root) per far ripartire con le nuove impostazioni anche i processi figli.

Un modo ancora più pulito è andare nella directory /etc/init.d o /etc/rc.d/init.d e fare ripartire il demone usando lo script di inizializzazione, ad esempio

# ./apache restart[Invio]

295.11   Cambiare il nome della macchina

Vorrei chiedere come si cambia il nome della mia macchina (da localhost a pinguino per esempio). Ci avevo già provato qualche tempo fa, col pessimo risultato che sendmail presentava lunghi rallentamenti all'avvio di Linux

---------

cambia nel file /etc/hosts la riga:

127.0.0.1       localhost    localhost.localdomain

in (ad esempio):

127.0.0.1       pinguino     pinguino.my.home

aggiorna di conseguenza la voce 'HOSTNAME=' del file /etc/sysconfig/network comando:

# hostname pinguino[Invio]

295.12   Impostazione orologio di sistema

Come imposto l'orologio di sistema?

---------

Con:

# hwclock[Invio]

(timeconfig in una distribuzione Red Hat)

295.13   Aggiornare l'orologio di sistema

Ci sono delle utility scaricabili da Internet per aggiornare l'orologio?

---------

se uccidi xntpd e dai il comando:

# ntpdate www.clock.org[Invio]

ti trovi l'orologio di sistema aggiornato tramite un server atomico.

295.14   Cambio automatico ora legale in Linux

Esiste un sistema per cambio automatico dell'ora legale su Linux?

---------

Funziona automaticamente se hai impostato l'orario del CMOS a GMT.

295.15   Abilitazione 'numlock' all'avvio

Vorrei che all'inizio, quando parte il sistema, il tasto numlock sia abilitato. Che modifiche devo effettuare?

---------

Se da BIOS non è possibile, nella Red Hat modifica

/etc/rc.d/rc.sysinit

e inserisci queste linee:

for t in 1 2 3 4 5 6
do
    /usr/bin/setleds -D +num < /dev/tty$t > /dev/null
done

Nella Debian GNU/Linux crea in /etc/rc.boot uno script con le stesse righe, e nella slackware mettile nel file rc.keymap

295.16   Cancellare /tmp?

Si può cancellare brutalmente il contenuto di /tmp?

---------

Per evitare interferenze con eventuali programmi che stanno usando file dislocati in quella directory, nel caso che tu non sappia se e quali file sono, può essere una buona pratica farlo ad ogni boot della macchina: puoi inserire in uno dei file di avvio (di quelli dedicati a operazioni varie) una riga del genere:

        cd /tmp; rm -rf *

Alcune distribuzioni lo fanno di regola.

Se invece sei certo che quanto vuoi cancellare di /tmp in una dato momento non sia essenziale per l'integrità del sistema, allora cancellalo.

Se lo vuoi fare per bene tenendo in considerazione tutto (il fatto che uno ci possa aver montato un fs su /tmp, ecc.) fai così: (tratto da /etc/init.d/bootmisc.sh [Debian GNU/Linux 2.1])

( cd /tmp && \
  find . -xdev \
  ! -name . \
  ! \( -name lost+found -uid 0 \) \
  ! \( -name quota.user -uid 0 \) \
  ! \( -name quota.group -uid 0 \) \
  -depth -exec rm -rf -- {} \; )
rm -f /tmp/.X*-lock

295.17   Visualizzazione dello spazio su disco

Come vedo quanto spazio disponibile ho sul disco rigido?

---------

Utilizza:

# df[Invio]

che ti dà la percentuale di occupazione di ciascun filesystem montato, con i blocchi liberi. Con l'opzione -h ti dà lo spazio in Mb.

295.18   Visualizzazione variabili d'ambiente

Come visualizzo le variabili d'ambiente?

---------

Occorre digitare:

# printenv[Invio]

295.19   Impostare le variabili d'ambiente

Sto installando un compilatore e il programma di configurazione mi chiede di impostare determinate variabli di ambiente con il comando setenv. Ma la shell mi risponde: command not found.

---------

Il comando setenv fa parte della csh, se non usi questa shell ma usi la bash, utilizza export:

# $ export VARIABILE=valore[Invio]

Qualche esempio:

# export HOSTNAME="`cat /etc/HOSTNAME`"[Invio]

# export MOZILLA_HOME=/usr/lib/netscape[Invio]

# export MAILDIR=/var/spool/mail[Invio]

# export TERM=linux[Invio]

# export PS1='\n\u@\h:[`pwd`] [\t] --> \!\n* '[Invio]

295.20   Visualizzazione librerie usate da un programma

Come faccio a visualizzare che librerie usa un determinato programma?

# ldd programma[Invio]

295.21   Libjpeg 61 62

Cosa faccio se un programma vuole le librerie libjpeg 61 (KDE-1.2) e gli altri della mia distribuzione vogliono le 62?

---------

Se ho ben capito il programma vuole una versione più vecchia. Accontentalo.

Vai in /usr/lib e fai un collegamento simbolico con il comando:

# ln -s libjpeg.so.62 libjpeg.so.61[Invio]

così quando cercherà la libreria vecchia troverà quella nuova e sarà lo stesso. In genere questo trucchetto funziona...

295.22   Scorciatoie per comandi molto lunghi

C'è un modo per non scrivere sempre un comando molto lungo?

---------

Si crea un alias. Es.:

# alias ls='ls -la --color'[Invio]

basterà scrivere ls per avere un elenco dettagliato di tutti i file (anche quelli nascosti) e l'elenco sarà colorato. Gli alias vanno inseriti in ~/.bash_profile se sono specifici di un utente, o in /etc/profile se sono per tutto il sistema.

È da tenere presente anche la possibilità di completare il nome dei comandi e dei file con il tasto [Tab].

295.23   Sospensione (ibernazione) di Linux

Mi chiedevo se anche con Linux potevo fare arrestare il sistema con il metodo di ibernazione. Con Windows 98 e 2000 ci riesco benissimo ma su Linux non ho mai visto tale prospettiva di spegnimento.

---------

Installa l'APM nel kernel e poi con:

# apm --suspend[Invio]

mandi in sospensione la macchina.

LDR --- Copyright © 1999-2000 Gaetano Paolone --  bigpaul @ pluto.linux.it

[>a2381.html>] [<a2379.html<] [^a2.html^]