És clar. Et deixo una versió pensada directament per publicar al blog, amb les comandes i explicacions ordenades, incloent el problema que vam trobar amb Deepin, 11_dde.cfg, 40_custom i update-grub.
GRUB a Deepin: configurar el temps del menú d’arrencada
Quan tenim més d’un sistema operatiu o més d’una instal·lació de Deepin al mateix disc, és molt útil que GRUB mostri el menú d’arrencada durant uns segons abans de seleccionar automàticament l’opció per defecte.
En aquest cas tenia tres possibilitats principals:
- Deepin 25 de 50 GB, instal·lat a
/dev/sda6 - Deepin 25 de 130 GB, instal·lat a
/dev/sda5 - Windows, instal·lat a
/dev/sda3
La configuració de GRUB permet decidir quant temps es mostra el menú i quin sistema s’arrenca automàticament.
1. El fitxer principal de configuració
El fitxer habitual és:
/etc/default/grub
Es pot editar amb:
sudo nano /etc/default/grub
Les línies importants són:
GRUB_DEFAULT=0 GRUB_TIMEOUT=7 GRUB_TIMEOUT_STYLE=menu GRUB_RECORDFAIL_TIMEOUT=7
Què significa cada opció?
GRUB_DEFAULT
GRUB_DEFAULT=0
Indica quina entrada del menú s’utilitza per defecte.
0 significa la primera entrada.
Per exemple, si la primera entrada és el Deepin de /dev/sda6, aquest serà el sistema que s’arrencarà automàticament si no seleccionem cap altra opció.
2. GRUB_TIMEOUT: temps normal del menú
GRUB_TIMEOUT=7
Indica quants segons espera GRUB abans d’arrencar l’opció per defecte.
Exemples:
GRUB_TIMEOUT=3
→ 3 segons
sudo nano /etc/grub.d/40_custom
sudo update-grub
per veure les linies de set timeout a grub.cng:
grep "set timeout" /boot/grub/grub.cfg
GRUB_TIMEOUT=7
→ 7 segons
GRUB_TIMEOUT=10
→ 10 segons
GRUB_TIMEOUT=0
→ no espera i arrenca immediatament
GRUB_TIMEOUT=-1
→ espera indefinidament fins que l’usuari esculli una opció
Per tenir temps de triar entre diferents sistemes, un valor de 7 o 10 segons sol ser còmode.
3. GRUB_TIMEOUT_STYLE: fer visible el menú
Perquè el menú aparegui directament:
GRUB_TIMEOUT_STYLE=menu
Això és especialment important quan tenim diversos sistemes operatius.
Amb:
GRUB_TIMEOUT_STYLE=menu
GRUB mostra el menú i comença el compte enrere.
4. El temps especial GRUB_RECORDFAIL_TIMEOUT
Hi ha un altre temps que pot intervenir:
GRUB_RECORDFAIL_TIMEOUT=7
Aquest valor s’utilitza quan GRUB detecta que l’arrencada anterior havia quedat marcada com a fallida.
Per exemple:
GRUB_TIMEOUT=7 GRUB_RECORDFAIL_TIMEOUT=8
pot generar al grub.cfg:
if [ "${recordfail}" = 1 ] ; then
set timeout=8
else
set timeout=7
fi
Això significa:
arrencada normal → 7 segons arrencada amb recordfail → 8 segons
Si volem que el comportament sigui uniforme:
GRUB_TIMEOUT=7 GRUB_RECORDFAIL_TIMEOUT=7
5. Un problema particular de Deepin
En una instal·lació normal de GRUB, sovint n’hi ha prou amb modificar:
/etc/default/grub
Però Deepin pot tenir configuracions addicionals dins:
/etc/default/grub.d/
En el meu cas vaig trobar:
/etc/default/grub.d/11_dde.cfg
El seu contingut era:
# Written by org.deepin.dde.Grub2 DEEPIN_GFXMODE_ADJUSTED=1 DEEPIN_GFXMODE_DETECT= GRUB_BACKGROUND="/boot/grub/themes/deepin/background.jpg" GRUB_DEFAULT=0 GRUB_GFXMODE=1920x1080 GRUB_THEME="/boot/grub/themes/deepin/theme.txt" GRUB_TIMEOUT=1
Aquí estava el problema.
Al fitxer principal tenia:
GRUB_TIMEOUT=7
però Deepin tenia:
GRUB_TIMEOUT=1
Per tant, hi havia dues configuracions diferents.
Per comprovar-ho:
sudo cat /etc/default/grub
i:
sudo cat /etc/default/grub.d/11_dde.cfg
Si Deepin ha posat un altre valor a 11_dde.cfg, aquest fitxer s’ha de tenir en compte.
En el meu cas vaig canviar:
GRUB_TIMEOUT=1
per:
GRUB_TIMEOUT=7
El fitxer va quedar:
# Written by org.deepin.dde.Grub2 DEEPIN_GFXMODE_ADJUSTED=1 DEEPIN_GFXMODE_DETECT= GRUB_BACKGROUND="/boot/grub/themes/deepin/background.jpg" GRUB_DEFAULT=0 GRUB_GFXMODE=1920x1080 GRUB_THEME="/boot/grub/themes/deepin/theme.txt" GRUB_TIMEOUT=7
6. Fer una còpia de seguretat abans de modificar 11_dde.cfg
És recomanable guardar una còpia:
sudo cp /etc/default/grub.d/11_dde.cfg \ /etc/default/grub.d/11_dde.cfg.backup
Així sempre podem tornar enrere.
Per restaurar-la:
sudo cp /etc/default/grub.d/11_dde.cfg.backup \ /etc/default/grub.d/11_dde.cfg
7. Com comprovar d’on surt un GRUB_TIMEOUT
Si no sabem quin fitxer està modificant el temps, podem buscar-ho:
sudo grep -RniE 'timeout|GRUB_TIMEOUT' \ /etc/grub.d /etc/default/grub.d 2>/dev/null
Això permet descobrir configuracions ocultes o addicionals.
En el meu cas va trobar:
/etc/grub.d/00_header /etc/grub.d/30_os-prober /etc/grub.d/40_custom /etc/default/grub.d/11_dde.cfg
8. Compte amb /etc/grub.d/40_custom
També vaig trobar:
/etc/grub.d/40_custom
que contenia:
set timeout=3
El fitxer era:
#!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. # ... set timeout=3
Aquesta línia no era necessària i podia provocar confusió.
La vaig eliminar:
sudo sed -i '/^set timeout=3$/d' /etc/grub.d/40_custom
Després 40_custom va quedar sense cap ordre set timeout.
És millor no utilitzar 40_custom per controlar el temps general de GRUB. Aquest fitxer està pensat principalment per afegir entrades personalitzades al menú.
9. grub.cfg és el fitxer que GRUB acaba utilitzant
Un error habitual és modificar directament:
/boot/grub/grub.cfg
No és recomanable.
Aquest fitxer es genera a partir de les configuracions anteriors.
El procediment correcte és:
/etc/default/grub
+
/etc/default/grub.d/
+
/etc/grub.d/
↓
sudo update-grub
↓
/boot/grub/grub.cfg
Per tant, després de modificar la configuració cal executar:
sudo update-grub
10. Com comprovar el timeout real generat
Després de:
sudo update-grub
podem comprovar què ha generat GRUB:
sudo grep -n -B4 -A4 \ -E 'set timeout=8|set timeout=7|set timeout=3' \ /boot/grub/grub.cfg
També podem fer una comprovació més senzilla:
sudo grep -E 'set timeout=|set timeout_style=' \ /boot/grub/grub.cfg
Per exemple, una configuració normal de 7 segons pot mostrar:
set timeout_style=menu set timeout=7
11. Un detall important: timeout=8 no sempre és un error
Si trobem:
if [ "${recordfail}" = 1 ] ; then
set timeout=8
else
set timeout=7
fi
no significa necessàriament que la configuració estigui malament.
Simplement significa que:
recordfail=1 → 8 segons recordfail=0 → 7 segons
En el meu cas, inicialment tenia:
GRUB_RECORDFAIL_TIMEOUT=8
i per això GRUB generava el 8.
Si volem sempre 7 segons:
GRUB_RECORDFAIL_TIMEOUT=7
12. Configuració final recomanada
Per al meu cas, amb dos Deepin i Windows, una configuració clara és:
/etc/default/grub
GRUB_DEFAULT=0 GRUB_TIMEOUT=7 GRUB_TIMEOUT_STYLE=menu GRUB_RECORDFAIL_TIMEOUT=7
/etc/default/grub.d/11_dde.cfg
Mantenir les configuracions gràfiques de Deepin i:
GRUB_DEFAULT=0 GRUB_TIMEOUT=7
Per exemple:
# Written by org.deepin.dde.Grub2 DEEPIN_GFXMODE_ADJUSTED=1 DEEPIN_GFXMODE_DETECT= GRUB_BACKGROUND="/boot/grub/themes/deepin/background.jpg" GRUB_DEFAULT=0 GRUB_GFXMODE=1920x1080 GRUB_THEME="/boot/grub/themes/deepin/theme.txt" GRUB_TIMEOUT=7
/etc/grub.d/40_custom
No posar-hi:
set timeout=...
si no tenim un motiu específic per fer-ho.
13. Procediment ràpid per canviar el temps
Si volem canviar el temps a 10 segons, per exemple:
sudo nano /etc/default/grub
Canviar:
GRUB_TIMEOUT=7
per:
GRUB_TIMEOUT=10
I, si existeix el mateix paràmetre a Deepin:
sudo nano /etc/default/grub.d/11_dde.cfg
posar també:
GRUB_TIMEOUT=10
Finalment:
sudo update-grub
I comprovar:
sudo grep -E 'set timeout=|set timeout_style=' \ /boot/grub/grub.cfg
14. Resum de la meva incidència
El problema que tenia era una combinació de configuracions.
Jo havia posat:
/etc/default/grub GRUB_TIMEOUT=7
però Deepin tenia:
/etc/default/grub.d/11_dde.cfg GRUB_TIMEOUT=1
A més, havia quedat una ordre:
/etc/grub.d/40_custom set timeout=3
I també existia:
GRUB_RECORDFAIL_TIMEOUT=8
que explicava el set timeout=8 que apareixia al grub.cfg quan GRUB detectava recordfail.
La solució va ser:
- Posar
GRUB_TIMEOUT=7també a11_dde.cfg. - Eliminar el
set timeout=3de40_custom. - Posar
GRUB_RECORDFAIL_TIMEOUT=7. - Executar
sudo update-grub. - Comprovar el resultat a
/boot/grub/grub.cfg.
El resultat és una configuració coherent amb:
MENÚ GRUB VISIBLE
↓
7 segons
↓
┌───────────────────────────────┐
│ Deepin 25 Community (sda6) │ ← per defecte
│ Deepin 25 (sda5) │
│ Windows (sda3) │
└───────────────────────────────┘
Això permet tenir diversos sistemes instal·lats i escollir fàcilment quin volem arrencar.
Si vols, també et puc preparar una segona versió molt més curta, tipus “xuleta de butxaca”, amb només les comandes imprescindibles per tenir-la al costat del PC.