Grub current su slackware 14.2 - da dualboot a singolo

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.
Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3790
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Grub current su slackware 14.2 - da dualboot a singolo

Messaggio da joe »

Guarda, mi sa che la cosa non sta precisamente così.
Nel mio ultimo messaggio evidentemente mi sono spiegato male. Ho fatto della confusione nella spiegazione, volendo raccontare come non aveva funzionato e come invece funziona...

Come funziona:
1. creare partizione "adhoc" per ospitare grub, nel mio caso /dev/sda4. Formattarla, io ho scelto ext2.
2. montarla in ad esempio /mnt/adhoc
3. re-installare grub con l'opzione --boot-directory=/mnt/adhoc. Viene creata una subdir chiamata "grub", proprio uguale a quella che troviamo solitamente in /boot. Inoltre viene installato anche il "bootloader" nella sua partizione EFI oppure BIOS-Boot a seconda.
4. infine aggiungere il file di configurazione. Non serve ri-generarlo se ne abbiamo già uno coerente con il nostro sistema e i kernel che vogliamo avviare. La cosa importante però è dove lo piazziamo. Volendo rendere autonoma la partizione adhoc, va messo in "/mnt/adhoc/grub/".

Così a me funziona.


In soldoni:

1- non serve una sovra-directory "boot". Qua sembra bastare "/mnt/adhoc/grub/"

2- grub-mkconfig ha un sistema di funzionamento difficile da "etichettare" senza conoscere di preciso la configurzione di grub in /etc. In alcuni casi può essere che vada a ravanare in boot/grub e si aspetti di trovare lì qualcosa.
Nel mio caso a dirla tutta, lavorando dalla liveslack ho preso il grub.cfg da /boot/grub della 14.2 e l'ho messo in /mnt/adhoc/grub, dir che avevo generato in precedenza dalla 14.2 all'atto dell'installazione grub-install.
Quindi non ho usato grub-mkconfig... Posso comunque provare a vedere cosa succede:
- elimino /boot/grub dalla 14.2
- lancio grub-mkconfig -o /mnt/adhoc/grub/grub.cfg

Così ci leviamo il dubbio.

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

Re: Grub current su slackware 14.2 - da dualboot a singolo

Messaggio da joe »

Codice: Seleziona tutto

# rm -r /boot/grub

# grub-install --modules=part_gpt --boot-directory=/mnt/hd /dev/sda

# grub-mkconfig -o /mnt/hd/grub/grub.cfg
/usr/bin/grub-editenv: errore: impossibile aprire "/boot/grub/grubenv.new": File o directory non esistente.
Generating grub configuration file ...
done
In effetti un errore lo dà...
Però il grub.cfg che ha creato non è vuoto, sembra buono.
Anzi siccome avevo backuppato il precedente in /tmp posso confermare che è proprio identico:

Codice: Seleziona tutto

# diff /tmp/boot-grub.bk/grub.cfg grub/grub.cfg
#
Nel mio caso grub-mkconfig esegue lo script di intestazione "/etc/grub.d/00_header" e un secondo custom:

Codice: Seleziona tutto

# cat /etc/grub.d/42_slackware
#!/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 Stable | Kernel Generic' {
        savedefault
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt3'
        echo    'caricamento linux vmlinuz-generic...'
        linux   /boot/vmlinuz-generic root=/dev/sda3 ro
        initrd  /boot/initrd-generic.img
}
menuentry 'Slackware 14.2 Stable | Kernel Huge' {
        savedefault
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt3'
        echo    'caricamento linux vmlinuz-huge...'
        linux   /boot/vmlinuz-huge root=/dev/sda3 ro
        initrd  /boot/initrd-generic.img
}
L'errore legato alla mancanza di /boot/grub/ecc, potrebbe essere in qualche modo legato al primo script... ma no ho controllato bene:

Codice: Seleziona tutto

# grep \/boot /etc/grub.d/00_header
        for dir in "${pkgdatadir}" "`echo '/boot/grub' | sed "s,//*,/,g"`" /usr/share/grub ; do
Va be', provo a riavviare così...
In /boot adesso non c'è la dir "grub" è tutto solo nella partizione adhoc. Vediamo cosa succede.

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

Re: Grub current su slackware 14.2 - da dualboot a singolo

Messaggio da joe »

Rieccomi dopo il reboot.
Tutto liscio.

