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 1 di 9)
In ambito desktop GNU/Linux sta facendo passi da gigante: gran parte dei compiti più rilevanti possono essere svolti comodamente tramite il mouse, cliccando su semplici e immediate icone presenti sullo schermo e nei numerosi menu. In alcuni casi, però, bisogna “sporcarsi le mani”: talune volte, infatti, è necessario addentrarsi più a fondo nei meccanismi interni del sistema operativo, in particolare per riuscire a gestire nel modo più diretto possibile le risorse hardware e software a nostra disposizione. In questi casi, le pratiche interfacce “punta e clicca” possono diventare paradossalmente degli ostacoli, dato che aggiungono delle stratificazioni software supplementari tra noi e il computer che, alla fine, rischiano di intralciare interventi mirati come la gestione diretta dei file di configurazione o l'esecuzione di comandi in console, spesso molto immediati. Nella Cover Story, perciò, vedremo come operare direttamente al “cuore” del sistema GNU/Linux. Niente paura: pur abbandonando momentaneamente le interfacce grafiche più evolute, ci serviremo tutte le volte che sarà possibile di strumenti intermedi, funzionanti sì all'interno di una console di terminale, ma dotati di un'interfaccia utente allo stesso tempo semplice. Quando si tratterà, invece, di intervenire sui file di configurazione, utilizzeremo un editor facile ed immediato come nano.
Dove interverremo
Dopo questa premessa, è giunto il momento di entrare nel dettaglio degli interventi che tratteremo di  seguito. Inizieremo affrontando la ricompilazione del kernel e la gestione dei moduli, quindi scopriremo come selezionare a nostra discrezione i servizi attivati al boot del PC. Fatto ciò, ci inoltreremo sempre più in profondità negli anfratti più nascosti del sistema: dai meccanismi di scheduling (pianificazione degli eventi) come cron, alla configurazione di udev(gestione periferiche), dalla configurazione del sistema di logging, alla personalizzazione del bootloader: tutto questo avendo sempre come obiettivo la massima semplicità nell'esposizione delle informazioni. Se il nostro editor di fiducia scelto per questa Cover Story è nano, la distro resta ancora una volta Ubuntu: questa diffusa distribuzione per il desktop è appena giunta alla release 7.10, nome in codice Gutsy Gibbon, e nel corso dell'articolo sarà quest'ultimissima versione a essere utilizzata come sistema di riferimento.
Un kernel su misura
Installare un nuovo kernel non è mai stato così semplice... ecco come si usano gli strumenti forniti da Ubuntu per ridurre al minimo lo “stress” da ricompilazione!Cominciamo, letteralmente, dal nucleo del nostro sistema operativo: il kernel Linux. In questa parte iniziale, quindi, scopriremo come compilare e patchare un kernel su Ubuntu (e su tutte le distro derivate da Debian GNU/Linux), e a gestire i moduli servendoci di alcuni comodi automatismi.
Un nuovo Kernel manualmente
Quando non sono disponibili i precompilati si fa così

Copiamo il pacchetto linux-2.6.23.8. tar.bz2 dal CD/DVD in /usr/src. Scompattiamolo con tar -xvjf linux- 2.6.23.8.tar.bz2 e rinominiamo la directory: mv linux-2.6.23 linux. Entriamo nella nuova cartella linux (cd linux) ed eseguiamo il comando:

make xconfig.
Fatte le nostre scelte, salviamo il nuovo setup ed eseguiamo in sequenza i comandi seguenti:
make dep
make clean
make bzImage
 make modules
make modules_install make install
Con vecchie distro potrebbe essere necessario modificare manualmente il bootloader (LiLo o Grub).
Ricompilare il kernel
Con Ubuntu e Debian GNU/Linux possiamo compilarne e installarne rapidamente uno su misura
Il tool menuconfig

