|
|
Riga 1: |
Riga 1: |
| ''Torna all'indice: [[Linux Kernel in a Nutshell]]''
| | == Introduzione == |
|
| |
|
| Questo capitolo descrive i programmi necessari per configurare un kernel, compilarlo e fare il boot con successo. È utile consultare il file ''Documentation/Changes'' per verificare esattamente quale sia la versione richiesta di ogni programma descritto. Qui vengono riportate le versioni dei programmi che funzionano con il kernel 2.6.18, su cui si basa la trattazione. Chi sta usando un kernel diverso verifichi di avere installate le versioni richieste, come riportato nel file sopra specificato, altrimenti qualcosa potrebbe non funzionare correttamente e potrebbe essere estremamente difficile capire cosa è andato nel modo sbagliato.
| | Se state leggendo questa guida penso conosciate gi� la mitica distribuzione live [http://www.damnsmalllinux.org/ Damn Small Linux] che in soli 50 MB vanta un sistema Linux e un corredo software davvero impressionante. Damn Small Linux, o DSL come la chiameremo di seguito, � una derivata di Debian ristretta fino all'osso al fine di non superare il limite di 50 MB, tuttavia � facilmente espandibile tramite le estensions che permettono di trasformare DSL in un sistema Debian-like completo. |
|
| |
|
| | In questa guida vedremo come fare avviare Damn Small Linux direttamente da chiavetta USB, senza bisogno di bruciare un cd. |
|
| |
|
| =='''Strumenti per Compilare il Kernel'''==
| | Usando una chiavetta avremo il vantaggio di poter salvare le nostre impostazioni e/o aggiungere altro software nella chiavetta stessa, ottendendo cos� un sistema live (basta inserire la chiavetta in qualsiasi pc che supporta il boot da dispositivi USB) estremamente compatto e soprattutto modificabile al volo (cosa impossibile con un normale cd). Inoltre sia la compattezza della distribuzione che la velocit� dei dispositivi USB2 permettono di ottenere prestazioni superiori ad un normale livecd. E' addirittura possibile caricare l'intero sistema in ram (basta passare l'opzione <tt>toram</tt> al boot), con conseguente apertura fulminea di qualsiasi applicazione ;-). |
|
| |
|
| La maggior parte delle distribuzioni prevede la possibilità di installare una raccolta di pacchetti per lavorare con il kernel. Qualora la distribuzione offra questa possibilità è consigliabile sfruttarla, piuttosto che tentare di rintracciare ogni singola applicazione necessaria allo scopo.
| | L'unico prerequisito � che la scheda madre supporti il boot da periferica USB (molti produttori stanno rendendo disponibile questa funzionalit� attraverso nuovo firmware BIOS). Ed una chiavetta USB di almeno 50 MB, of course ;-). |
|
| |
|
| Per compilare un kernel servono solo tre pacchetti: un compilatore, un linker e un'utility ''make''. Questa sezione descrive il contenuto di ognuno di questi pacchetti.
| | Se la vostra scheda madre non supporta il boot da periferiche USB, dovrete preparare un floppy od un cd per il boot. Questo argomento '''non � trattato nella guida'''. |
|
| |
|
| ==='''Compilatore'''=== | | == Formattazione della chiavetta == |
|
| |
|
| Il kernel Linux è scritto in linguaggio C, con alcune piccole sezioni scritte in assembly. Per compilare un kernel è necessario utilizzare il compilatore per C gcc. La maggior parte delle distribuzioni comprendono un pacchetto di nome ''gcc'' che dovrebbe essere installato. Se volete scaricare il compilatore e compilarlo da soli, potete trovarlo all'indirizzo http://gcc.gnu.org .
| | Se la vostra chiavetta contiene gi� una partizione e un filesystem fat16 (o fat32) non dovremo formattarla e potremo anche lasciare gli altri eventuali file presenti che non daranno fastidio. |
|
| |
|
| Per quanto concerne la release 2.6.18 del kernel, la versione 3.2 di ''gcc'' è la più vecchia tra quelle che possono compilare correttamente un kernel funzionante. Occorre fare attenzione che utilizzare l'ultima versione di ''gcc'' non è sempre una buona idea. Alcune delle versioni più recenti non compilano correttamente il kernel, quindi, a meno che non si voglia aiutare nel lavoro di debug del compilatore, ne è sconsigliato l'utilizzo.
| | Se invece dovete formattare la chiavetta, consiglio di creare un unica partizione avviabile con <tt>cfdisk</tt> e creare un filesystem fat16 con <tt>mkfs.vfat</tt>: |
|
| |
|
| Per scoprire quale versione di ''gcc'' avete installata usate il seguente comando:
| | # mkfs.vfat -n nome -F 16 /dev/sda1 |
|
| |
|
| <pre>$ gcc --version</pre>
| | == Copia dei file e preparazione della chiavetta == |
|
| |
|
| ==='''Linker'''===
| | Scarichiamo la [http://ftp.belnet.be/packages/damnsmalllinux/current/current.iso iso di DSL] (usate la versione normale, non la syslinux, embedded ecc...). |
|
| |
|
| Il compilatore C, ''gcc'', non compie il lavoro di compilazione interamente da solo, ma ha bisogno di alcuni strumenti, chiamati ''binutils'', per effettuare il collegamento (linking) e l'assemblaggio dei file sorgente. Il pacchetto ''binutils'' contiene anche altre utili applicazioni che permettono di intervenire sui file oggetto (''object files'', prodotti dal compilatore ma non ancora collegati, dal linker, alle librerie e/o ad altri file oggetto necessari per l'esecuzione, N.d.T.) in molti modi, ad esempio per vedere il contenuto di una libreria.
| | Eseguiamo le seguenti operazioni di semplice copia e rinominazione di file: |
|
| |
|
| ''binutils'' si trova di solito all'interno di un pacchetto di nome... ''binutils'' in ogni distribuzione. Se volete scaricarlo e installarlo da soli, potete trovarlo all'indirizzo http://www.gnu.org/software/binutils .
| | # mkdir dsl_temp |
| | # mkdir dsl_usb |
| | # mount -o loop current.iso dsl_temp |
| | # cp -a dsl_temp/* dsl_usb |
| | # cd dsl_usb |
| | # mv boot/isolinux/* ./ |
| | # rm -Rf boot |
| | # mv isolinux.bin syslinux.bin |
| | # mv isolinux.cfg syslinux.cfg |
| | # cd .. |
| | # mkdir usb_pen |
| | # mount -t vfat /dev/sda1 usb_pen |
| | # cp -a dsl_usb/* usb_pen |
| | # umount usb_pen |
|
| |
|
| La versione più vecchia di ''binutils'' che può essere utilizzata per collegare il kernel 2.6.18 è la 2.12. Per scoprire quale versione di ''binutils'' avete installata nel vostro sistema eseguite il comando seguente:
| | Ora prepariamo il [[MBR]] della chiavetta con: |
|
| |
|
| <pre>$ ld -v</pre>
| | # syslinux /dev/sda1 |
|
| |
|
| ==='''Make'''===
| | Se non avete l'ultimo comando (syslinux) potete installarlo tramite [[APT]] oppure tramite gli usuali strumenti forniti dalla vostra distribuzione. |
|
| |
|
| ''make'' è uno strumento che cerca nei sorgenti del kernel quali file devono essere compilati e successivamente chiama il compilatore e gli altri strumenti necessari per costruire il kernel. Il kernel necessita della versione GNU di ''make'', che solitamente si trova in ogni distribuzione in un pacchetto chiamato ''make''.
| | == Boot di DSL == |
|
| |
|
| Se volete scaricare e installare ''make'' da soli potete trovarlo all'indirizzo:
| | A questo punto non ci resta che sezionare il boot tramite dispositivo USB ed avviare il pc. |
| http://www.gnu.org/software/make .
| |
|
| |
|
| La release più vecchia di make che può essere utilizzata con un kernel 2.6.18 è la 3.79. Vi consiglio di installare la versione stabile più recente, perchè le versioni più nuove lavorano più velocemente nel processare i file di compilazione.
| | Per avviare il sistema in lingua italiana digitare: |
| Per verificare quale versione di make avete installata usate il comando: | |
|
| |
|
| <pre>$ make --version</pre>
| | dsl lang=it |
|
| |
|
| =='''Strumenti per Utilizzare il Kernel'''==
| | (il segno di uguale si fa con il tasto '�' della tastiera italiana) |
|
| |
|
| Anche se solitamente la versione del kernel che sta funzionando in un sistema non influisce su alcuna applicazione a livello utente, ci sono alcuni programmi per cui invece è importante. Questa sezione descrive alcuni strumenti che probabilmente sono già installati nel vostro sistema Linux: se aggiornate il kernel ad una versione diversa da quella inclusa nella vostra distribuzione, potrebbe essere necessario aggiornare anche alcuni di questi pacchetti, per permettere al sistema di funzionare correttamente.
| | E in pochi secondi dovrebbe caricarsi il sistema DSL. |
|
| |
|
| ==='''util-linux'''===
| | {{Warningbox|Se non riuscite a fare il boot dalla chiavetta (cio� non appare neanche il logo iniziale di DSL) provate a formattare la chiavetta seguendo le [[#Formattazione della chiavetta|precedenti istruzioni]]. Nel caso non riusciste ancora a fare il boot la vostra chiavetta non � compatibile con questo procedimento. Per qualche strano motivo, infatti, alcune chiavette non sono in grado di fare il boot del sistema :-(. Purtroppo, in questi casi, non consco altre soluzioni se non cambiare chiavetta.}} |
|
| |
|
| Il pacchetto ''util-linux'' è una raccolta di piccole utilità che assolvono ad un'ampia gamma di compiti; la maggior parte di queste utilità si occupa del montaggio e della creazione di partizioni su disco e della gestione dell'orologio di sistema.
| | == Configurazione di DSL == |
|
| |
|
| Se volete scaricare ed installare questo pacchetto da soli lo trovate al seguente indirizzo: http://www.kernel.org/pub/linux/utils/util-linux .
| | DSL � stato concepito come livecd, quindi monta il dispositivo da cui effettua il boot in <tt>/cdrom</tt>. Quindi anche nel nostro caso la chiavetta <tt>/dev/sda1</tt> sar� montata in <tt>/cdrom</tt>, e sar� '''non''' scrivibile. Rimontiamola in lettura-scrittura: |
|
| |
|
| La versione più vecchia di ''util-linux'' compatibile con il kernel 2.6.18 è la 2.10. È consigliabile installare la più recente versione disponibile di questo pacchetto, perché le ultime versioni supportano le nuove caratteristiche implementate nel kernel. I ''bind mounts'' sono un esempio di un'opzione inclusa nei kernel più nuovi, che necessita della versione più recente di ''util-linux'' per poter funzionare correttamente.
| | $ su |
| | # mount -o remount,rw /cdrom |
|
| |
|
| Per scoprire quale versione di ''util-linux'' avete installata nel vostro sistema usate il seguente comando: | | Per far si che all'avvio di DSL la chiavetta venga montata automaticamente in rw basta agguingere a <tt>/opt/bootlocal.sh</tt> il precedente comando di mount. Quindi non ci resta che salvare le impostazioni aprendo il pannello di controllo di DSL (sul Desktop) e selezionando in "Backup/Restore" '''sda1''' (''senza /dev/ !'') come dispositivo di backup. |
|
| |
|
| <pre>$ fdformat --version</pre> | | Potremo anche aggiungere a <tt>/opt/bootlocal.sh</tt> il comando per caricare la tastiera italiana: |
|
| |
|
| ==='''module-init-tools'''===
| | loadkeys it |
|
| |
|
| Il pacchetto ''module-init-tools'' è necessario per poter utilizzare i moduli del kernel. Un ''modulo del kernel'' è un pezzetto di codice caricabile che può essere aggiunto o rimosso dal kernel anche mentre questo sta girando. È comodo compilare i driver dei device come moduli per poter caricare solo quelli relativi allo hardware presente nel sistema. Tutte le distribuzioni di Linux usano i moduli per poter caricare solo i driver necessari al sistema in base allo hardware presente, invece di essere costretti a costruire tutti i possibili driver e opzioni del kernel in un unico blocco. L'uso dei moduli permette di risparmiare memoria, caricando solo il codice necessario per controllare correttamente la macchina.
| | in tal modo non dovremo pi� passare al boot il paramentro <tt>lang=it</tt>. |
|
| |
|
| Il processo di caricamento dei moduli ha subito una revisione radicale nella versione 2.6 del kernel. Il linker per i moduli (il codice che si occupa di risolvere tutti i simboli e capire come associare i pezzi di codice in memoria) adesso è compilato all'interno del kernel, e questo permette di avere degli strumenti a livello userspace molto leggeri. Le distribuzioni più vecchie hanno un pacchetto che si chiama ''modutils'' che non funziona correttamente con il kernel 2.6. Il pacchetto ''module-init-tools'' è quello di cui avete bisogno per lavorare correttamente con i moduli di kernel 2.6. | | Il bello � anche che se si scarica nuovo software (tramite ad esempio le extensions di DSL) e si salva nella home, poich� viene di default fatto un backup di tutta la home, ai successivi riavvi avremo il software gi� disponibile senza doverlo riscaricare. |
|
| |
|
| Chi volesse scaricare e installare da solo questo pacchetto, può trovarlo all'indirizzo:
| | Ora, normalmente, quando si effettua un backup delle impostazioni di DSL � necessario usare al boot l'opzione <tt>restore=sda1</tt>. Tuttavia nel nostro caso anche questo � superfluo perch� DSL cerca automaticamente un eventuale backup nello stesso dispositivo dal quale parte. Quindi all'avvio '''non dovremo far altro che premere <tt>[INVIO]</tt>''' e DSL caricher� le nostre impostazioni, tastiera italiana, e software aggiuntivo compresi ;-). |
| http://www.kernel.org/pub/linux/utils/kernel/module-init-tools .
| |
|
| |
|
| La versione più vecchia di ''module-init-tools'' compatibile con il kernel 2.6.18 è la 0.9.10. Si raccomanda di installare l'ultima release disponibile di ''module-init-tools'', in quanto permette di utilizzare alcune caratteristiche nuove del kernel. Ad esempio, la possibilità di creare una blacklist dei moduli che non si vuole vengano automaticamente caricati da udev è una delle opzioni che sono presenti solo nelle versioni più recenti di ''module-init-tools''.
| | In tal modo � possibile crearsi in pochi minuti una versione personalizzata di DSL da portarsi sempre dietro in una chiavetta assieme ai prorpi dati ;-). |
| Per scoprire quale versione avete installata nel vostro sistema usate il comando:
| |
|
| |
|
| <pre>$ depmod -V</pre>
| | Se iniziate ad usare DSL una lettura alle FAQ � d'obbligo (dove troverete queste ed altre informazioni). |
|
| |
|
| =='''Strumenti Specifici per i Filesystem'''==
| | Happy Hacking ! |
|
| |
|
| Per creare, formattare e riparare le partizioni dei dischi è necessario un ampio spettro di strumenti specifici per i vari filesystem. Il pacchetto ''util-linux'' ne contiene alcuni, ma alcuni dei più popolari filesystem hanno dei pacchetti separati che contengono le utilità necessarie.
| | == Links == |
|
| |
|
| ==='''ext2/ext3/ext4'''===
| | * [http://www.damnsmalllinux.org/ Homepage Damn Small Linux] |
| | * [http://www.damnsmalllinux.org/wiki/index.php/Main_Page Wiki di Damn Small Linux] |
| | * [http://www.damnsmalllinux.org/wiki/index.php/Frequently_Asked_Questions FAQ di Damn Small Linux] |
| | * [http://wiki.debian.org/BootUsb Wiki Debian: Boot da USB] |
|
| |
|
| I filesystem ''ext3'' e quello in fase di sviluppo ''ext4'' sono evoluzioni dell' ''ext2'' e possono essere gestiti con gli stessi strumenti; la versione più recente di qualunque applicazione basata su ''ext2'' può essere impiegata anche sugli altri due filesystem.
| |
|
| |
|
| Per utilizzare questi filesystem dovete avere il pacchetto ''e2fsprogs''; l'indirizzo a cui trovarlo per scaricarlo e installarlo da soli è: http://e2fsprogs.sourceforge.net.
| | ---- |
| | | Autore: [[Utente:TheNoise|~ The Noise]] 05:14, Gen 8, 2006 (EST) |
| La versione più vecchia di ''e2fsprogs'' funzionante con il kernel 2.6.18 è la 1.29; è altamente consigliato utilizzare la release più recente per sfruttare al meglio le nuove caratteristiche dei filesystem ''ext3'' ed ''ext4''.
| | [[Categoria:Live]] |
| | |
| Per scoprire quale versione di ''e2fsprogs'' è installata nel vostro sistema usate il comando:
| |
| | |
| <pre>$ tune2fs</pre>
| |
| | |
| ==='''JFS'''===
| |
| | |
| Per usare il filesystem JFS di IBM è necessario avere il pacchetto ''jfsutils''; se volete scaricarlo e installarlo da soli lo trovate all'indirizzo: http://jfs.sourceforge.net.
| |
| | |
| La versione più vecchia di ''jfsutils'' utilizzabile correttamente con il kernel 2.6.18 è la 1.1.3; per verificare quale versione avete installata lanciate il comando:
| |
| | |
| <pre>$ fsck.jfs -V</pre>
| |
| | |
| ==='''ReiserFS'''===
| |
| | |
| Per usare il filesystem ReiserFS è necessario il pacchetto ''reiserfsprogs''. Per scaricarlo e installarlo da soli l'indirizzo è: http://www.nemesys.com/download.html.
| |
| | |
| La versione più vecchia di ''reiserfsprogs'' funzionante con il kernel 2.6.18 è la 3.6.3; il comando per controllare quale versione è installata nel sistema è:
| |
| | |
| <pre>$ reiserfsck -V</pre>
| |
| | |
| ==='''XFS'''===
| |
| | |
| Per usare il filesystem XFS di SGI è necessario avere il pacchetto ''xfsprogs''; è possibile scaricare il pacchetto da installare all'indirizzo: http://oss.sgi.com/project/xfs.
| |
| | |
| La release più vecchia di ''xfsprogs'' compatibile con il kernel 2.6.18 è la 2.6.0; per verificare quale versione è installata nel sistema si utilizza:
| |
| | |
| <pre>$ xfs_db -V</pre>
| |
| | |
| ==='''Quota'''===
| |
| | |
| Per utilizzare le quote come funzionalità del kernel è necessario avere installato il pacchetto ''quota-tools'';* {{Box|To do|nota a piè di pagina: scoprire come si fa}} Questo pacchetto contiene applicazioni che permettono di fissare le quote di filesystem a disposizione di ogni utente, forniscono statistiche sull'uso delle quote dei vari utenti e diramano degli avvertimenti quando questi stanno per esaurire la loro quota di filesystem.
| |
| | |
| Per scaricare e installare questo pacchetto da soli l'indirizzo è: http://sourceforge.net/projects/quota. La versione più vecchia utilizzabile con il kernel 2.6.18 è la 3.0.9; è possibile visualizzare la versione installata con il comando:
| |
| | |
| <pre>$ quota -V</pre>
| |
| | |
| ==='''NFS'''===
| |
| | |
| Per utilizzare correttamente il filesystem NFS è necessario il pacchetto ''nfs-utils''. ** {{Box|To do|nota a piè di pagina: scoprire come si fa}} Questo pacchetto contiene dei programmi con cui è possibile montare delle partizioni NFS come client e far girare un server NFS.
| |
| | |
| L'indirizzo da cui prelevare questo pacchetto per installarlo da soli è: http://nfs.sf.net.
| |
| | |
| La versione più vecchia funzionante con il kernel 2.6.18 è la 1.0.5; il comando per determinare la versione installata è:
| |
| | |
| <pre>$ showmount --version</pre>
| |
| | |
| =='''Altri Strumenti'''==
| |
| | |
| Ci sono pochi altri programmi che sono strettamente legati alla versione del kernel. Di solito questi programmi non sono necessari per far funzionare il kernel, ma rendono possibile l'accesso a tipi di hardware e di funzioni differenti.
| |
| | |
| ==='''udev'''===
| |
| | |
| ''udev'' è un programma che permette a Linux di fornire uno schema persistemte di attribuzione dei nomi dei device nella directory ''/dev''. Inoltre fornisce una ''/dev'' dinamica, molto simile a quella fornita dal più vecchio (ed ora non più utilizzato) filesystem ''devfs''. Quasi tutte le distribuzioni Linux usano ''udev'' per gestire la directory ''/dev'', per cui risulta necessario per eseguire correttamente il boot del sistema.
| |
| | |
| Sfortunatamente ''udev'' si appoggia alla struttura della directory ''/sys'', che è nota per cambiare continuamente con le release del kernel. Alcuni di questi cambiamenti in passato sono stati responsabili del malfunzionamento di ''udev'', cosicché il sistema non era più in grado di fare il boot correttamente. Se ''udev'' non funziona correttamente nonostante abbiate l'ultima versione raccomandata per il vostro kernel, contattate gli sviluppatori tramite la mailing list [mailto:linux-hotplug-devel@list.sourceforge.net].
| |
| | |
| È fortemente consigliato utilizzare l'ultima release di ''udev'' fornita con la vostra distribuzione, dato che è profondamente legata al processo di boot specifico della distribuzione stessa. In ogni caso, chi volesse aggiornare ''udev'' per conto proprio può trovarlo all'indirizzo: http:www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html.
| |
| | |
| La versione più vecchia di ''udev'' funzionante con il kernel 2.6.18 è la 0.81; è consigliabile usare la versione più recente, in quanto funziona meglio con i nuovi kernel, a causa del modo in cui ''udev'' e il kernel comunicano tra di loro.
| |
| | |
| Per conoscere quale versione di udev è installata nel sistema il comando è:
| |
| | |
| <pre>$ udevinfo -V</pre>
| |
| | |
| ==='''Strumenti di analisi dei processi'''===
| |
| | |
| Il pacchetto ''procps'' contiene i programmi di uso comune ''ps'' e ''top'', come anche molti altri strumenti per gestire e tenere sotto controllo i processi in esecuzione nel sistema.
| |
| Se preferite scaricare ed installare da soli questo pacchetto potete trovarlo all'indirizzo
| |
| http://procps.sourceforge.net.
| |
| La versione 3.2.0 è la più vecchia compatibile con il kernel 2.6.18; per determinare quale versione è installata si usa il comando:
| |
| | |
| <pre>$ ps --version</pre>
| |
| | |
| ==='''Strumenti per periferiche PCMCIA'''===
| |
| | |
| Per poter utilizzare correttamente le periferiche PCMCIA è necessario un programma a livello utente che permetta di configurarle. Per i kernel più vecchi questo programma si chiamava ''pcmcia-cs'', ma è stato sostituito con un sistema più semplice chiamato ''pcmciautils''. Se volete utilizzare periferiche PCMCIA dovete avere installato questo pacchetto.
| |
| | |
| Se preferite scaricare ed installare da soli questo pacchetto potete trovarlo all'indirizzo ftp://ftp.kernel.org/pub/utils/kernel/pcmcia.
| |
| | |
| La versione più vecchia di ''pcmciautils'' funzionante con il kernel 2.6.18 è la 004, ma è consigliabile installare la versione più recente, per poter sfruttare tutte le nuove funzioni del sottosistema PCMCIA, come ad esempio la possibilià di caricare automaticamente i driver quando viene rilevata una nuova periferica. Il comando per scoprire quale versione di pcmciautils è installata è:
| |
| | |
| <pre>$ pccardctl -V</pre>
| |