TAGS CLOUD
Incrementa dimensioniDecrementa dimensioni
Linux hardcore
Prendiamo fiato e immergiamoci nei centri nevralgici del sistema per esplorarne ogni aspetto, anche quelli più nascosti. Dai meandri del kernel alla gestione dei servizi, fino alla configurazione del sistema di avvio. Da oggi in poi il PC non avrà più
(pagina 6 di 9)


Il significato di  DI /PROC
Cos'è e a cosa serve questo particolare file system
 Vogliamo ottenere informazioni dettagliate sul sistema? Allora cerchiamole nella directory /proc. Si tratta di un file system virtuale che risiede in memoria ed è ricco di dati interessanti generati dal kernel sul funzionamento e sulle caratteristiche del PC. Vogliamo sapere a che velocità viaggia attualmente la CPU del portatile? Basta eseguire “cat /proc/cpuinfo”. Allo stesso modo, con “cat /proc/meminfo” otterremo tutti i dati disponibili sullo sato della memoria di sistema, mentre cat /proc /numero_ processo/status ci fornirà informazioni dettagliatissime su un singolo processo (ad esempio, “cat /proc/12848/status”).
Le  “regole” di UDEV
Tra i diversi sistemi appena descritti, udev è sicuramente quello più utile per personalizzare il comportamento del sistema. La configurazione è relativamente semplice, e si effettua modificando o creando delle apposite “regole”. Praticamente, si tratta di intervenire su alcuni file di testo contenuti nella directory /etc/udev/rules.d, ognuno dei quali è formato da chiavi di controllo e da chiavi di assegnazione. Le prime indicano il momento in cui è opportuno compiere una determinata azione (ad esempio, solo quando un dispositivo appartiene ad una marca specifica), le seconde stabiliscono l'operazione da compiere (come, ad esempio, assegnare un dispositivo ad un gruppo di utenti). Nel tutorial “Cambiamo nome alla penna USB”, proponiamo un esempio di regola udev che consente di accedere ad una pendrive USB, sempre mediante il file di dispositivo /dev/penna. Dopo aver seguito i passi della guida, per prima cosa, creiamo la directory /media/penna con “mkdir /media/penna”. A questo punto, aggiungiamo in /etc/fstab un riferimento a /dev/penna per semplificare le operazioni di mount, inserendo una riga simile alla seguente: “/dev/penna /media/penna vfat defaults, user,noauto 0 0”. Fatto ciò, è possibile montare la penna con il semplice comando “mount /media/penna”. Così facendo, ad esempio, usando Gnome, al momento dell'inserimento della chiavetta nel PC, l'icona che apparirà sul desktop avrà il nome “penna”.
Personalizzare la shell
Stanchi di ripetere le stesse sequenze di comandi in console? Per fortuna è possibile creare delle “macro” per la shell Bash: quelle più semplici si chiamano alias, le più complesse, invece, funzioni. La differenza maggiore tra le due è che le funzioni consentono di gestire in modo più flessibile gli argomenti e risultano più adatte per eseguire operazioni complesse, in pratica più argomenti. Ma cominciamo con gli alias. Un alias non fa altro che sostituire un comando shell con una sequenza di caratteri stabilita a priori: la sua struttura è molto semplice, alias comando=sequenza: ad esempio, alias bye=”shutdown -h now”, fa sì che eseguendo “bye” in console venga eseguito, in realtà, il comando “shutdown -h now, che arresta immediatamente il sistema. Un alias può anche eseguire una serie di istruzioni in successione, basta separarle con il carattere “;”. Ad esempio, alias cd-="umount /media/cdrom ; eject" consente di smontare un Cd-Rom e espellerlo semplicemente eseguendo il comando “cd-”. Dove bisogna inserire gli alias per renderli attivi ad ogni sessione? Scrivendo gli alias personali nel file .bashrc, presente nella directory HOME, questi saranno validi unicamente per il nostro utente; al contrario, inserendoli, invece, nel file /etc/bash.bashrc saranno utilizzabili da tutti gli utenti presenti nel sistema.
Le funzioni di Bash
A volte è necessario costruire sequenze di istruzioni più articolate, manipolando a nostro piacere gli argomenti presenti. Nel tutorial “Creiamo una funzione Bash”, spieghiamo dettagliatamente come costruire passo passo una funzione per la shell Bash: in particolare, questa ci consentirà di avviare la compilazione del kernel nel modo più rapido possibile. Seguiamo i passaggi del tutorial, quindi chiudiamo la console corrente premendo Ctrl+D. A questo punto, apriamo una nuova console ed entriamo nella directory dei sorgenti del kernel (“cd /usr/src/linux”). Da qui eseguiamo la funzione, seguita dalla stringa che vogliamo aggiungere al nome del pacchetto generato per identificare il kernel da noi compilato. Scriviamo, ad esempio, “sudo kernel linuxmag”: la riga della funzione “make-kpkg --append-to-version=.$ 1 kernel_image” nell'esecuzione verrà trasformata, grazie all'argomento “linuxmag” inserito, in “make-kpkg --append-to-version=. linuxmag kernel_image”; avremo così un kernel targato Linux Magazine...
.Bash_profile vs .bashrc
I file di configurazione della shell Bash
Il file.bashrc ha un suo gemello, .bash_ profile, che viene letto da Bash quando si apre una shell di login (una shell, cioè, attraverso cui gli utenti effettuano l'accesso tramite username e password, la cosiddetta autenticazione). In Debian GNU/Linux e Ubuntu, .bash_profile legge anche il contenuto di .bashrc, quindi è consigliabile comunque inserire alias e funzioni e altre configurazioni utili all'interno di quest'ultimo. Il corrispettivo di .bash_profile per l'intero sistema è /etc/profile (anche in questo caso, eseguendolo verrà letto anche /etc/bash.bashrc) umask=0 0 0”.
Creiamo una funzione Bash
Sappiamo compilare il kernel... è ora di scrivere una funzione per farlo con un solo comando!
Nome della funzione

Apriamo una console ed eseguiamo il comando “nano /home/. bashrc”. Spostiamoci alla fine del file e iniziamo a creare la funzione. Assegniamole un nome, “kernel”, ad esempio, e facciamolo seguire da due parentesi tonde“()”. Infine, inseriamo uno spazio e il carattere di inizio del corpo della funzione, “{“.
Gli argomenti

Premiamo Invio e per maggiore chiarezza, facciamo rientrare ogni linea del corpo della funzione con Tab. Per inserire la prima riga, quindi, premiamo Tab, digitiamo “make-kpkg clean” e subito dopo Invio. Infine, inseriamo la riga più importante, che mostra come si gestiscono gli argomenti dentro una funzione.
Ultimi ritocchi

Premiamo ancora Tab e scriviamo “make-kpkg --append-toversion=.$ 1 kernel_image”. I caratteri “$1” saranno sostituiti dal primo argomento passato alla funzione durante l’esecuzione. Infine, premiamo Invio e terminiamo la funzione inserendo “}” su una riga vuota. Salviamo e chiudiamo.
L’anima dei log
Alla scoperta del file di configurazione syslog.conf, spesso poco conosciuto, ma molto importante perché responsabile dell’intera gestione del sistema di logging
Ilog non sono altro che file nei quali sono elencati, in ordine cronologico, i principali eventi che riguardano il sistema e le singole applicazioni: ad esempio, in una particolare riga, il kernel ci informa che al boot è stata attivata una scheda di rete, mentre in un'altra inetd ci avverte che non è possibile avviare il server SSH. Insomma, i log sono il “diario di bordo” del computer e possono fornire informazioni fondamentali sul buon funzionamento, o meno, della macchina. Il programma standard per la gestione dei log si chiama syslogd, contenuto nel pacchetto sysklogd. Teniamo a precisare, ch in questa sezione della Cover Story non ci occuperemo degli strumenti che ci permettono di consultare i file di log. In questo caso ci occuperemo “solo” della configurazione generale del sistema di logging, in modo da imparare le tecniche che ci permettorno di influenzarne il funzionamento, sempre con l’obiettivo di adattare gli strumenti disponibili alle nostre esigenze . Su ogni sistema GNU/Linux, per gestire le regole di raccolta e gestione dei log già esistenti e crearne nuove, è necessario intervenire su un singolo (potremmo dire anche semplice) file di configurazione, per l’esattezza si tratta di /etc/syslog.conf: scopriamone struttura e caratteristiche per poter intervenire in modo mirato.
Syslog.conf nel dettaglio
Ogni regola contenuta nel file /etc/syslog.conf è composta da due sezioni: quella relativa al “selector”, suddivisa ulteriormente in facility e priority, e quella dell'action. La prima indica a quale insieme di messaggi si fa riferimento, la seconda stabilisce l'azione che deve compiere il sistema all'apparire di questi messaggi (solitamente, quello che si fa è registrarli su uno specifico file di log e conservarlo in una particolare directory). La facility  individua l'ambito di provenienza di un messaggio, cioè chi lo ha generato. Quelli principali sono: auth, authpriv, cron, daemon, kern, lpr, mail e user. La priority, invece, indica la rilevanza del messaggio stesso: si va, in ordine di importanza crescente, da debug, info e notice fino ad emerg. Nel tutorial “Una console per i messaggi di log” scopriremo come visualizzare alcuni messaggi specifici in una console virtuale, solitamente inutilizzata: una volta seguite le istruzioni, sarà sufficiente spostarsi sulla console numero 8: premiamo, dunque, Ctrl+Alt+8 se stiamo usando l'interfaccia grafica, altrimenti solo Alt+8, per veder scorrere placidamente i log sullo schermo.
Una console per i messaggi di log
Poche righe nel file /etc/syslog.conf ed è possibile personalizzare il sistema di gestione dei log
Il file Syslog.conf

Per modificare il funzionamento del sistema di logging, bisogna intervenire su questo file. Digitiamo in una console “sudo nano /etc/syslog.conf” e spostiamoci alla fine del file. La riga che inseriremo conterrà un insieme di facilitye priority: tutti i messaggi corrispondenti saranno visualizzati sulla console virtuale tty8.
 I log della posta

Iniziamo stabilendo che vogliamo mostrare su tty8 tutti i messaggi della facility “mail” (i log relativi alla posta). In una riga vuota scriviamo “mail.*;”. Abbiamo così indicato “mail” come facility ed una qualsiasi (“*”) priority. Il carattere “;” stabilisce che seguiranno altre facility e priority per la stessa azione.
Su un'altra console

Indichiamo una priority specifica da mostrare in console, qualunque sia la facility di provenienza di un messaggio. Scriviamo “*.=info”: questo significa “un messaggio da una qualsiasi (*) facility ma con la priority specifica (=) info”. Dirottiamo i messaggi su tty8 inserendo come azione semplicemente /dev/tty8.

Dentro il bootloader
Cosa succede quando accendiamo il computer? Cosa viene eseguito per primo all'avvio e con quali opzioni? Chi è responsabile del caricamento del sistema? La risposta è Grub!
Pagina 6/9
Lascia un commento
Tag: linux, kernel, patch, moduli, runlevel, cron, crontab, demoni, file /etc/fstab, DI /PROC, udev, bash, syslog
Condividi