grub2 in stallo

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
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

grub2 in stallo

Messaggio da conraid »

Ho installato il sistema su sd.
A parte qualche problema nella configurazione delle cose, tipo font più grandi e più sgranati, ed altre cose in qua e là, ed una reattività che sinceramente non vedo così marcata come leggende narravano, mi sono trovato un po' in crisi con grub.
Vi spiego.
Ho installato slackware da chiavetta usb, configurato il sistema ed alla fine prima di riavviare ho installato grub come avevo letto nella documentazione. Ed infatti il sistema si riavvia con grub2.
Ora però voglio modificare, modificando i parametri di avvio (quelli fatti con append in lilo) ed aggiungendo kernel.
Leggendo in rete vedo che devo che nel primo caso devo modificare /etc/default/grub e la variabile GRUB_CMDLINE_LINUX. Lo faccio, poi quando vado a dare
grob-mkconfig -o /boot/grub/grub.cfg
il sistema trova 4 voci (huge, generic ed i 2 link ad esse), e si ferma. Dopo decine di minuti ho fatto CTRL+C. Cosa può essere?




UPDATE
aggiungo qui.

Ho risolto, nel senso che dopo tot riavvii per sistemare cose non si è bloccato. Ma son curioso di capire come mai può averlo fatto.

Ora però c'è un problema diverso. Mi ritrovo sempre 4 voci. Ma non come credevo i kernel dentro, ma sono:
Slackware 14.1
Slackware (14.1)
ora non sono proprio così, ma tra le voci cambia solamente delle parentesi.

Dentro la prima voce ci sono 6 kernel. Generic, Huge, il mio compilato e le relativi voci di ripristino o safe mode insomma.
Dentro la seconda voce tantissimi immagini kernel, come se fossero ripetute varie volte.
vedo che sono in /boot/grub/grub.cfg, ma consigliano di non editarlo e di usare /etc/default/grub, dove infatti ho messo DEFAULT=saved in modo da far avviare nell'ultima voce salvata. Altrimenti come modifico l'ordine?
Come faccio a togliere le voci duplicate e pulire un po' il menù?

Questo è il mio /etc/default/grub il resto per adesso è di default

Codice: Seleziona tutto

# If you change this file, run grub-mkconfig -o /boot/grub/grub.cfg
# afterwards to update /boot/grub/grub.cfg.

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=$( sed 's/Slackware /Slackware-/' /etc/slackware-version )
GRUB_CMDLINE_LINUX_DEFAULT="vt.default_utf8=1 acpi_blacklight=vendor raid=noautodetect"
GRUB_CMDLINE_LINUX="vt.default_utf8=1 acpi_blacklight=vendor raid=noautodetect"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480
#GRUB_GFXMODE=1024x768x32

# Font used on the graphical terminal:
#GRUB_FONT=/usr/share/grub/dejavusansmono.pf2

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entrys
#GRUB_DISABLE_LINUX_RECOVERY="true"

hashbang
Packager
Packager
Messaggi: 2021
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS/OpenBSD
Località: Lecce/Bergamo

Re: grub2 in stallo

Messaggio da hashbang »

conraid ha scritto:Ho risolto, nel senso che dopo tot riavvii per sistemare cose non si è bloccato. Ma son curioso di capire come mai può averlo fatto.
Solitamente quello che rallenta il tutto è 30_os-prober che controlla la presenza di ogni file system montato e cerca di piazzarci una voce al boot.

Per esserne sicuro dai un grub-mkconfig senza reindirizzazione (-o /boot/grub/grub.cfg) così stampa in stdout.
Oppure eseguilo con un sh -x, tanto come buona parte di GRUB2 è uno script shell, quindi puoi tracciarne l'esecuzione.

In ogni caso, se il problema è 30_os-prober puoi risolvere come ho fatto io: 0644 agli script che non servono.
Nel mio caso: 10_linux, 20_linux_xen, 30_os-prober e 41_custom.
10_linux tecnicamente lo dovresti lasciare, ma nel mio caso ho potuto evitarlo. E adesso ti spiego perché.

Il modificare /etc/default/grub è una mezza verità. Le voci che vedi al boot non vengono gestite da lì, ma da script shell (a mio avviso MOLTO poco eleganti) presenti in /etc/grub.d. Per essere precisi, lo script responsabile di tutte quelle voci doppie è 10_linux.

IMHO quell'ammasso di script è una roba troppo fallata; l'esempio pratico è che non fa nemmeno distinzione tra un symlink ed il binario vero e proprio.
Di conseguenza, se hai cinque symlink allo stesso binario, per lui è come se avessi cinque kernel.

Bisognerebbe mettere mano allo script, ma sinceramente lo trovo uno sbattimento inutile.
Nel mio caso ho risolto creando un mio script custom che non fa altro che copiare sempre la mia voce.
Si chiama 10_slackware ed è fatto così:

Codice: Seleziona tutto

#!/bin/sh

