Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 ? wink


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde 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