Ubuntu/Grub 2: come avviare il sistema direttamente da un’ISO di Ubuntu presente sull’hard disk

Il metodo che sto per presentarvi è uno dei metodi che spessissimo mi salva la vita nei miei frequentissimi ripristini: siccome non so stare ferma con le manine.. capita di sovente che il mio portatile di battaglia si rifiuti di avviarsi da CDROM e, siccome nativamente non supporta l’avvio da USB, mi ritrovo costretta ad installare e configurare un bootloader a parte, perdendo così più tempo.
Spulciando un po’ per internet, però, mi sono resa conto che Grub2 potenzialmente potrebbe avviare la macchina anche da un file ISO… e ho toccato con mano che effettivamente la cosa funziona!
Però… c’è un però: Grub2 è in grado di avviare soltanto determinati tipi di ISO e oltretutto, siccome andremo a dare in pasto a Grub2 in maniera manuale il kernel da avviare (kernel il cui percorso varia da ISO a ISO) non sono in grado di darvi, al momento, una procedura generale su come avviare la macchina da qualsiasi ISO.
Per la vostra gioia, però, vi dico come poter avviare da GRUB 2 trè delle ISO più utili per la manutenzione del sistema:
- la stessa Ubuntu
- Parted Magic Live
- System Rescue CD
Con questo metodo potrete utilizzare i 3 sistemi di cui sopra esattamente come se le rispettive ISO fossero masterizzate su CD.
Step 1: download dell’ISO che ci interessa
Ecco qui i link alle ISO che vi insegnerò ad avviare da Grub 2:
Vi ho segnalato i links alle ultime versioni, ma il procedimento funziona lo stesso anche con le versioni precedenti.
Step 2: salvare le ISO in una posizione ben nota
Abbiamo scaricato la ISO (o le ISO) che ci interessano. E adesso… adesso dove le mettiamo?
Per comodità (e per ordine) creiamo una directory iso all’interno di /boot: è lì che andremo a piazzare le ISO che ci interessano. Apriamo quindi un terminale e digitiamo:
sudo mkdir /boot/iso
Apriamo ora la directory appena creata in una finestra di Nautilus (facciamo così più che altro per comodità, per poter usare il copia/incolla), con il comando
gksu nautilus /boot/iso &
Inseriamo la password di root… e andiamo a copiare, nella directory appena aperta, l’ISO (o le ISO) che abbiamo scaricato. Chiudiamo la directory e procediamo.
Step 3: costruire il file di configurazione adatto per Grub 2
Avete seguito i passaggi precedenti? Bene, entriamo ora nel VIVO del procedimento!
Per far si che Grub 2 legga correttamente i nuovi “sistemi operativi” che aggiungeremo tra due minuti dobbiamo creare (o eventualmente modificare) dei files di configurazione ad-hoc. Per semplicità andremo ad utilizzare il file già esistente /etc/grub.d/40_custom. Per avere un’idea di cosa sia questo file (e quelli simili ad esso che troverete nella stessa directory) potrete dare uno sguardo veloce alla prima parte di questa guida.
Tornando a noi, per creare il suddetto file di configurazione ci servono 2 cose:
- Il nome esatto dell’iso (o delle iso) che abbiamo scaricato. Se non lo ricordate (come è giusto sia) potrete visualizzarlo (o visualizzarli) immediatamente aprendo un terminale e digitando il comando
ls -1 /boot/iso/ - La stringa con cui Grub 2 riconosce il filesystem in cui è presente la cartella /boot.
Questo si può definire il passaggio un po’ piu’ delicato di questa piccola guida anche se, in linea di massima, non dovreste avere problemi.
Iniziamo a guardare un po’ la lista delle vostre partizioni, con il comandosudo dfUn tipico output potrebbe essere il seguente:
File system blocchi di 1K Usati Dispon. Uso% Montato su
none 1024768 280 1024488 1% /dev
none 1030476 1192 1029284 1% /dev/shm
none 1030476 228 1030248 1% /var/run
none 1030476 0 1030476 0% /var/lock
/dev/sda1 78140128 53255504 24884624 69% /
/dev/sda2 1239426 700361 539065 73% /bootOcchio alla periferica che contiene la directory /boot: nel mio caso è /dev/sda2.
In generale se all’atto dell’installazione non doveste aver specificato una partizione di boot diversa, cioè se vi trovate in un caso simile a questo:
File system blocchi di 1K Usati Dispon. Uso% Montato su
none 1024768 280 1024488 1% /dev
none 1030476 1192 1029284 1% /dev/shm
none 1030476 228 1030248 1% /var/run
none 1030476 0 1030476 0% /var/lock
/dev/sda1 78140128 53255504 24884624 69% /..allora la periferica che vi interessa è quella che contiene /, cioè /dev/sda1.
Una volta capito quale è la periferica che ci interessa, dobbiamo capire un attimo come tradurla in «linguaggio GRUB 2».
Date un occhio a questa tabella:Periferica Linguaggio Grub 2 /dev/sda1 hd0,1 /dev/sda2 hd0,2 /dev/sda3 hd0,3 … … /dev/sdb1 hd1,1 /dev/sdb2 hd1,2 /dev/sdb3 hd1,3 … … /dev/sdc1 hd2,1 /dev/sdc2 hd2,2 /dev/sdc3 hd2,3 … … ..E’ immediato capire con quale criterio GRUB 2 assegni i nomi alle periferiche.
Una volta “scoperte” le due cose che ci interessano possiamo procedere alla creazione vera e propria del file.
Suppongo di aver scaricato e copiato tutte e tre le ISO e che la partizione che contiene /boot (e che quindi mi interessa) sia /dev/sda2 – e ,quindi, hd0,2.
Andiamo a modificare il file che vi dicevo prima, cioè /etc/grub.d/40_custom. Apriamo un terminale e scriviamo:
sudo gedit /etc/grub.d/40_custom
Alla fine del file, senza toccare nulla sopra, andiamo ad aggiungere i seguenti “pezzi di script” (uno, due o tutti… a seconda della distribuzione o delle distribuzioni che abbiamo scelto):
- per Ubuntu 10.10 Maverick:
cat << EOF
echo "Inserisco ISO Maverick" >&2
menuentry "Ubuntu Maverick - ISO" {
loopback loop (hd0,2)/boot/iso/ubuntu-10.10-desktop-i386.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/boot/iso/ubuntu-10.10-desktop-i386.iso noprompt noeject
initrd (loop)/casper/initrd.lz
} - per Parted Magic Live:
cat << EOF
echo "Inserisco ISO Parted Magic" >&2
menuentry "Parted Magic - ISO" {
set isofile="/boot/iso/pmagic-5.8.iso"
loopback loop (hd0,2)$isofile
linux (loop)/pmagic/bzImage iso_filename=$isofile boot=live load_ramdisk=1 prompt_ramdisk=0 noeject noprompt
initrd (loop)/pmagic/initramfs
} - per System Rescue CD:
cat << EOF
echo "Inserisco ISO Maverick" >&2
menuentry "System Rescue CD - ISO" {
set isofile="/boot/iso/systemrescuecd-x86-2.0.0.iso"
loopback loop (hd0,2)$isofile
linux (loop)/isolinux/rescue64 setkmap=it isoloop=/systemrescuecd-x86-2.0.0.iso
initrd (loop)/isolinux/initram.igz
}
Le parti in grassetto sono quelle che, eventualmente, dovrete modificare a seconda del vostro sistema e dei files che avete scaricato, come vi ho spiegato prima. Salviamo e usciamo da gedit.
A questo punto abbiamo praticamente terminato: non ci resta che riprendere il nostro terminale ed aggiornare la configurazione di GRUB 2, con il comando
sudo update-grub2
Provate adesso a riavviare il sistema: magicamente vi saranno apparse le voci di menu relative alle ISO… e basterà selezionarle e dare invio per avviarle!
[Edit - Grazie a gyanny per le istruzioni]:
Per utilizzare il bootloader PLOP (che permette l’avvio da USB anche se, nativamente, la scheda madre non lo supporta) procediamo come segue:
- scarichiamo PLOP da qui, estraiamolo e copiamo il file plpbt.bin nella directory /boot/iso
- aggiungiamo al file /etc/grub.d/40_custom le seguenti linee:
cat << EOF
echo "Inserisco Bootloader PLOP" >&2
menuentry "PLOP - Avvia da USB" {
set root=(hd0,2)
linux16 /boot/iso/plpbt.bin
}
Modificate hd0,2 a seconda della vostra configurazione di sistema, come illustrato allo step 2 e, infine, date da terminale un sudo update-grub2 per rendere effettive le modifiche.
Se avete suggerimenti su come far partire l’ISO di qualche altra distribuzione/sistema operativo sappiate che sono ben accolti.. fateceli sapere!






Pingback: Come installare Windows 7 da un’immagine ISO tramite Ubuntu - Chimera Revo
Pingback: Ubuntu: creare un unico DVD di installazione del sistema operativo sia a 32 che 64 bit - Chimera Revo
Pingback: Grub2: Boot di un immagine iso « Linux StickIt