L'assenza /boot/grub non è determinante per grub-mkconfig.
Sì, ritorna un errore, ma in realtà produce grub.cfg corretto.
Inoltre alla prova pratica il sistema si avvia regolarmente.

Posso fare un'ulteriore prova a reinstallare con gub-install ma non dovrebbe centrare nulla la dir /boot, anche perché quando lo si lancia la prima volta non contiene nulla di inerente a grub... Come adesso nel mio caso.
Estremizzando prima di questo, si potrebbe fare anche la prova di rimozione di grub dalla BIOS boot partition. Ma non so come si fa, forse attraverso "dd" è sufficiente?
In modo da partire proprio da una tabula rasa, che non contenga una precedente installazione di grub. In questo modo si capisce se è realmente la nuova modalità ad essere in funzione e non si ha il dubbio che funzioni bene per merito della vecchia presenza di grub. Non so se mi sono spiegato...

rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: Grub current su slackware 14.2 - da dualboot a singolo

Messaggio da rik70 »

@joe
Sì, hai ragione in entrambi i casi:
- non è necessario avere /boot nella partizione dedicata;
joe ha scritto:
ven 5 nov 2021, 22:24
L'assenza /boot/grub non è determinante per grub-mkconfig.
questo però vale solo nel tuo caso, perché hai uno script custom da cui prende ciò che ti serve per il boot e che hai inserito tu "a mano".
La ragione l'hai detta tu stesso: gli script che generano il config evidentemente non sono così "evoluti". Se togli il tuo personalizzato, vedrai che il config che ottieni lo puoi usare solo come fermacarte.

Poi certo: se hai un grub.cfg già generato e adatto al sistema in uso è sufficiente copiarlo.

L'importante è comunque che la faccenda funzioni.

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

Re: Grub current su slackware 14.2 - da dualboot a singolo

Messaggio da joe »

Sì infatti, comunque l'errore che salta fuori, è il sentore che effettivamente grub si aspetta di essere posizionato in una dir chiamata "boot".
Non credo ci siano problemi ulteriori, però la cosa va valutata caso per caso perché appunto dipende dalla configurazione di grub che si fa a monte.

Metto due link in cui spiegano un po' meglio di me come e dove è posizionato GRUB-2 in base alla tipologia di partizionamento GPT/MBR e di scheda madre BIOS/UEFI.
Nella mia situazione ibrida BIOS/GPT grub viene spezzato praticamente in 3 parti:
- un pezzo sta nel MBR (o meglio, nella prima parte del disco) - lì questo pezzo lo chiama "stage 1"
- un altro pezzo viene posizionato nella partizione BIOS Boot Partition - e lì parla di "stage 1.5"
- il resto (non so se sia corretto parlare di "stage 2"...) viene posizionato nella partizione di "boot", oppure come visto nella mia prova, nella partizione in cui si è scelto di indirizzare l'installazione attraverso l'opzione "--boot-directory=".

https://askubuntu.com/questions/666602/ ... -partition
https://unix.stackexchange.com/question ... a-gpt-disk

Sono due link utili a capire un po' di più cosa bolle nella pentola grub2.
Mi resta il dubbio su come eliminare Grub da quelle posizioni, senza toccare la tabella partizioni GPT.
Credo si possa fare tranquillamente con "dd", ma si deve essere sicuri di quanti byte sovrascrivere "a zero".

Detto questo a me piaceva più LILO ma con GPT non credo funzioni più. C'è ELILO ho visto ma non ho capito se fuzniona anche in una soluzione ibrida come la mia su scheda madre con BIOS tradizionale.

rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: Grub current su slackware 14.2 - da dualboot a singolo

Messaggio da rik70 »

joe ha scritto:
sab 6 nov 2021, 11:31
Credo si possa fare tranquillamente con "dd", ma si deve essere sicuri di quanti byte sovrascrivere "a zero".
Nel tuo caso basta cancellare i primi 440 byte, il resto sta nella partizione Bios0xEF02. Ricordo però anche il valore 446, ma forse era per piallare su Bios il loader di windows, dove il discorso è analogo(basta cancellare quei byte senza curarsi di altro).

Se ricordo bene, alcuni stage di GRUB2 sono "inglobati" nel "core.img", e quindi non vengono "sparsi" su altre posizioni. L'ultimo stage poi è nella directory (/boot)/grub di cui parlavamo.

Prendi tutto questo con le "pinze".

Rispondi