sabato 30 giugno 2012

Archlinux: aggiornare GRUB alla versione 2

Aggiornamento: da ieri, 20 Luglio 2012, nei repository ufficiali di Archlinux è completamente sparito GRUB prima versione per lasciare posto a GRUB2. Quindi da oggi in poi sicuramente se installate (o aggiornate) Archlinux vi ritroverete con GRUB2.
Per questa ragione la seguente guida ormai non serve più ;)

L'installer predefinito di Archlinux (AFI ossia Arch Installation Framework) non supporta GRUB2 quindi se avete installato Archlinux seguendo la procedura classica sicuramente vi ritroverete, come me, ad usare GRUB prima versione (0.97) invece del più moderno GRUB2.
In questa miniguida vi spiegherò come aggiornare il vostro GRUB alla nuova versione direttamente dal vostro Archlinux (quindi senza dover rifare tutta la procedura di installazione del sistema operativo!).
Prima di cominciare però alcune premesse: darò per scontato che avete installato GRUB tramite la procedura ufficiale (quindi nella partizione montata su /boot) e sul Hard Disk primario, quindi /dev/sda (ovviamente ricordatevi di sostituire eventualmente sda con il valore corrispondente al vostro Hard Disk primario se diverso, quello su cui è installato tutto il sistema operativo boot compreso. Se avete seguito la procedura ufficiale comunque dovrebbe essere sda anche per voi!).
Infine darò per scontato anche che abbiate già installato sudo (perché ovviamente servono i diritti di root per poter scrivere e svolgere operazioni sulla partizione di boot).

Bene, ora cominciamo!
Innanzitutto, per evitare qualsiasi guaio futuro, facciamo un bel backup dell'attuale configurazione di GRUB.
Da un terminale digitare, uno dopo l'altro, i seguenti tre comandi:
sudo mv /boot/grub /boot/grub-legacy
sudo dd if=/dev/sda of=/home/mbr_backup bs=512 count=1
sudo dd if=/dev/sda of=/home/bootcode_backup bs=446 count=1

Ora che abbiamo backuppato tutto (e quindi possiamo ripristinare in caso di eventuali errori) andiamo ad installare GRUB2.
Sempre da terminale digitare:
sudo pacman -S grub2-bios
Vi verrà chiesto di rimuovere la vecchia versione di GRUB in quanto, ovviamente, è in contrasto con GRUB2. Accettate e proseguite con l'installazione di tutto il necessario.
Ora dobbiamo caricare un modulo che permetta a GRUB2 di identificare correttamente i dischi e le partizioni.
Da terminale date:
sudo modprobe dm-mod

Una volta installato GRUB2 dobbiamo configurarlo.
Da terminale digitate in sequenza i seguenti comandi, uno per volta:
sudo grub-install --directory=/usr/lib/grub/i386-pc --target=i386-pc --boot-directory=/boot --recheck --debug /dev/sda

sudo mkdir -p /boot/grub/locale

sudo cp /usr/share/locale/en@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo

sudo grub-mkconfig -o /boot/grub/grub.cfg

Se non otterrete alcun messaggio di errore allora avrete finalmente GRUB2 installato e configurato alla perfezione. Riavviate e testate che tutto sia a posto ;)

P.s.: nel caso invece in cui si verifichino problemi o riceviate dei messaggi di errore durante una qualsiasi delle operazioni innanzitutto NON disperate (avete sempre dei backup pronti al ripristino in ogni caso!) e fate riferimento alla Wiki ufficiale di Archlinux per trovare possibili soluzioni: GRUB2 wiki.

10 commenti:

  1. ho installato archlinux senza installare nessun grub, pensando che dando da ubuntu update-grub2 vedesse archlinux ma non lo vede debbo fare come sopra descritto??

    secondo questo comando:
    sudo grub-install --directory=/usr/lib/grub/i386-pc --target=i386-pc --boot-directory=/boot --recheck --debug /dev/sda
    va bene anche per archlinux 64 bit

    RispondiElimina
    Risposte
    1. Per la seconda domanda anche leggendo sulla Wiki ufficiale non viene fatta alcuna distinzione tra 32 e 64 bit per quel comando, quindi "dovrebbe" essere uguale per tutti ma avendo però io una 32bit non posso darti la conferma sicura che funzioni lo stesso.
      Tornando alla prima domanda invece perché non operi manualmente andando tu stesso ad aggiungere nel grub.cfg la configurazione per il tuo Archlinux? Se ti può essere utile qui spiega come fare su Ubuntu: http://wiki.ubuntu-it.org/AmministrazioneSistema/Grub/AggiungereTogliereVoci

      Elimina
  2. ma dove lo inserisco:
    nel primo? o secondo?
    00_*: Reserved for 00_header.
    10_*: Native boot entries.

    RispondiElimina
    Risposte
    1. A rigor di logica dovrebbe essere il secondo, quello per le boot entries ;)

      Elimina
  3. scusa ma sono de coccio e prima di sbagliare vorrei una conferma qui dicono

    set root=(hdX,Y)
    archlinux siu trova in sda10
    cosa devo inserire?

    RispondiElimina
    Risposte
    1. Mmm allora, come spiega qui nella wiki ufficiale https://wiki.archlinux.org/index.php/GRUB2_(Italiano)#Creazione_manuale_del_grub.cfg
      "(hdX,Y) indica la partizione Y sul disco X. La numerazione delle partizioni parte da 1, mentre quella dei dischi da 0"

      Quindi, a rigor di logica sempre, se Arch è sulla decima partizione dell'HDD sdA allora dovrebbe essere "hd0,10" ;)

      Elimina
  4. forse ho capito ci va
    hd0,9
    set root=(hd0,9)
    confermi

    RispondiElimina
    Risposte
    1. Ehm no, come ti ho detto sopra credo sia invece "hd0,10" perché la numerazione delle partizioni parte da 1, mentre è quella dei dischi che parte da 0.
      Quindi su hd0,1 c'è sda1, su hd0,2 sda2 ecc... e su hd0,10 ci va sda10 ;)

      Elimina
  5. grazie per le risposte ma ci sono altri problemi questi non ci sono su archlinux
    linux /boot/vmlinuz-X.Y root=UUID=xxxxxxxxxxxxxxxxxxxxx
    initrd /boot/initrd.img-X.Y
    mi spiego meglio il primo c'è ma in formato gz ed impossible aprirlo, il secondo non c'è ma un file sempre .gz che si chiama initramfs-linux.img

    RispondiElimina
    Risposte
    1. Per il secondo si, "initrd /initramfs-linux.img" va bene.
      Per ottenere l'UUID della partizione di Archlinux basta che dai in un terminale il comando "sudo blkid" e prendi l'UUID relativo a sda10 nel tuo caso ;)

      Elimina