Entriamo nella directory che contiene i sorgenti del kernel: in console scriviamo “cd /usr/src/linux”. Lanciamo “sudo make menuconfig” (xconfig per l'interfaccia grafica) ed inseriamo la password. Da qui possiamo stabilire le caratteristiche del kernel, attivando e disattivando le opzioni a nostra discrezione.
Pulizia con clean

Tornati in console, eseguiamo “sudo make-kpkg clean” per ripulire la directory dei sorgenti da tutti i file creati da precedenti compilazioni. A questo punto non resta che compilare ed installare la nuova versione del kernel. Digitiamo “sudo make-kpkg --initrd --append-toversion=. 051107 kernel_image”.
Il nuovo Kernel

L'opzione “kernel_image” si occupa della compilazione e dell'installazione del kernel, mentre il parametro “--append-to-version” consente di aggiungere una stringa al nome del kernel, così da individuare subito quello personalizzato. Nell'esempio abbiamo aggiunto la data corrente (051107).
Signore e signori, sua maestà il kernel
La configurazione di default del kernel fornita dalla distribuzione non ci soddisfa e vorremmo compilare un kernel su misura per il nostro PC? Innanzitutto, preleviamo i sorgenti del kernel: possiamo scaricarli dai Kernel Archives, più semplicemente, installare il pacchetto dei sorgenti per Ubuntu; in questo secondo caso apriamo una console di terminale ed eseguiamo “sudo apt-get install linux-source”, così da scaricare i sorgenti della release del kernel installata sul nostro sistema (su Ubuntu 7.10 si tratta della 2.6.22, comunque verificabile con il comando uname -r). Entriamo nella directory /usr/src (comando “cd /usr/src”) e scompattiamo l'archivio dei sorgenti con “sudo tar xvfj linux-source-2.6.22.tar.bz2”. Al termine dell'operazione, dalla directory corrente cancelliamo, se presente, il collegamento simbolico “linux” (“sudo rm linux”) e creiamo un nuovo collegamento “linux” che punta alla cartella contenente i sorgenti, chiamata linuxsource- 2.6.22 (il comando da eseguire è “sudo ln -s linux- source-2.6.22 linux”). A questo punto, assicuriamoci di disporre di tutti i pacchetti necessari eseguendo il comando “sudo apt-get install gcc make kernel-package libncurses5-dev”. Fatto ciò, seguiamo le istruzioni riportate nel tutorial “Ricompilare il kernel”. Ad operazione conclusa troveremo il pacchetto .deb del kernel appena compilato in /usr/src: installiamolo con “sudo dpkg -i pacchetto_kernel.deb”.
Ecco come mettere le “toppe”al kernel
In rete è facile imbattersi in qualche “patch” (letteralmente pezza) per il kernel: si tratta di codice che corregge alcune funzionalità o ne aggiunge nuove, ad esempio il supporto per una nuova periferica o un particolare protocollo. Vediamo, quindi, come applicare una patch ai sorgenti del kernel, prendendo come esempio BadRAM, una patch che consente di utilizzare in tutta tranquillità banchi di memeria RAM difettosi, altrimenti da buttare (molto utile!). Innanzitutto, scarichiamo il file dal sito di BadRAM: in particolare, per il kernel di Ubuntu 7.10, il file da prelevare è http://rick. vanrein. org/linux/badram/software/BadRAM- 2.6.22.1.patch. Copiamo il file nella directory /usr/src, quindi entriamo in /usr/src/linux (“cd /usr/src/linux”). A questo punto applichiamo la patch con il comando “sudo patch -p1 < /usr/src/BadRAM-2.6.22.1.patch”. L'opzione “-p” stabilisce quanti “/” bisogna togliere dal percorso dei file indicati all'interno della patch prima di applicarla al kernel : in genere i valori da inserire sono “-p2”, “-p1” o “-p0” (valori sbagliati, semplicemente, non consentiranno di applicare la patch).
Ricompilare con la patch
A questo punto, possiamo subito ricompilare il kernel indicando, tramite il parametro --append-to-version che è stata applicata la patch BadRAM: “sudo make-kpkg --initrd --append-to-version=.051107- badram kernel_image”. Prima dell'avvio effettivo della compilazione ci verrà chiesto se vogliamo attivare BadRAM nel kernel (“Work around bad spots in RAM (BADRAM) [Y/n/?]”): premiamo “y” e poi Invio. A compilazione terminata possiamo installare il kernel “patchato” tramite “dpkg -i”, come abbiamo fatto in precedenza.
Usare la vecchia configurazione
La tecnica che facilita la compilazione del nuovo kernel
Stiamo per compilare un nuovo kernel e vogliamo evitare di dover configurare manualmente tutte le opzioni che ci servono? Se disponiamo di un file di configurazione .config di un vecchio kernel, copiamolo nella cartella /usr/src/linux e, prima di procedere con il tutorial “Ricompilare il kernel”, eseguiamo in console il comando “sudo make oldconfig”. Ci verranno poste alcune domande sulle nuove opzioni presenti nel kernel da compilare, saltando così la configurazione di tutte quelle rimaste invariate.
Aggiungere un modulo esterno
Se per un dispositivo ne è necessario uno non presente nel kernel, installiamolo con module-assistant
Un vero assistente


Apriamo una console ed installiamo il software: “sudo apt-get install module-assistant”. A questo punto, eseguiamo “sudo m-a”. Possiamo muoverci all'interno dell'interfaccia del programma grazie ai tasti freccia. Usiamo Tab per passare da un pulsante all'altro, mentre premiamo Invio quando serve selezionare.
Le opzioni utili

Andiamo su “UPDATE” e premiamo Invio per aggiornare la lista dei pacchetti presenti nel sistema. A questo punto, selezioniamo l'opzione successiva, “PREPARE”, per installare quanto serve per scaricare e compilare i moduli specifici per il nostro kernel. Spostiamoci, infine, sull'opzione “SELECT” e premiamo Invio.
Compilazione moduli

A scopo di esempio, illustriamo l'installazione dei moduli per il modem SmartLink. Spostiamoci sulla voce “sl-modem” e premiamo Spazio, quindi Invio. Nella nuova schermata selezioniamo “GET” e poi “BUILD”. Ci verrà chiesto se vogliamo installare i moduli generati: selezioniamo “Sì” e premiamo Invio.
Servizi ai nostri ordini
Demoni, processi, runlevel... facciamo chiarezza su questi concetti, a torto ritenuti complessi, molto utili per poter ttimizzare il sistema e adattarlo alle nostre esigenze
I servizi sono particolari programmi funzionanti in background che non richiedono l'intervento dell'utente. Un servizio può essere avviato al boot della macchina, oppure eseguito nel momento in cui qualcuno ne fa esplicita richiesta, ad esempio un programma o un altro servizio. In questa seconda parte, dunque, ci occuperemo di “demoni”, conosciuti anche come “daemon” (un altro nome utilizzato per indicare i servizi), prendendo in considerazione entrambe queste modalità di esecuzione. 
Pagina 1/9
Lascia un commento
Tag: linux, kernel, patch, moduli, runlevel, cron, crontab, demoni, file /etc/fstab, DI /PROC, udev, bash, syslog
Condividi