Innanzitutto, capire come Ubuntu configura Grub2.
- /boot/grub/grub.cfg è il menu Grub2
- il comando update-grub genera automaticamente quel file
- ... leggendo le impostazioni predefinite da / etc / defaults / grub
- ... ed eseguendo shellscripts in /etc/grub.d
Quindi, se non si desidera modificare grub.cfg dopo ogni aggiornamento del kernel, si desidera modificare gli script in /etc/grub.d in modo che le modifiche vengano applicate ogni volta che viene eseguito update-grub .
In secondo luogo, per rispondere direttamente alla tua prima domanda, non ho familiarità con alcun modo per rendere invisibili le opzioni di avvio specifiche ma comunque accessibili tramite il menu di Grub. Ci sono molte piccole cose su Grub1 che non sono state reimplementate in Grub2 e non mi sorprenderebbe se questo fosse uno di questi.
Invece, è possibile rendere invisibili tutte le voci di menu (fino a quando evidenziate) impostando il colore del carattere del menu sullo stesso colore di sfondo. In /etc/grub.d/05_debian_theme , cambia menu_color_normal in modo che il primo colore (carattere) corrisponda al secondo colore (sfondo). Lascia menu_color_highlight diverso, quindi viene visualizzata la voce sotto il cursore.
# example from a likely-tweaked Karmic /etc/grub.d/05_debian_theme
set menu_color_normal=white/black
set menu_color_highlight=black/white
# ...to this
set menu_color_normal=black/black
set menu_color_highlight=black/white
Ottenere un separatore nel menu di Grub.
In Grub1 inseriresti una nuova voce come questa. Per quanto ricordo, hai bisogno della dichiarazione di root per renderla una voce di menu valida, altrimenti Grub1 l'ha ignorata.
# separator
title --------------------
root
Sospetto che Grub2 potrebbe essere simile. Una voce di menu molto semplice si presenta così in grub.cfg :
# basic example
menuentry "Memory test (memtest86)" {
linux /boot/memtest86+.bin
}
Poiché "qualsiasi" tra virgolette viene visualizzato come titolo, è possibile simulare un separatore. Come Grub1, Grub2 vuole che la parola chiave linux la tratti come una vera voce di menu, quindi fai attenzione a non selezionarla accidentalmente.
# a separator! no, really!
menuentry "....." {
linux /boot/memtest86+.bin
}
Sfortunatamente, "nulla" non significa nulla ; mentre stavo provando questo ho provato una lunga serie di trattini ("----------------") e non ha mai funzionato. Ma gli piace la breve stringa di punti mostrata sopra, quindi puoi usarla.
.....
Ora, ecco come creare un separatore. Per creare un gruppo e posizionarli dove li desideri automaticamente, devi aggiungerli negli script in /etc/grub.d .
Per questo esempio, mettiamo un semplice separatore tra le varie sezioni di grub.cfg . Se guardi /etc/grub.d , vedi i seguenti script:
- 00_header
- 05_debian_theme
- 10_linux - voci per kernel Ubuntu e recupero
- 20_memtest86 + - voce per Memtest86 +
- 30_os-prober - voci per Windows e altre distribuzioni Linux
- 40_custom: niente per impostazione predefinita; voci utente speciali possono andare qui
Creeremo un nuovo script, separatore e inseriremo quanto segue:
#!/bin/sh
# create a separator menu entry
cat << EOF
menuentry "....." {
linux /boot/memtest86+.bin
}
EOF
Ora sposta lo script in posizione per il primo separatore e collegalo in posizione per gli altri. Gli script vengono eseguiti in ordine, quindi se vuoi che il primo venga prima di 10_linux , chiamalo 09_separator o qualcosa del genere.
cd /etc/grub.d
# start the editor, paste in the script above, save, and exit
sudo nano separator
# set executable
sudo chmod +x separator
# rename into the first position
mv separator 09_separator
# link into remaining positions (can also use cp)
ln -s 09_separator 19_separator
ln -s 09_separator 29_separator
# not really necessary since 40_custom is empty by default
ln -s 09_separator 39_separator
Se hai una voce specifica impostata come predefinita in / etc / default / grub , potresti aver bisogno di aggiornarla - Grub2 inizia a contare le voci di menu su 0, e ciascuno di questi "separatori" è una voce valida, quindi contano anche loro. Se la voce predefinita precedente era 0 e prima hai aggiunto un separatore, ricordati di cambiare GRUB_DEFAULT su 1
Ora esegui update-grub ed esamina /boot/grub/grub.cfg - dovresti vedere i separatori lì dentro. In tal caso, riavviare e controllarli.
....
Se vuoi posizionare separatori altrove, diciamo, tra diverse versioni del kernel, dovrai modificare direttamente 10_linux (o un altro script) e trovare il posto appropriato per aggiungere il separatore. Puoi usare le linee dello script sopra; includi tutto tranne la prima riga #! / bin / sh .
Se vuoi qualcosa di più bello, usa immagini o temi splash di Grub. Devo darti un controllo di pioggia su questi argomenti, ma controlla le risorse di seguito.
risorse:
Ci sono due grandi guide di Grub2 su UbuntuForums che ho imparato a conoscere e ad amare:
GNU Grub 2 è un'altra grande risorsa. Ha una serie di script per modificare Grub2 di Karmic ( divulgazione completa: non li ho provati ).
La pagina del formato del tema di Grub Wiki è un must per l'hacking sui temi di Grub2.