Linux · 26 November 2007 2

Linux su una chiavetta USB

Mi sono sempre scontrato con un problema apparentemente insormontabile: installare Linux su una chiavetta USB!
Quanti di voi ci hanno provato? Tanti, penso… E quanti di voi hanno avuto problemi? Tanti lo stesso, vero?.

Mi son sempre chiesto il perché dei miei insuccessi durante i tentativi di installare le varie distribuzioni per chiave USB quali Damn Small Linux e simili. Eppure seguivo le istruzioni alla lettera delle varie guide, articoli FAQ ecc… che consultavo! Ore ed ore di tentativi sempre falliti! Alla fine o la chiavetta manco veniva riconosciuta (caso più frequente) oppure veniva riconosciuta ma non si avviava…. E poi ho scoperto il perché: se seguivate le istruzioni alla lettera ma avevate precedentemente formattato la chiavetta, allora vi mancava un passo fondamentale! La procedura che veniva sempre illustrata non prendeva mai in considerazione la possibilità che la chiavetta fosse stata appunto formattata. Seguendo invece il metodo che vi illustrerò a breve, sono riuscito a installare Feather Linux, una distribuzione derivata da Knoppix che sta in 128 MB, su una chiavetta USB 2.0 da 2 GB.

Se siete passati anche voi per questi insuccessi, allora il mio consiglio è uno solo: attenzione alle istruzioni che riportano online tanti siti, sono incomplete.
Faccio anche un piccolo, necessario, preambolo. Il supporto USB pienamente funzionante sotto Linux è roba di poco tempo fa… prima le cose erano diverse (peggiori) ed una periferica USB equivaleva a grattacapi perenni. Con l’introduzione del Kernel 2.4 prima e del 2.6 dopo, le cose sono notevolmente migliorate. Adesso Linux tratta le periferiche di massa USB a livello di Windows. Le istruzioni che riportano i vari Wiki, le FAQ e le documentazioni che trovate online sono ormai obsolete, non aggiornate, con l’obbligo di rispettare alcuni punti che potete oggigiorno anche saltare. Ecco i punti che non necessitano più di rispetto:

  1. formattare la chiavetta con il filesystem FAT16;
  2. utilizzare SysLinux 2.11 per rendere la chiavetta avviabile.

Ma il punto fondamentale che nessuna delle guide che ho trovato ha mai preso in considerazione è quello della formattazione della chiavetta. Quanti di voi hanno provato a formattare la chiavetta con un filesystem Linux-friendly come ad esempio ext2, ext3, Reiser e compagnia bella? Io sì, anche perché questa è già una piccola protezione per rendere illeggibile la chiavetta in caso di smarrimento ad un utente poco esperto, che conosce solo Windows (inserendola nel PC e vedendo che non viene letta, sicuramente a pochi viene in mente che questa sia formattata con qualcosa di diverso rispetto ai filesystem gestibili da Windows: i più penseranno che sia difettosa). Se anche rimettete il filesystem VFAT, non reinstallate il MBR (Master Boot Sector), il settore che viene letto dal BIOS all’atto di avviare la chiavetta.  E così, nonostante abbiate seguito tutti i punti, difficilmente riuscirete ad avviare una distribuzione Linux installata sulla vostra chiavetta USB…
Seguendo le istruzioni complete dell’installazione dell’MBR sono invece Feather Linuxriuscito a far partire senza problemi Feather Linux proprio ieri: qui a destra potete infatti vedere uno screenshot di Feather Linux che gira sul mio PC, con il logo della distribuzione e le icone del software preinstallato.
Ecco i passaggi che ho seguito per ottenere il positivo risultato, precisando che ho lavorato su una installazione di Ubuntu 7.10 anche se ciò che leggerete vale per tutte le altre distribuzioni: basta installare il software citato con il gestore di pacchetti della propria distribuzione (URPMI per Mandriva, YAST per openSUSE, ecc…)