cat << EOF
menuentry 'Slackware64-current' {
	load_video
	insmod gzio
	insmod part_gpt
	insmod btrfs
	set root='hd0,gpt5'
	if [ x\$feature_platform_search_hint = xy ]; then
		search --no-floppy --fs-uuid --set=root --hint=bios=hd0,gpt5 --hint-efi=hd0,gpt5 --hint-baremetal=ahci0,gpt5 39c8d05b-519f-4d37-9a24-0016722a2afb
	else
		search --no-floppy --fs-uuid --set=root 39c8d05b-519f-4d37-9a24-0016722a2afb
	fi		
	echo 'Loading kernel...'
	linux /__current/ROOT/boot/vmlinuz root=/dev/sda5 ro rootflags=subvol=__current/ROOT resume=/dev/sda4
	echo 'Loading initial ramdisk...'
	initrd /__current/ROOT/boot/initrd.gz
}
EOF
vmlinuz è un symlink al kernel generic. Io ho solo quello, quindi so che sarà sempre riferito a lui.
Te lo posto nel caso in cui ti possa servire come modello.

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: grub2 in stallo

Messaggio da conraid »

Thanks.

Intanto ho risolto alcune cose.
1) era 30_os-proper. Tolto flag eseguibile.
2) Ho visto che poi c'è xen e custom, che in pratica sono uno vuoto ed uno richiama il file custom.cfg. Per adesso non mi servono, ed ho lasciato eseguibile solo 10. Per adesso senza modifiche.
3) Ho tolto il generic, tanto uso o il mio o huge per le emergenze. Ho anche tolto il link simbolico vmlinuz-huge. vmlinuz no, in quanto ho visto dallo script che grub-mkconfig cerca solo vmlinuz-*, ed infatti adesso mi trova solo due kernel. Ed al riavvio ho solo due voci
- slackware 14.1
- slackware 14.1 impostazioni avanzate [da dove posso scegliere quale dei 4 kernel avviare. Cioè i due più i ripristino]
prima avevo altre due voci uguali, con tantissime voci dentro.

Così va bene, poi con calma studio i temi, le personalizzazioni, etc... e mi salvo il tuo script.


Altra domanda.
Come default ho huge, da cosa lo prende? da vmlinuz? da cosa?
Se voglio cambiarlo nelle impostazioni devo mettere GRUB_DEFAULT=X dove X è 1 (cioè il secondo trovato da mkconfig) o 2 (cioè la terza voce tra quelle elencate in grub)?
Per ora ho SAVED così ogni volta dopo i secondi di timeout parte con l'ultimo scelto, ma per capire cosa mettere di default.

hashbang
Packager
Packager
Messaggi: 2021
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS/OpenBSD
Località: Lecce/Bergamo

Re: grub2 in stallo

Messaggio da hashbang »

conraid ha scritto:Altra domanda.
Come default ho huge, da cosa lo prende? da vmlinuz? da cosa?
Basandomi sull'output (con e senza -x passato ad /bin/sh) di 10_linux e sul contenuto di esso e di /usr/share/grub/grub-mkconfig_lib sembra che vengano chiamate diverse funzioni ( version_find_latest(), version_test_gt(), version_sort() e version_test_numeric() ) sui kernel che vengono trovati nel pattern vmlinuz-*, in modo da far tornare la lista al contrario.
Ho fatto anche una prova mettendo un finto symlink, vmlinuz-zxzxzx-4.1.13, e difatti torna prima questo.

In sostanza, a quanto ho capito hanno replicato il comportamento di tac.

Codice: Seleziona tutto

$ ls /boot/vmlinuz-* | tac
almeno nel mio caso torna una lista identica a quella che si cerca di ottenere in quella libreria di GRUB2.
Tuttavia non so dirti perché hanno creato tutte quelle funzioni. Probabilmente o volevano una soluzione ad hoc e magari più robusta in scenari complessi, oppure odiavano semplicemente il fatto che ci fosse già una utility UNIX di tre lettere che facesse una cosa del genere con poco sbattimento.
E la cosa non mi sorprenderebbe, di questi tempi. :lol:

In aggiunta a questo, GRUB_DEFAULT è normalmente settata a 0 (stando a quanto dice la documentazione), quindi la voce vmlinuz-huge-4.1.13, che in quel "sort con gli steroidi" risulta essere la prima, è quella che viene identificata come predefinita.
Se voglio cambiarlo nelle impostazioni devo mettere GRUB_DEFAULT=X dove X è 1 (cioè il secondo trovato da mkconfig) o 2 (cioè la terza voce tra quelle elencate in grub)?
Per ora ho SAVED così ogni volta dopo i secondi di timeout parte con l'ultimo scelto, ma per capire cosa mettere di default.
Stando alla documentazione, sì.
Devi settare come valore di GRUB_DEFAULT l'indice corrispondente alla voce che vuoi tenere come default.

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: grub2 in stallo

Messaggio da conraid »

Boh, modificando il valore ho sempre la stessa voce di default. Per adesso tengo SAVED, poi con calma lo studio meglio.

Rispondi