Ogni tanto mi diverto a fare esperimenti con GNU/Linux, e tra i molti che faccio ho pensato che questo potrebbe essere utile all'utenza che vuole provare ad usare Ubuntu in modo "stabile" senza per questo disinstallare il sistema operativo che sta usando, modificare le partizioni o creare un dual boot per forza per far convivere due o più sistemi operativi su uno stesso disco rigido.
In questa guida cercherò di spiegare nel modo più semplice che mi è possibile una procedura "standard" per installare un sistema operativo come Ubuntu in un disco rigido USB esterno.
Nota: con "disco rigido USB esterno" o "disco esterno" mi riferirò ad una qualsiasi memoria di massa esterna che si connetta tramite presa USB al computer, ovvero dischi rigidi esterni o memorie flash USB.
Software:
Hardware:
Per quanto riguarda il PC sono validi i requisiti minimi Ubuntu.
Prima di imbarcarvi in questa avventura assicuratevi di poter effettivamente avviare il vostro PC da unità USB. Per il momento tenete presente il fatto che se il vostro computer è antecedente al 2003 le probabilità di poter abilitare l'avvio da USB sono assai remote. Questa possibilità è parte indispensabile dei requisiti minimi.
Questa è una parte importante che non va tralasciata per capire come un personal computer effettua le operazioni di bootstrap, ovvero l'avvio di un sistema complesso come un sistema operativo partendo da sistemi più semplici come il BIOS (Basic Input-Output System).
In seguito al POST (Power-On Self Test), che una macchina usa per determinare lo stato delle periferiche connesse al sistema e per avviarle, essa cerca nelle memorie di massa i settori di avvio (boot sector), generalmente collocati nel primo settore delle memorie stesse, il più usato e famoso dei quali è il MBR (Master Boot Sector), presente praticamente in tutti i dischi rigidi, esterni ed interni, attualmente in commercio per il grande pubblico. Per informazioni più dettagliate sul MBR potete fare riferimento a questo articolo.
Il computer legge il MBR di un disco, definito di avvio, configurato nel BIOS, e cerca un piccolo software installato nei primi 440 byte del MBR chiamato bootloader (o, per la precisione, primo stadio del bootloader). Da questo "primo stadio" il BIOS passa il controllo al bootloader, che si dirama in una specie di "effetto domino" che porta al caricamento di un secondo stadio e (se esiste) di un terzo stadio del bootloader, che causa poi il caricamento del kernel del sistema operativo direttamente nella memoria RAM. A quel punto il bootloader passa il controllo al kernel, che viene eseguito, ed esso comincia il caricamento del sistema operativo vero e proprio.
Un punto molto importante è proprio che un eventuale disco di avvio va configurato dal BIOS della macchina, e che senza una tale configurazione l'avvio sarà effettuato sempre e solo dal disco di default (in genere il disco rigido Master nel primo canale IDE, o il disco SATA connesso al canale SATA1, o il disco floppy, o il lettore CD/DVD). L'unico modo per essere davvero sicuri di quale disco abbia il compito di "aprire la giostra" è andare a frugare nel vostro BIOS, ma per il momento vi basta rendere il PC avviabile da lettore ottico per cominciare l'installazione nel disco esterno.
L'UUID (Universal Unique IDentifier) è un codice esadecimale da 128 bit (16 byte) usato per identificare, lo dice il nome, univocamente ed universalmente un software o un flusso di dati, come se fosse un'etichetta o un numero di serie.
L'UUID è usato anche per l'identificazione univoca di un filesystem, ed è ciò che ci verrà più in aiuto nella differenziazione dei filesystem in fase di caricamento di un sistema operativo nei primi stadi. Esso è usato in Windows sotto il nome di GUID (Globally Unique IDentifier) e da filesystem Linux come ext2/3/4, XFS, swap, eccetera.
Gli UUID utilizzati nei filesystem Linux sono di tipo 4, ovvero vengono generati in modo casuale sul template seguente:
xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
Dove gli x possono assumere qualsiasi valore esadecimale, mentre y può essere 8, 9, A o B.
In casi come quello descritto da quest'articolo l'UUID è necessario poiché udev, in fase di generazione dei blocchi, non dà sempre gli stessi nomi alle unità di memorizzazione, in particolare ad unità esterne, a meno che non vengano scritte regole specifiche per ogni unità; ciononostante non può essere fatto senza modificare i contenuti del file che ospita initramfs o initrd (solitamente localizzato in /boot), e gli initrd possono essere modificati in fase di aggiornamento del sistema, rendendo di fatto vane le modifiche.
Quindi il metodo più semplice per assicurare l'avvio dall'unità giusta è usare l'UUID, nel modo che vi insegnerò.
Sebbene possiate pensare che sia difficile, l'unica vera differenza tra un'installazione fissa (ovvero in un disco interno) ed una mobile (su disco esterno) è la configurazione del bootloader.
L'installazione in sé è abbastanza triviale e comporta alcuni accorgimenti soltanto se si vuole installare Ubuntu su un disco relativamente piccolo (che abbia meno di 8GB di spazio libero). Tenderò quindi a dare più importanza alla fase di installazione e configurazione del bootloader, e della configurazione dei mount all'avvio del computer da disco esterno, alla fine dell'articolo. Prima è comunque obbligatorio passare attraverso alcune tappe per un'installazione più mirata e senza possibilità di sovrascrivere altri sistemi operativi, o di sbagliare unità fisica.
Nella prima schermata del LiveCD di Ubuntu possiamo scegliere la lingua dell'ambiente e la nazionalità della tastiera, insieme ad eventuali ulteriori opzioni per il caricamento del kernel.
Come vedete avete più di una scelta tra le opzioni elencate. Essenzialmente, se volete passare subito all'installazione senza provare Ubuntu scegliete Install Ubuntu, altrimenti potete provare per un po' l'ambiente prima di installarlo con Try Ubuntu without any change to your computer.
Confermate le vostre scelte con Invio e, dopo il caricamento, se avrete scelto l'installazione diretta verrete catapultati direttamente nella prima schermata d'installazione per la selezione della lingua, altrimenti vedrete l'ambiente di Ubuntu con un'icona sul desktop con cui potrete installare il sistema operativo sul vostro disco.
Fateci doppio clic e verrà avviato il processo di installazione. Esso è identico, sia che si voglia installare Ubuntu su disco esterno che interno, e darò per fatti i passi di selezione della lingua, del fuso orario e del layout di tastiera. Salterò invece direttamente alla fase di partizionamento dei dischi rigidi.
All'inizio potreste non sapere con certezza quali volumi sono montati dove, quindi potreste dover rispondere Yes a questa domanda, a meno che non vi servano dei dati in alcuni dischi. Il programma di installazione smonterà tutti i volumi attualmente montati che compariranno nella lista mostratavi nel messaggio. In seguito potrete scegliere il disco fisico da partizionare tra tutti quelli non montati.
Prenderò in considerazione due dischi di esempio: una penna USB Flash da 4GB Kingmax e un disco rigido esterno Maxtor 6L080L0.
Fate clic nella riga di popup sotto all'opzione Use the entire disk per scoprire i dischi utilizzabili.
Nel primo esempio prendiamo 4.0 GB Kingmax USB2.0 Flash Disk. Basta fare clic per confermare la scelta. Annotatevi il nome del nodo del disco (in questo esempio è sdb) perché vi servirà per selezionare il disco giusto in fase di partizionamento manuale.
Poi scegliamo l'opzione Specify partitions manually (advanced)
Quindi facciamo clic su Forward, e alla prossima domanda (selezione di un'intero disco per il partizionamento) rispondete Continue.
Vi verrà messa davanti la schermata di selezione del disco e di partizionamento. Nel caso dell'unità flash USB il partizionamento è relativamente semplice.
Ricordate il nome del blocco che vi avevo chiesto di annotarvi? Nel mio caso era sdb, ma nel vostro potrebbe essere stato diverso. Se non ve lo ricordate o non ne siete sicuri, tornate indietro nelle schermate facendo clic su Back fino a che, selezionata l'unità giusta, avrete in mano il nome giusto. Quel nome è ora da selezionare nella lista che vi ho fatto vedere nell'ultima immagine.
Vi basta fare clic sulla voce giusta (nell'esempio /dev/sdb) e fare clic su New partition table in basso a sinistra.
Vedrete che ora sotto il disco scelto avrete una dicitura free space con una dimensione libera che dipende dalla dimensione del disco. Tenendo la selezione su free space fate ora clic su New Partition.
Personalmente vi suggerisco di tenere una unica partizione primaria e di farla montare in / (la directory radice). Potete, se volete, incorporare una partizione di swap, ma non vi consiglio di farla più grande di 1GB. Ubuntu rifiuta di installarsi in partizioni più piccole di 2GB, e potrebbero sorgere presto problemi di spazio in caso di installazione indiscriminata di software. Inoltre il bus USB, anche se 2.0, non si presta molto bene alla gestione di unità di swap.
Generalmente, attenetevi all'esempio in figura.
Per motivi di semplicità e compatibilità (che vedremo più avanti) vi consiglio di usare filesystem come ext2/3/4 o XFS.
Fate clic su OK per tornare alla schermata precedente.
Assicuratevi di aver scelto solo le partizioni da formattare nella finestra di partizionamento e di non aver lasciato spunte in partizioni già occupate.
Non preoccupatevi per le partizioni di swap. Cliccate su Forward per proseguire nell'installazione.
Questo è un disco rigido IDE da 80GB Maxtor, montato in un box esterno USB 2.0.
Il processo di partizionamento è molto simile, almeno per la prima parte. Ricordatevi sempre di scegliere il disco giusto (nell'esempio 82.0 GB Maxtor 6 L080L0), il resto sta a voi. Potete decidere se usare tutto il disco (Use the entire disk) o partizionarlo manualmente come nell'esempio con l'unità flash USB.
Su un disco come il Maxtor non avrete problemi di spazio, quindi potete partizionarlo come meglio vi aggrada, anche lasciando spazio per altri filesystem.
Questa è la parte più importante, e va studiata con attenzione per avere un sistema Ubuntu esterno funzionante. L'installazione è analoga e dipende solo dall'unità scelta.
Al termine della configurazione e subito prima dell'installazione vera e propria vi verrà mostrato un riassunto delle operazioni che verranno fatte sul disco scelto. Fate clic su Advanced... in basso a destra per mostrare una finestra di opzioni.
Assicuratevi che la spunta su Install boot loader sia attiva e selezionate l'unità fisica giusta dal menu popup sottostante. Nel caso esposto, selezioniamo /dev/sdb.
Ricordate sempre di selezionare il disco intero e mai la partizione (sdb1).
Confermate la scelta e tornerete alla finestra di riassunto.
Ora dovrete solo fare clic su Install e andarvi a fare un sandwich, per il momento abbiamo finito. Lasciate che il programma installi il sistema operativo nel disco di destinazione...
Con quest'ultimo messaggio si conclude l'installazione di Ubuntu. Ora dobbiamo vedere se la configurazione ci permette di avviare il sistema operativo da disco esterno: fate clic su Continue Testing per tornare a GNOME e continuare a lavorare.
Premete Alt+F2 sulla tastiera per aprire un launcher di applicazioni. Scrivete gnome-terminal e premete Invio.
Per prima cosa dobbiamo montare la partizione di root in un mountpoint preesistente. Può bastare utilizzare /mnt.
sudo mount -t <fs> <partizione> /mnt
Potete anche creare una directory apposita con mkdir:
sudo mkdir /mnt/target
Per esempio, avendo la partizione root in sdc2 con un filesystem ext3 lanciate questo comando:
sudo mount -t ext3 /dev/sdc2 /mnt/target.
Entriamo poi nel filesystem root appena montato con un cd /mnt (o cd /mnt/target). Dobbiamo controllare le configurazioni del bootloader e fstab.
Nota: per modificare file come i seguenti (che sono semplici file di testo) potete anche usare editor grafici come gedit.
Nel terminale appena aperto scrivete
sudo nano boot/grub/menu.lst
Per prima cosa verificate che l'opzione root abbia come primo numero tra parentesi 0.
root (hd0,X)
È molto importante, poiché il disco di avvio di default BIOS viene interpretato da GRUB come il disco 0. Errori in questo numero potranno dare un sistema non bootabile.
X è la partizione in cui è installato il kernel e initrd (se esiste).
Questa partizione consente di identificare e caricare il kernel corretto. Il numero della partizione sbagliato causerà un sistema non bootabile.
root (hd0,1)
Scorrete poi il file fino a che non trovate una struttura come la seguente.
Dovete sempre controllare che una delle opzioni sia root=UUID=<UUID_partizione>. Controllate il valore dell'UUID con i comandi specificati nella sezione "Verifica dell'UUID".
La "root" che vedete nell'opzione è la partizione che contiene i programmi di avvio del sistema (generalmente contenuti in /bin, /sbin, /etc...).
Il file da controllare è boot/grub/grub.cfg. In installazioni standard è abbastanza lineare e contiene una serie di strutture che cominciano con la dicitura menuentry, che indica un elemento della lista che comparirà all'avvio del sistema.
Qui dovete verificare una riga che comincia per set root. Essa ha lo stesso significato di root per GRUB 0.97, tranne per il fatto che le numerazioni delle partizioni cominciano da 1 e non da 0. Quindi, riprendendo l'esempio precedente (sdb2) la riga dovrà essere
set root=(hd0,2)
Sono valide le stesse condizioni essenziali espresse per il parametro root esposto sopra.
Controllate poi all'interno delle strutture menuentry che esista l'opzione del kernel root=UUID=<UUID>, esattamente uguale all'opzione trovata in menu.lst di GRUB 0.97, come ad esempio:
È importante distinguere il parametro root e set root nelle configurazioni di GRUB dall'opzione root=UUID presente nella riga di comando del kernel. I primi definiscono la partizione in cui si trovano il kernel e l'initrd, e il secondo identifica il filesystem in cui sono installati i programmi per l'avvio del sistema. In distribuzioni standard questi filesystem vengono a coincidere.
Per assicurarvi di aver scelto l'UUID giusto potete controllare con alcune semplici linee di comando.
Dove con <partizione> è identificata la partizione in cui sono collocati i programmi di avvio. Potete verificare gli UUID anche quando le partizioni sono montate.
Appena avrete finito le verifiche salvate con Ctrl+O e uscite con Ctrl+X.
Ora andiamo a vedere fstab con sudo nano etc/fstab.
Controllate che tutte le partizioni soggette all'avvio, o comunque facenti parte del disco fisico su cui avete installato Ubuntu, abbiano il proprio corretto UUID ai fini del montaggio all'avvio del sistema.
Terminata la verifica o concluse le modifiche potete salvare con Ctrl+O e chiudere nano con Ctrl+X.
Ora, una brutta abitudine del programma di installazione di Ubuntu è quella di aggiungere voci su voci, sia in menu.lst (o grub.cfg) che in fstab, e sono le voci delle partizioni o dei sistemi operativi trovati negli altri filesystem. La verifica della configurazione serve anche a rimuovere i filesystem o i sistemi operativi superflui.
Se volete rimuovere intere righe con nano potete usare Ctrl+K posizionandovi su una di esse.
Nel caso del bootloader, alcuni sistemi operativi potrebbero trovarsi in dischi non connessi al sistema o referenziati in modo non corretto (ad esempio, con il block device o con l'UUID sbagliato).
Nel caso di fstab, alcune partizioni potrebbero trovarsi in dischi fisici non connessi al sistema, e quindi il montaggio automatico verrà inevitabilmente concluso con un errore. Una soluzione è aggiungere noauto alla lista di opzioni di montaggio della rispettiva partizione. È molto probabile anche che ci siano molte partizioni di swap che potranno non essere mai usate. Semplicemente togliendole non verranno attivate all'avvio del sistema, a meno che non abbiate installato Ubuntu su una chiavetta da 4GB e vogliate avere un po' di swap senza sacrificare spazio sulla memoria flash.
Al termine delle verifiche della configurazione potete riavviare il sistema.
Al riavvio successivo dovrete rientrare nel BIOS e rendere avviabile il disco in cui avete installato Ubuntu. Non sarà necessario fare nient'altro, poiché i filesystem non sono identificati da nomi di blocchi (come sda o sdb) creati al volo da udev, ma saranno etichette UUID uniche e univoche per ogni filesystem, e tutte le verifiche del caso sono già state fatte.
Il kernel verrà caricato in automatico alla scelta del sistema operativo nella schermata del bootloader e, guidato dall'indicazione dell'UUID nella linea di comando iniziale, monterà come root il filesystem con l'UUID corrispondente.
Subito dopo verranno montati i filesystem specificati in /etc/fstab (se saranno presenti e non avranno l'opzione noauto) con gli UUID specificati, senza possibilità di errore.
Se avrete seguito l'articolo alla lettera senza tralasciare passaggi e avendo cura di trascrivere e verificare gli UUID giusti, avrete un disco esterno USB in cui è installato un sistema operativo "portatile".
Con le stesse indicazioni è possibile installare più distribuzioni in uno stesso disco rigido, sia interno che esterno, sfruttando la grande duttilità dell'identificazione dei filesystem tramite UUID e la grande flessibilità di bootloader come GRUB. Un immediato utilizzo del metodo è poter studiare molte distribuzioni praticamente in contemporanea senza alcuna modifica ai dischi interni o di sistema, e senza dover ricorrere a noiosi LiveCD.
Se avete problemi all'avvio (kernel non caricato, filesystem non trovato, disco non disponibile) potete leggere la pagina successiva dove offro uno troubleshooting ai problemi più comuni incontrati in questa fase di avvio del computer.
I problemi possono essere diversi, ma i più comuni sono di due tipi e riguardano un errore di disco o di partizione, e un errore di UUID sulla riga di comando del kernel. Questi tipi di errore possono richiedere una risoluzione temporanea modificando i parametri di avvio di GRUB all'avvio della macchina come descritto nella sezione "Modifica dei parametri di avvio" di seguito.
Errore: GRUB può non trovare il disco specificato dalla prima coordinata numerica di root o set root. In alternativa, GRUB 0.97 può non trovare il kernel da caricare specificato nella configurazione.
Risoluzione: Modificare temporaneamente l'opzione di avvio root per GRUB 0.97 e set root per GRUB 1.97, correggendo il numero di disco e/o di partizione.
Errore: si verifica un kernel panic in fase di avvio del sistema. Il kernel non trova il filesystem dall'UUID specificato nella riga di comando.
Messaggio del kernel
VFS: Cannot open root device "UUID=XXXXXXXX-XXXX-4XXX-yXXX-XXXXXXXXXXXX" or unknown-block(0,0)
E
Kernel panic - not syncing: VFS: unable to mount root fs on unknown-block(0,0)
Risoluzione: La risoluzione più immediata è riavviare il sistema spegnendo e riaccendendo il PC (un kernel panic non è reversibile e causa il blocco definitivo della macchina, a meno che non sia attivo CONFIG_MAGIC_SYSRQ nel kernel, come descritto nelle considerazioni in fondo alla pagina) e cambiando poi la riga di comando del kernel caricato da GRUB con l'UUID corretto del filesystem root.
Prendiamo una schermata di GRUB2 con la lista dei sistemi operativi.
Selezionate con i tasti freccia su o giù una delle voci nella lista. Premete poi la lettera e sulla tastiera per aprire una schermata di modifica dei parametri di avvio della voce selezionata.
La schermata è presa da GRUB2, ma dal punto di vista delle righe di comando è comunque adatta a descrivere le operazioni di base.
È come un piccolo editor di testo, potete usare i tasti freccia per spostare il cursore, Backspace per cancellare il carattere a sinistra e Canc per rimuovere il carattere a destra. Le opzioni da considerare sono set root per GRUB2 (come vedete sopra) e root per GRUB Legacy, oltre a root= nella riga di comando del kernel. Ricordate anche che il layout di tastiera all'avvio di GRUB sarà americano e non italiano.
Fate sempre riferimento a questa schermata per correggere gli errori di configurazione. E ricordate anche che ad ogni elemento della lista di avvio può corrispondere una diversa serie di parametri.
Quando avrete finito le modifiche premete Ctrl+X per avviare la voce modificata, o premete ESC per tornare al menu e selezionare una voce diversa.
MegaLab.it rispetta la tua privacy. Per esercitare i tuoi diritti scrivi a: privacy@megalab.it .
Copyright 2008 MegaLab.it - Tutti i diritti sono riservati