Installare GRUB2 su disco lavorando da live

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Installare GRUB2 su disco lavorando da live

Messaggio da joe »

Sto facendo un esperimento:
- installare slackware sulla partizione 1 dell'hdd
- avendo tutto l'occorrente (paccehetti presenti nella iso di installazione, kernel huge, initrd) in un'altra partizione 2 dello stesso disco

Mi manca un tassello: il bootloader.
In pratica vorrei avviare il PC e scegliere dal menu del BIOS il disco voluto, a quel punto il bootloader installato sullo steso disco dovrebbe usare la partizione 2 come root e richiamare il kernel huge che sta lì e la initrd (contenente la busybox della iso di slackware, con l'ambiente d'installazione ecc) anch'essa presente li. In questo modo dovrei essere in grado fare la stessa cosa che si fà avviando dal DVD d'installazione. Ovvero avviare il setup ecc ecc.

Questa idea l'ho letta qui: http://docs.slackware.com/howtos:slackw ... l_from_hdd . La partizione 2 allora ospiterebbe il nostro ambiente d'installazione:
Vi ho copiato dentro il necessario (forse manca qualcosa eh...):

Codice: Seleziona tutto

# tree --filelimit 15 /mnt/ssd/boot/ /mnt/ssd/etc/
/mnt/ssd/boot/
├── grub
│   ├── fonts
│   │   └── dejavusansmono.pf2
│   ├── i386-pc [228 entries exceeds filelimit, not opening dir]
│   └── locale [28 entries exceeds filelimit, not opening dir]
├── isolinux
│   └── initrd.img
└── kernels
    └── huge.s
        └── bzImage
/mnt/ssd/etc/
└── grub.d
    └── 40_custom
Ora in qualche modo bisogna avviarlo in qualche modo. Eccoci al punto! Ho già partizionato il disco in modalità GPT e il mio PC è basato su BIOS, niente EFI, eccone la tabella:

Codice: Seleziona tutto

# gdisk -l /dev/sda
GPT fdisk (gdisk) version 1.0.0

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 488397168 sectors, 232.9 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): A176F2CE-5FBF-4692-BD97-F692331CE7D3
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 488397134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048            4095   1024.0 KiB  EF02  BIOS boot partition
   2            4096          413695   200.0 MiB   EF00  EFI System
   3          413696       210128895   100.0 GiB   8304  Linux x86-64 root (/)
   4       210128896       480112639   128.7 GiB   8300  Linux filesystem
   5       480112640       488397134   4.0 GiB     8200  Linux swap
Ok.
Adesso io voglio installare GRUB su quel disco, lavorando da un sistema Live. Sono su slackware live in particolare e non riesco ad installare GRUB, ho il sospetto di star sbagliando qualcosa.
In un caso come questo come si potrebbe fare ad in stallarlo?

- Il file di configurazione di grub l'ho copiato nella dir /etc/grub.d/40custom vorrei che leggesse quella configurazione li e producesse il corrispondente /boot/grub/grub.cfg (se non sbaglio) e vorrei che me lo piazzasse nella dir /boot/grub della partizione giusta (ovvero quella dove sta il resto dell'ambiente d'installazione) non nella dir /boot della live da cui sto lavorando...
- poi vorrei installare GRUB al suo posto, cioè nel disco da cui dovrò avviare il sistema... (non sulla chiavetta della slackware live ovviamente).

In sostanza avrei bisogno di qualche dritta in più circa l'installazione di grub in un disco diverso da quello in cui sta il sistema da cui si lavora. E nel caso di un disco partizionato come ho riportato... cioè BIOS+GPT.
Qualcuno può indicarmi qualche pasaggio in più, perchè da quello che ho trovato in rete non sono riuscito a concludere. Mi esce anche un errore, ma prima di postare dettagli in tal senso vorrei essere sicuro di non aver ceffato qualcosa di importante.

Grazie in anticipo! :)

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Installare GRUB2 su disco lavorando da live

Messaggio da joe »

Aggiungo i passaggi che ho fatto.
- ho montato la partizione interessata in /mnt/ssd

Codice: Seleziona tutto

/dev/sda4 on /mnt/ssd type ext4 (rw)
- ho installato grub nella dir boot di quella partizione col comando:

Codice: Seleziona tutto

