#1 Le 16/04/2012, à 14:24
- Arbiel
[Script] Identifier le script utilisé par Grub lors de l'amorçage
Bonjour à tous
Un certain nombre de problèmes rencontrés lors des installations, ou réinstallations, lorsque plusieurs fichiers de configuration sont présents dans la machine, provient de la méconnaissance précise du fichier de configuration qui a été utilisé.
J'ai réalisé un script Grub qui recherche tous les fichiers /boot/grub/grub.cfg de la configuration courante et présente un menu permettant de choisir celui que l'on veut utiliser . Ce script permet ainsi de tester les divers fichiers présents, et éventuellement de trouver celui qui ne fonctionne pas, ou encore, de tester sans risques les modifications que l'on veut apporter à un fichier de configuration opérationnel.
En standard, il est recommandé d'installer Grub dans le MBR d'une support amovible et ce fichier de configuration dans le répertoire défini comme --boot-directory lors de cette installation de Grub. On dispose alors d'un outil qui n'a plus rien à craindre d'une éventuelle réinstallation de Windows. Je n'ose pas dire qu'il rend Grub incassable, mais on se rapproche de cet objectif.
Le support amovible en question n'a nul besoin d'embarquer un système quelconque. Une simple clé de plus basse capacité est largement suffisante : 2 Mo suffisent amplement. Cette clé peut d'ailleurs être formatée en FAT ou NTFS.
Je suis à la disposition de ceux d'entre vous qui seriez intéressés par ce script.
Arbiel
Dernière modification par Arbiel (Le 16/04/2012, à 14:25)
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04, GNOME 3.36.8
24.04 en cours de tests
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#2 Le 11/05/2012, à 05:42
- nesthib
Re : [Script] Identifier le script utilisé par Grub lors de l'amorçage
Pourquoi ne pas poster le script avec quelques explications au lieu d'attendre que quelqu'un te le réclame ?
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#3 Le 11/05/2012, à 15:05
- Arbiel
Re : [Script] Identifier le script utilisé par Grub lors de l'amorçage
Bonjour nesthib
Je n'ai pas mis mon script en ligne parce que sa mise en oeuvre demande quelques explications. Je suis actuellement occupé, mais je pense avoir le temps de revenir sur ce sujet ce week-end ou en début de semaine prochaine.
Je te remercie de bien vouloir patienter quelques jours.
Arbiel
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04, GNOME 3.36.8
24.04 en cours de tests
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#4 Le 11/05/2012, à 18:25
- Arbiel
Re : [Script] Identifier le script utilisé par Grub lors de l'amorçage
Je définis le dossier /boot/grub/greffons dans lequel j'enregistre les scripts que je veux utiliser.
Dans le cas présent, j'utilise deux scripts, un script qui définit des fonctions et un script qui les utilise.
Ces scripts font apparaître dans le menu principal (je veux dire le premier menu affiché par Grub) une ligne
Fichiers cfg
qui, choisie, provoque l'affichage d'un second menu énumérant les fichiers grub.cfg présents dans la configuration, et différents du fichier grub.cfg courant.
J'avais initialement prévu de n'utiliser de sous-menu que lorsqu'il y a le choix entre plusieurs fichiers et d'afficher au niveau du menu principal le choix du seul fichier grub.cfg trouvé, lorsque tel était le cas. J'ai finalement opté pour ce sous-menu, quel que soit le nombre de fichiers trouvés, mais je n'ai pas purgé le code des lignes qui visait à faire cette distinction.
L'utilisation de la touche "Majuscule" fait apparaître un message indiquant, en début d'exécution du fichier grub.cfg, de quel fichier il s'agit.
Le script des fonctions, nommé "fonctions_config.cfg" est le suivant :
##############################################################################
#
# Dénombrement des autres fichiers grub.cfg
#
##############################################################################
function denombre_cfg {
set config_nbr=
insmod regexp
for device in (*); do
# il ne faut pas compter le fichier actuel
if [ "${device}/boot/grub" != "${prefix}" ]; then
if [ -e ${device}/boot/grub/grub.cfg ]; thenfonctions_config.cfg
if [ -z ${config_nbr} ]; then set config_nbr=1; else set config_nbr=2; fi
# si une seule ligne, config_nbr = 1, sinon config_nbr = 2
fi
fi
done
}
##############################################################################
#
# Recherche des fichiers de configuration grub.cfg et constitution du menu
#
##############################################################################
function config_cfg {
insmod regexp
for device in (*); do
if [ -e ${device}/boot/grub/grub.cfg ]; then
probe --set=uuid --fs-uuid "$device"
if probe --set=label --label "$device"; then
menuentry "${device}[${label}]{${uuid}}" "${device}" {
if keystatus --shift; then echo "exécution du fichier ${1}/boot/grub/grub.cfg"; sleep 5; fi
set prefix=${2}/boot/grub
export prefix
configfile ${2}/boot/grub/grub.cfg
}
fi
fi
done
}
Le script qui utilise ces fonctions, config.menu.cfg contient le code ci-dessous
source ${prefix}/greffons/fonctions_config.cfg
denombre_cfg
if [ -n "${config_nbr"} ]; then
submenu 'Fichiers cfg' {
config_cfg
}
fi
On peut bien évidemment fusionné ces deux scripts en remplaçant la ligne
source ${prefix}/greffons/fonctions_config.cfg
par le fichier fonctions_config.cfg.
L'intégration dans le fichier grub.cfg passe par l'introduction dans le fichier /boot/grub/custom.cfg d'une ligne (après création éventuelle de ce fichier s'il n'existe pas)
source ${prefix}/greffons/config.menu.cfg
Arbiel
Dernière modification par Arbiel (Le 29/05/2012, à 23:05)
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04, GNOME 3.36.8
24.04 en cours de tests
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne