• Diventa Fan!
  • Seguici Twitter
  • Seguici su Google+

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

Scritto in Linux, Ubuntu - Da Jessica Lambiase - domenica 2 gennaio 2011 - 10 Commenti

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:

  1. la stessa Ubuntu
  2. Parted Magic Live
  3. 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:

  1. 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/

  2. 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 comando

    sudo df

    Un 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% /boot

    Occhio 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!

  • rolly

    Ciao,
    ho provato la tua procedura e quella tramite burg su un pc con maverick ma, dopo che inizia a caricare l’immagine di natty o oneiric, si blocca ogni volta qui:
    * PulseAudio configured for per-user session
    saned disabled; edit /etc/default/saned
    Suggerimenti?
    Grazie

  • 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

  • http://www.chimerarevo.com Jessica Lambiase

    Promesso: appena avrò giusto un attimo di tempo darò un occhio al sorgente, e contatterò gli sviluppatori (che per altro se non ricordo male sono pure italiani.. lol =P ) per vedere il da farsi! :)

    Jessica

  • http://www.chimerarevo.com Jessica Lambiase

    Non sapevo burg-manager permettesse anche il montaggio delle ISO, ti dico in tutta onestà. Resta un ottimo programma, e potresti comunque provarlo.

    In realtà, più che altro, mi farebbe piacere sapere precisamente quali passaggi non ti sono chiari: questa guida era orientata proprio a chi non ha una gran dimestichezza con ISO, file d’avvio e compagnia cantante… e se dovesse esserci qualcosa da rendere ancor più chiaro non avrò problemi a farlo.

    Saluti,
    Jessica.

  • K-lele

    Complimenti Jessisa per l’utilissimo articolo.
    Ho solo un osservazione da farti, il file “40_custom” da modificare con le istruzioni per le iso l’ho trovato in “/etc/grub.d/” per il resto tutto perfetto e funzionante ;-)

    • http://www.chimerarevo.com Jessica Lambiase

      L’ho scritto e l’ho riscritto, e tu hai ragione… ma a chi pensavo? :)
      Grazie, correggo suibito!

  • gyanny

    ottimo!!
    allo stesso modo, per effettuare il boot da usb anche in quelle macchine che non hanno questa opzione nel bios, possiamo usare plpbt.
    basta scaricare questo file

    http://download.plop.at/files/bootmngr/plpbt-5.0.10.zip

    estrarre il contenuto, quello che ci interessa è solo il file plpbt.bin , il resto lo possiamo pure buttare alle ortiche.
    come dicevo bisogna copiare il file plpbt.bin nella directory /boot
    poi nel file /etc/grub.d/40_custom ( Jessica correggi l’articolo…piccolo errore di battitura) incolliamo quanto segue

    menuentry “Boot Usb” {
    set root=(hdX,x)
    linux16 /boot/plpbt.bin
    }

    avendo cura di sostituire la dicitura hdX,x con la nostra partizione di boot.
    a questo punto salviamo e aggiorniamo grub con
    sudo update-grub
    al riavvio nel menù di grub avremo la voce Boot Usb.

    • http://www.chimerarevo.com Jessica Lambiase

      Buuuuh… ho ancora i postumi di capodanno in circolo!

      Aggiungo la tua voce alla guida, e grazie! :)