grub-install --target=i386-pc --boot-directory=/mnt/ssd/boot /dev/sda
- ho creato il file di configurazione /etc/grub.d/40_custom (è nella root della live però non della partizione target):

Codice: Seleziona tutto

# cat /etc/grub.d/40_custom                                                
#!/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 14 install (DVD)" {
 insmod loopback
 insmod iso9660
 set isofile="/slackware64-14.0-install-dvd.iso"
 loopback loop (hd0,4)$isofile
 linux (loop)/kernels/huge.s/bzImage  load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 SLACK_KERNEL=huge.s
 initrd (loop)/isolinux/initrd.img
}
menuentry "Slackware 14 install" {
 set root (hd0,4)
 linux /boot/kernels/huge.s/bzImage  load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 SLACK_KERNEL=huge.s
 initrd /boot/isolinux/initrd.img
}
Come vedete ho aggiunto due entry, ma a me interessa più che altro la seconda.
Questo file l'ho copiato anche in /mnt/ssd/etc/grub.d/40_custom ma non so quanto serva perchè il punto è che quando poi si lancia grub-mkconfig penso venga letto il file in /etc non in /mnt/ssd/etc.
Infine lancio appunto il grub-mkconfig, ma guardate l'errore che salta fuori:

Codice: Seleziona tutto

# grub-mkconfig -o /mnt/ssd/boot/grub/grub.cfg
/usr/sbin/grub-probe: errore: recupero del percorso canonico di overlay non riuscito.
Cosa diamine sia il percorso canonico "overlay" non l'ho proprio capito, e neppure trovato in rete...
Era tanto bello lilo...

Se avete idee mi fanno comodo! :)

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Installare GRUB2 su disco lavorando da live

Messaggio da joe »

Ok, ho risolto in modo forse non del tutto corretto. Comunque efficace.
Il problema ricapitolando era l'impossibilità di configurare Grub attraverso il metodo consigliato, cioè scrivere il file /etc/grub.d/40_custom e poi lanciare grub-mkconfig che va a produrre il file /boot/grub/grub.cfg.
In fin dei conti si può scrivere direttamente il file di configurazione /boot/grub/grub.cfg e ho provato proporio questa soluzione:

Codice: Seleziona tutto

$ cat /mnt/ssd/boot/grub/grub.cfg    
menuentry "Slackware 14 install (DVD)" {
 insmod loopback
 insmod iso9660
 set isofile="/slackware64-14.0-install-dvd.iso"
 loopback loop (hd0,4)$isofile
 linux (loop)/kernels/huge.s/bzImage  load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 SLACK_KERNEL=huge.s
 initrd (loop)/isolinux/initrd.img
}

menuentry "Slackware 14 install" {
 set root (hd0,4)
 linux /boot/kernels/huge.s/bzImage  load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 SLACK_KERNEL=huge.s
 initrd /boot/isolinux/initrd.img
}
/mnt/ssd era la partizione di lavoro da cui eseguire l'installazione di slackware, li avevo messo i pacchetti da installare e anche la ISO del dvd d'installazione.
Teoricamente al riavvio, scegliendo da BIOS di partire dal disco SSD "/dev/sda", ecco che dovrebbe spuntare il menu di grub da cui scegliere se avviare la macchina usando come root la quarta partizione del disco, oppure la ISO del DVD montata in loop. Tutto questo avviene anche nella pratica, infatti al riavvio il menu di grub è apparso, però l'avvio della ISO non funzionava. Invece ha funzionato l'avvio della seconda voce cioè l'avvio dalla 4 partizione, sfruttando quindi la initrd.img e il kernel huge di pat che avevo posto nella dir /boot di quella partizione.
A dire il vero, appena si sceglie quella voce, compaiono degli errori a video.
Però poi si avvia tutto.
Diciamo che mi piaceva di più il vecchio Lilo, con tutti i suoi limiti era molto più semplice da capire. Invece con grub è stato più complesso.
Tra l'altro ho poi eseguito l'installazione di slackware lavorando appunto dall'ambiente creato in quella partizione del disco.
Alla fine ho saltato l'installazione di Lilo, proprio per predisporre Grub e istruirlo sta volta ad avviare la "terza" partizione del disco SSD /dev/sda3.
Come si fà?
Si è riproposto il solito problema: stavo lavorando dalla 4 partizione (la root del sistema d'installazione era quella).
Come modificare la configurazione di grub in modo che venga aggiunta anche l'avvio della terza partizione?

Sono andato un po' a tentoni, alla fine sono entrato nel sistema slackware installato, con un chroot. Almeno avevo sotto mano anche il manuale dei comandi relativi a grub ecc.
Ho modificato la configurazione col file /etc/grub.d/40_custom:

Codice: Seleziona tutto

# cat /etc/grub.d/40_custom      
#!/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 14.2" {
 set root (hd0,3)
 linux /boot/vmlinuz-generic load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 SLACK_KERNEL=vmlinuz-generic
}