La prima cosa da fare in assoluto è controllare se la propria scheda madre è capace di effettuare il boot da periferiche USB (tipo chiavette, HD od altro): controllate nelle impostazioni del BIOS, leggete il manuale della scheda madre o visitate il sito del produttore. Se così non fosse, terminate la lettura ed andate a guardarvi un altro articolo, che questo non fa più per voi.
Fatto questo doveroso controllo, bisogna procurarsi una chiavetta USB da destinare a Linux: vista la modesta richiesta di spazio delle distribuzioni appositamente sviluppate, ne basta anche una da 1 GB.
Poi procuratevi la distribuzione che volete installare. Ne esistono diverse per chiavetta USB: Damn Small Linux, Puppy Linux e Feather Linux sono le più famose. Ho scelto proprio quest’ultima, Feather Linux, scaricabile dal sito ufficiale (http://featherlinux.berlios.de/) in versione 0.7.4 come pacchetto ZIP per l’installazione su dispositivi USB perché è forse la più adatta, delle 3 citate, al nostro scopo per facilità d’installazione (viene infatti fornito un archivio contenente i file già pronti per la copia sul dispositivo USB) e per fornitura di software integrato. Feather Linux comprende infatti, nei suoi 128 MB (contro i 50 di Damn Small Linux ed i 90 di Puppy Linux) tutto l’occorrente per il lavoro di un utente medio: software di grafica, browser internet, gestore di posta elettronica, lettore di filmati e file musicali, programmi di chat, fogli di calcolo, editor di documenti, partizionatore per dischi, masterizzazione (tramite console), ecc… il tutto gestito con un minimalista ma gradevole desktop grafico (Fluxbox).

Mentre scarichiamo il file zippato della distribuzione, installiamo gli altri tool necessari all’operazione. Apriamo Synaptic (oppure apt-get se preferite la console) e selezioniamo il pacchetto mtools: questo pacchetto contiene degli strumenti per scrivere su partizioni DOS/Windows ed è necessario perché contiene il programma mcopy, usato da SysLinux per copiare sulla chiave USB il codice per avviare il kernel di Linux. Visto che lo abbiamo nominato, selezioniamo anche SysLinux con Synaptic. E qui veniamo al punto 2 delle indicazioni a mio modo di vedere obsolete. Tutte le guide, infatti, suggeriscono di usare SysLinux in versione 2.11 (che si può scaricare da un qualunque mirror di www.kernel.org) mentre tutte le distribuzioni più recenti hanno nei loro repository questo software in versione 3.xx (su Ubuntu 7.10, al momento della stesura dell’articolo, è presente la versione 3.36). Stando sempre alle guide, SysLinux con numero di versione superiore alla 2.11 non supporta correttamente le partizioni FAT16, il filesystem consigliato per formattare la vostra chiavetta USB (il punto 1 delle indicazioni obsolete). Io ho installato SysLinux in versione 3.36 e formattato la mia chiavetta come FAT32, come potete vedere dallo screenshot qui sotto, dove riporto l’output del comando fdisk -l:

Chiave USB FAT32

L’ultimo pacchetto che ci serve è mbr, necessario per reinstallare l’MBR in caso aveste precedentemente formattato la chiavetta. Fatto questo, possiamo iniziare a lavorare.

Prima di tutto va scompattato l’archivio della distribuzione in una cartella a vostra scelta. Poi bisogna collegare la chiavetta USB e subito dopo aprire un terminale e digitare il comando dmesg, che riporta i messaggi generati dal kernel, compresi i log della connessione delle periferiche. Il suo output dovrebbe essere simile a questo:

Indirizzo chiave USB

L’output che ci interessa è quello evidenziato in rosso: sda1. Questo ci dice che la nostra chiavetta è stata montata come disco sda e che la partizione usata è la 1. Ovviamente il vostro output potrebbe essere diverso (sdb1, ad esempio): prendetene comunque nota, perché i prossimi comandi faranno riferimento a questo dato. Se sbagliate a trascriverlo o ad inserirlo, potreste anche cancellare permanentemente i dati di uno dei vostri dischi fissi!!! Se la vostra penna USB era già usata, copiate tutti gli eventuali dati in essa contenuta sul PC, perché tra poco provvederemo a cancellare ogni suo bit…

Adesso va smontata la chiavetta: cliccate col tasto destro sulla sua icona e poi scegliete “Smonta volume” se lavorate da interfaccia grafica, altrimenti date da console il comando sudo umount /dev/sdXydove sdXy sta per il valore trovato tramite il precedente comando dmesg. Attenzione: non rimuovete fisicamente la chiavetta, smontatela soltanto. In questa maniera il sistema non ne godrà più esclusivo possesso né la altererà per operazioni di lettura/scrittura, mentre voi potrete lavorarci con i tool che andremo tra poco ad richiamare da terminale.
Il passo successivo è la cancellazione dei dati della chiavetta. Se siete paranoici, potete effettuare una cancellazione totale di tutto quello che c’è sopra semplicemente dando da terminale il comando dd if=/dev/zero of=/dev/sdX. L’operazione è lunga: in pratica, il comando preleva dalla periferica virtuale /dev/zero un flusso di zeri e li scrive sulla penna USB. Per cancellare la mia chiavetta, che è di 2 GB di capacità, ci sono voluti circa 15 minuti… Se non siete così paranoici (o se non avete così tempo a disposizione) potete limitarvi a cancellare il primo settore (nel primo settore di ogni dispositivo sono riportate le tabelle delle partizioni presenti) con il comando dd if=/dev/zero of=/dev/sdX bs=512 count=1

Fatto questo, la vostra chiavetta USB non contiene più traccia delle precedenti partizioni. Adesso possiamo procedere con la creazione di una nuova partizione FAT32. Sempre da terminale date il comando fdisk /dev/sda Si aprirà la console del programma di partizionamento di Linux. Digitate il tasto “p” seguito da Invio per avere la lista delle partizioni della vostra chiavetta: non ne dovreste visualizzare alcuna (infatti abbiamo appena cancellato la tabella delle partizioni). Adesso premete il tasto “n” ed Invio per creare una nuova partizione. Scegliete “Primaria”, poi inserite come numero identificativo “1” e poi premete 2 volte invio per accettare i valori di inizio e fine della partizione (espressi in numero di blocchi) per utilizzare tutto lo spazio disponibile. Fatto questo, bisogna stabilire il tipo di partizione da usare. Come detto, ho scelto la FAT32 contro i suggerimenti delle guide che consigliavano la FAT16. Diamo il comando apposito col tasto “t” seguito da Invio e poi immettiamo come valore esadecimale del tipo di partizione il carattere “b”. Il penultimo passo è impostare il flag di boot su on per la partizione appena creata, così che possa essere avviabile dal BIOS. Premiamo “a” seguito da invio e poi inseriamo il numero della partizione (se avete seguito questa guida, inserito “1”). Adesso non ci resta che scrivere le modifiche sulla chiavetta USB (fino ad ora non avete materialmente eseguito nessuna operazione): diamo il comando “w” seguito da Invio. Solo ora, fdisk scriverà le modifiche apportate al dispositivo.

Ora dobbiamo formattare la partizione, così da creare un filesystem utilizzabile. Per far ciò diamo da terminale il comando mkfs.vfat -F 32 /dev/sdXydove indichiamo al sistema di formattare la partizione y del disco sdX (vi ricordate l’output del comando dmesg? Ecco, lo dovete usare qui. Attenti, però! Come ho detto potete sempre cancellare il vostro HD se sbagliate!) con filesystem FAT32 (l’opzione -F 32: se non la date, vi formatta la partizione come FAT16). Ora la chiave USB è vuota, partizionata e formattata. Bisogna riempirla, non trovate?

Allora montiamola e poi provvediamo a copiare la distribuzione. Per montare la chiavetta avete 2 metodi: o fate tutto da terminale, creando una cartella temporanea (mkdir tempdir) e poi montando il dispositivo (sudo mount /dev/sdXy tempdir) oppure potete semplicemente sfilare la penna USB e ricollegarla: è un buon test per verificare che le operazioni di partizionamento e formattazione siano andate a buon fine, dato che se è vista e montata dal sistema allora non si sono verificati errori nella procedura. Aprite la cartella dove è stata montata e copiamoci dentro tutto il contenuto del file ZIP di Feather Linux.

Eccoci all’ultimo passaggio da effettuare prima della verifica pratica: copiare il codice per l’avvio della penna. Prima di tutto bisogna smontare la chiavetta (sudo umount /dev/sdXy da terminale oppure “Smonta volume” da GNOME) altrimenti non possiamo effettuare l’operazione. Poi da terminale digitiamo syslinux -s /dev/sdXy per rendere avviabile la nostra penna.
Se non avete mai formattato la vostra chiavetta allora potete proseguire con la lettura, altrimenti dovete compiere l’operazione di ripristino dell’MBR. Sempre da console, lanciate il comando install-mbr -e 1 /dev/sdX. Con questo comando installiamo l’MBR sul dispositivo sdX (quello della chiavetta USB come da output del comando dmesg) ed abilitiamo al boot la prima partizione, che è anche l’unica presente sulla chiavetta dato che, se vi ricordate, abbiamo creato una sola partizione sul nostro dispositivo.

Fatto questo, possiamo riavviare il sistema perché l’ultima parte della procedura va fatta modificando le impostazioni del BIOS della scheda madre. Riavviamo il sistema ma NON SCOLLEGHIAMO la chiavetta: bisogna che il BIOS la veda al momento del riavvio altrimenti non potete lanciare Feather Linux. Durante il riavvio della macchina, il BIOS della scheda madre esegue quella procedura che va sotto il nome di POST (Power-On Self Test): controlla la CPU, esegue il test della RAM, cerca i dischi ed i DVD collegati e poi esegue il boot del sistema operativo. Durante il POST, premendo CANC (nella maggior parte dei casi è questo tasto, altrimenti un altro segnalato comunque dalla scheda madre in basso allo schermo) si entra nel menu di modifica delle impostazioni del BIOS. Qui dobbiamo controllare le opzioni per modificare l’ordine delle periferiche da controllare per l’avvio di un sistema operativo. Sulla mia scheda madre, una Albatron KX600-S Pro, si trovano in Advanced Settings. Qui ho le voci First Boot Device, Second Boot Device, Third Boot Device: alla prima voce ho CDROM, poi ho Hard-Disk ed infine Other. Poco sopra ho le voci per poter modificare le periferiche ad esse relative. Entrando nella modifica del secondo dispositivo (dove ho appunto Hard-Disk), ho trovato la mia chiavetta USB in fondo alla lista degli HD rilevati (infatti le chiavette USB sono viste come dischi rimovibili). Non ci resta quindi che spostarla in cima alla lista e poi uscire dalla maschera. Salviamo le modifiche apportate ed usciamo dal BIOS. Il computer si riavvierà e lancerà il sistema operativo presente sulla chiavetta USB, Feather Linux.
Ah, non preoccupatevi: la modifica all’ordine dei dispositivi è temporanea. Non appena riavviate il sistema senza la chiavetta inserita, l’ordine verrà ripristinato con i precedenti valori.

Questo è tutto, gente! Spero che la guida vi sia stata di aiuto.

P.S.:
voglio aggiungere un’informazione. Se intendete salvare dei dati sulla vostra chiavetta, allora vi conviene creare 2 partizioni. Per far ciò, dovete fare come segue. Dopo la cancellazione dell’MBR ed il lancio di fdisk, seguite questi passaggi:

  • create una partizione primaria con numero 1 e dimensione di 256 MB (alla domanda sul blocco finale, digitate “+256M”), impostatela su tipo FAT32 e rendetela avviabile;
  • create una seconda partizione primaria con numero 2 dimensionandola con tutto lo spazio che resta sulla chiavetta, poi impostatene il tipo su Linux (valore “83”);
  • scrivete le modifiche sulla chiavetta, poi formattate la partizione 1 come già detto;
  • per formattare la seconda partizione è necessario sfilare e riconnettere la chiavetta affinché il sistema veda anche la seconda partizione. Una volta riconnessa, smontatela e da terminale date il comando mke2fs /dev/sdX2Formatterete così la seconda partizione del vostro dispositivo USB (sdX2) con filesystem di tipo ext2 (comando mke2fs). Perché ho scelto questo? Perché per un dispositivo rimovibile un filesystem di tipo journaling (ext3 o ReiserFS) non solo non è necessario ma potrebbe risultare insicuro: meglio affidarsi ad un vecchio filesystem di tipo tradizionale, che scrive le modifiche nel momento in cui lo richiedete voi. Se preferite, potete comunque impostare la seconda partizione sempre su FAT32.
Installare Linux su una chiavetta USB
Installare Linux su una chiavetta USB
Linux_su_chiavetta_USB.pdf
224.6 KiB
4029 Downloads
Details...