Aggiungere Slackware a Grub2

Mattepuffo's logo
Aggiungere Slackware a Grub2

Aggiungere Slackware a Grub2

In fondo ala pagina vi posto anche la seconda soluzione giuntami per email da Silvio!

Grazie ancora!


Ho installato giusto ieri Slackware 13.1 e come al solito ho avuto problemi con Grub2.

Non ho ovviamentr installato Lilo, ma ho deciso di aggiungere Slackware al Grub2 di Ubuntu.

Ho quindi installato Slackware e poi da Ubuntu ho dato i classici comandi:

$ sudo os-prober

$ sudo update-grub

Grub2 mi ha aggiunti 4 voci per 4 differenti kernel:

  • kernel-generic che è andato in kernel panic all'avio di Slackware
  • kernel-generic-smp che è andato in kernel panic all'avio di Slackware
  • kernel-huge che ha funzionato
  • kernel-huge-smp che ha funzionato

Ovviamente essendo consigliato il generic/generic-smp non mi sono accontentato.

Una parte della soluzione si trova nel file /boot/README di Slackware.initrd.

In pratica per usare il generic dobbiamo costruire l'initrd.

Entriamo con il kernel-huge e creiamolo da terminale (da root):

# cd /boot

# mkinitrd -c -k 2.6.33.4-smp -m ext4 -f ext4 -r /dev/sda3

Voi dovete mettere al posto di ext4 il filesystem che utilizzate per Slackware, e al posto di /dev/sda3 la partizione dove è installato.

(Se non usate il kernel -smp togliete il suffisso dopo la versione del kernel).

Ovviamente non basta.

Bisogna modificare Grub2 a mano.

Le guide sconsigliano di modificare direttamente il file /boot/grub/grub.cfg e di usare gli script.

A un certo punto però mi sono stufato di tutta questa complicazione e ho deciso di modificare direttamente quel file.

Dopo la riga ### BEGIN /etc/grub.d/30_os-prober ### ci son quattro voci che riguardano Slackware.

Ecco come le ho modificate:

menuentry "Slackware Linux (Slackware 13.1.0) (on /dev/sda3)" {
insmod ext2
set root='(hd0,3)'
search --no-floppy --fs-uuid --set a3045d4d-3b76-42a4-bf74-a4b172b12bf3
linux /boot/vmlinuz-generic-2.6.33.4 root=/dev/sda3
initrd /boot/initrd.gz
}
menuentry "Slackware Linux (Slackware 13.1.0) (on /dev/sda3)" {
insmod ext2
set root='(hd0,3)'
search --no-floppy --fs-uuid --set a3045d4d-3b76-42a4-bf74-a4b172b12bf3
linux /boot/vmlinuz-generic-smp-2.6.33.4-smp root=/dev/sda3
initrd /boot/initrd.gz
}

Ovviamente dobbiamo modificare solo le prima due.

Le aggiunte sono in rosso!

In pratica gli dobbiamo dire a mano dove pescare initrd perchè da solo non ci riesce!

Seconda soluzione

Vi riporto testuali parole di Silvio:

Dopo aver ottenuto l' initrd, si aggiunge la riga come correttamente avevi fatto tu, suggerisco pero' di cambiare l' intestazione, perchè le voci che ci interessano, si aggiungono al menù di Grub, non sostituiscono quelle già presenti.
Dato che ho fatto l' esperimento con la Slackware 13.1 a 32 bit ed anche con la 64 bit, come puoi vedere ho modificato l' intestazione rispettivamente con "Slackware GK" e con "Slackware 64 GK" (per inciso, la 64 non ha i kernel "smp").
Così, dopo aver copiato / modificato sul "40" le voci del "cfg" ed aggiunto la riga "initrd", si salva il tutto e si da un bel colpo di "sudo update-grub".

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry "Slackware GK (Slackware 13.1.0) (on /dev/sda10)" {
insmod ext2
set root='(hd0,10)'
search --no-floppy --fs-uuid --set 7a744c3c-0ad5-4810-8a90-20cba7ad667e
linux /boot/vmlinuz-generic-2.6.33.4 root=/dev/sda10
initrd /boot/initrd.gz
}
menuentry "Slackware 64 GK (Slackware 13.1.0) (on /dev/sda12)" {
insmod ext2
set root='(hd0,12)'
search --no-floppy --fs-uuid --set d89610b5-c6b5-494a-bf20-4cb57ca5eb19
linux /boot/vmlinuz-generic-2.6.33.4 root=/dev/sda12
initrd /boot/initrd.gz
}

Terza Soluzione
Soluzione by Marco che propone due alternative:
1) procedere come dice Silvio, però al posto di trascrivere sole le modifiche in "40", si possono aggiungere le intenstazioni di eventuali altri SO e/o kernel;
2) aggiungere la seguente riga in /etc/default/grub, " GRUB_DISABLE_OS _PROBER="true" ",
così grub non ricerca nuovi SO.

Condividi

Commentami!