menuentry "Slackware 14.2 Huge_Kernel" {
 set root (hd0,3)
 linux /boot/vmlinuz-huge rw printk.time=0 SLACK_KERNEL=vmlinuz-huge
}
Ho lanciato "grub_mkconfig" che ha rilevato addirittura la partizione dell'HDD meccanico contenente WindowsXP. Boh.
Riavviando però le mie entries non fungono...

Invece ce n'era un'altra, che non so come se l'è creata chiamata molto intuitivamente Slackware 14.2 (ma non è quella la mia lì sopra..).
Scegliendo quella, il sistema slackware parte senza problemi.
A questo punto in grub ci capisco proprio zero... E la mia lettura della documentazione evidentemente non è stata compresa correttamente ed è da rivedere senz'altro.

Se conoscete grub2 e vi va di commentare quanto raccontato, in modo da fare un po' di luce su quello che combina grub-mkconfig, siete i benvenuti. :)

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Installare GRUB2 su disco lavorando da live

Messaggio da joe »

Forse ho scritto troppo e si fa confusione.
La domanda alla fine è molto semplice:
- il disco è partizionato via GPT, non MBR.
- il PC supporta solo BIOS, non UEFI
- abbiamo installato slackware nella giusta partizione
- abbiamo saltato l'installazione di Lilo perchè non supporta GPT
- ci troviamo ancora nel sistema di installazione (mettiamo pure di aver fatto tutto col DVD di slackware)
- a questo punto come installiamo Grub2?

Non possiamo riavviare prima di averlo installato, perchè se no il nuovo sistema non potrà avviarsi, ovvio, manca il bootloader.
Forse così la domanda è più chiara.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Installare GRUB2 su disco lavorando da live

Messaggio da joe »

Probabilmente alla fine ho fatto quasi giusto. Ho solo sbagliato a creare delle entries in più in /etc/grub.d/40_custom.
Alla fine era spiegato piuttosto bene nei seguenti links:
http://docs.slackware.com/howtos:slackw ... st_install
http://docs.slackware.com/howtos:slackw ... efi#grub_2
http://docs.slackware.com/howtos:slackw ... stallation

Insomma quando ci si trova nell'ambiente di installazione di slackware (sia esso sul dvd o su altro ambiente predisposto ad hoc come ho fatto io), dopo aver installato slackware entriamo nel nuovo sistema che si trova in "/mnt". Lo facciamo con "chroot".
Però le indicaizoni che trovate nei links sopra non sono complete (a me saltava fuori un errore). Per entrare in chroot nel nuovo sistema, avendo anche bisogno di accedere ai devices (/dev/sda ecc) serve qualche comando in più:

Codice: Seleziona tutto

mount -o bind /dev /mnt/dev
mount -o bind /proc /mnt/proc
mount -o bind /sys /mnt/sys
chroot /mnt
A questo punto stiamo lavorando dal sistema appena installato, non più dall'ambiente di installazione del DVD (o altro).
Da qui possiamo banalmente installare Grub e specificare la necessità di moduli particolari per adattare il bootloader al nostro tipo di partizionamento GPT su macchina BIOS. E infine configurare lo stesso Grub creando il file /boot/grub/grub.cfg

Codice: Seleziona tutto

grub-install --modules=part_gpt /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
Ok, il file /boot/grub/grub.cfg che ne esce è piuttosto complesso.
Forse il fatto è dovuto a qualcosa predisposto da Pat... che automaticamente genera un menu più complesso di quello desiderato.
O forse è proprio Grub a rilevare di suo questo e quello e farcire il menu con tutto quello che ha trovato...
Questo non l'ho capito sinceramente.

Rispondi