web-dev-qa-db-fra.com

Afficher le menu et les options sans redémarrer?

Je souhaite afficher le menu grub à partir de la ligne de commande. Également pour sélectionner une option du menu d’amorçage et appuyer Enter pour voir quels pilotes pré-noyau sont chargés et les paramètres d’amorçage passés lors du chargement du noyau.

Les raisons de le faire depuis la ligne de commande:

  • Le redémarrage pour afficher le menu grub prend du temps.
  • Il est difficile de prendre une photo du menu grub et de la publier sur des sites Web. Il est plus facile de prendre une capture d’écran lorsque Ubuntu est opérationnel.
  • L'option de menu edit avec e et prendre une photo est souvent difficile car l'écran est difficile à lire. Avec cette fonction, vous pouvez copier et coller à la place.
  • Il pourrait être plus facile d’utiliser cette fonction pour révéler toutes les versions du noyau plutôt que apt list --installed | grep linux-image ou ls /boot/vml*.
  • Pour voir rapidement le numéro de menu, c'est utile pour les commandes grub-reboot et grub-set-default.

Comment puis-je peindre le menu grub à partir de la ligne de commande, voir les numéros d'entrée de menu de grub internes et afficher les paramètres de démarrage d'une option donnée?

13
WinEunuuchs2Unix

Mis à jour le 7 mai 2018

Développer le script: script Bash pour cloner Ubuntu sur une nouvelle partition pour tester la mise à jour de 18.04 LTS J'ai découvert que vous obtenez des options de menu ridiculement longues qui provoquent la malignité du menu:

4>8  Ubuntu, with Linux 4.14.30-041430-generic (recovery mode) (on /dev/nvme0n1p8)

Ce problème a été résolu aujourd'hui en tronquant les lignes de plus de 68 caractères.

Mis à jour le 5 avril 2018

Cette mise à jour introduit grub-menu.sh une version bien supérieure à la réponse précédente (toujours disponible ci-dessous). Le nouveau menu contient:

  • Affiche les numéros d’entrée de menu grub 2. par exemple 0, 1, 1>0, 1>1 ... 2, 3
  • La version courte par défaut sans les options de sous-menu (upstart) et (recover mode) peut être définie.
  • Le paramètre 1 peut être passé sous la forme shortou longpour remplacer la valeur par défaut.
  • les en-têtes de colonne formatés dynamiquement selon le paramètre shortou longname__.

Capture d'écran couleur (version courte)

grub-menu.sh

Texte Capture d'écran (version longue)

Grub Version: 2.02~beta2-36ubuntu3.15


        ┌─────────┤ Use arrow, page, home & end keys. Tab toggle option ├──────────┐
        │ Menu No. --------------- Menu Name ---------------                       │ 
        │                                                                          │ 
        │     0    Ubuntu                                                     ↑    │ 
        │     1    Advanced options for Ubuntu                                ▮    │ 
        │     1>0  Ubuntu, with Linux 4.14.31-041431-generic                  ▒    │ 
        │     1>1  Ubuntu, with Linux 4.14.31-041431-generic (upstart)        ▒    │ 
        │     1>2  Ubuntu, with Linux 4.14.31-041431-generic (recovery mode)  ▒    │ 
        │     1>3  Ubuntu, with Linux 4.14.30-041430-generic                  ▒    │ 
        │     1>4  Ubuntu, with Linux 4.14.30-041430-generic (upstart)        ▒    │ 
        │     1>5  Ubuntu, with Linux 4.14.30-041430-generic (recovery mode)  ▒    │ 
        │     1>6  Ubuntu, with Linux 4.14.27-041427-generic                  ▒    │ 
        │     1>7  Ubuntu, with Linux 4.14.27-041427-generic (upstart)        ▒    │ 
        │     1>8  Ubuntu, with Linux 4.14.27-041427-generic (recovery mode)  ▒    │ 
        │     1>9  Ubuntu, with Linux 4.14.24-041424-generic                  ▒    │ 
        │     1>10 Ubuntu, with Linux 4.14.24-041424-generic (upstart)        ▒    │ 
        │     1>11 Ubuntu, with Linux 4.14.24-041424-generic (recovery mode)  ▒    │ 
        │     1>12 Ubuntu, with Linux 4.14.23-041423-generic                  ▒    │ 
        │     1>13 Ubuntu, with Linux 4.14.23-041423-generic (upstart)        ↓    │ 
        │                                                                          │ 
        │                                                                          │ 
        │                   <Display Grub Boot>        <Exit>                      │ 
        │                                                                          │ 
        └──────────────────────────────────────────────────────────────────────────┘ 

grub-menu.sh script bash

Les versions précédentes grub-display.sh et grub-display-lite.sh nécessitaient de nombreuses options de réglage dans le code. grub-menu.sh a seulement une option pour Tweak:

# Default for hide duplicate and triplicate options with (upstart) and (recovery mode)?
HideUpstartRecovery=false

Définissez la valeur sur trueou falsename__.

Le format par défaut peut être remplacé lors de l'appel du script à l'aide de:

grub-menu.sh short

ou:

grub-menu.sh long

Le code:

#!/bin/bash

# NAME: grub-menu.sh
# PATH: $HOME/bin
# DESC: Written for AU Q&A: https://askubuntu.com/q/1019213/307523
# DATE: Apr 5, 2018. Modified: May 7, 2018.

# $TERM variable may be missing when called via desktop shortcut
CurrentTERM=$(env | grep TERM)
if [[ $CurrentTERM == "" ]] ; then
    notify-send --urgency=critical "$0 cannot be run from GUI without TERM environment variable."
    exit 1
fi

AllMenusArr=()      # All menu options.
# Default for hide duplicate and triplicate options with (upstart) and (recovery mode)?
HideUpstartRecovery=false
if [[ $1 == short ]] ; then
    HideUpstartRecovery=true    # override default with first passed parameter "short"
Elif [[ $1 == long ]] ; then
    HideUpstartRecovery=false   # override default with first passed parameter "long"
fi
SkippedMenuEntry=false  # Don't change this value, automatically maintained
InSubMenu=false     # Within a line beginning with `submenu`?
InMenuEntry=false   # Within a line beginning with `menuentry` and ending in `{`?
NextMenuEntryNo=0   # Next grub internal menu entry number to assign
# Major / Minor internal grub submenu numbers, ie `1>0`, `1>1`, `1>2`, etc.
ThisSubMenuMajorNo=0
NextSubMenuMinorNo=0
CurrTag=""          # Current grub internal menu number, zero based
CurrText=""         # Current grub menu option text, ie "Ubuntu", "Windows...", etc.
SubMenuList=""      # Only supports 10 submenus! Numbered 0 to 9. Future use.

while read -r line; do
    # Example: "           }"
    BlackLine="${line//[[:blank:]]/}" # Remove all whitespace
    if [[ $BlackLine == "}" ]] ; then
        # Add menu option in buffer
        if [[ $SkippedMenuEntry == true ]] ; then
            NextSubMenuMinorNo=$(( $NextSubMenuMinorNo + 1 ))
            SkippedMenuEntry=false
            continue
        fi
        if [[ $InMenuEntry == true ]] ; then
            InMenuEntry=false
            if [[ $InSubMenu == true ]] ; then
                NextSubMenuMinorNo=$(( $NextSubMenuMinorNo + 1 ))
            else
                NextMenuEntryNo=$(( $NextMenuEntryNo + 1 ))
            fi
        Elif [[ $InSubMenu == true ]] ; then
            InSubMenu=false
            NextMenuEntryNo=$(( $NextMenuEntryNo + 1 ))
        else
            continue # Future error message?
        fi
        # Set maximum CurrText size to 68 characters.
        CurrText="${CurrText:0:67}"
        AllMenusArr+=($CurrTag "$CurrText")
    fi

    # Example: "menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu" ...
    #          "submenu 'Advanced options for Ubuntu' $menuentry_id_option" ...
    if [[ $line == submenu* ]] ; then
        # line starts with `submenu`
        InSubMenu=true
        ThisSubMenuMajorNo=$NextMenuEntryNo
        NextSubMenuMinorNo=0
        SubMenuList=$SubMenuList$ThisSubMenuMajorNo
        CurrTag=$NextMenuEntryNo
        CurrText="${line#*\'}"
        CurrText="${CurrText%%\'*}"
        AllMenusArr+=($CurrTag "$CurrText") # ie "1 Advanced options for Ubuntu"

    Elif [[ $line == menuentry* ]] && [[ $line == *"{"* ]] ; then
        # line starts with `menuentry` and ends with `{`
        if [[ $HideUpstartRecovery == true ]] ; then
            if [[ $line == *"(upstart)"* ]] || [[ $line == *"(recovery mode)"* ]] ; then
                SkippedMenuEntry=true
                continue
            fi
        fi
        InMenuEntry=true
        if [[ $InSubMenu == true ]] ; then
            : # In a submenu, increment minor instead of major which is "sticky" now.
            CurrTag=$ThisSubMenuMajorNo">"$NextSubMenuMinorNo
        else
            CurrTag=$NextMenuEntryNo
        fi
        CurrText="${line#*\'}"
        CurrText="${CurrText%%\'*}"

    else
        continue    # Other stuff - Ignore it.
    fi

done < /boot/grub/grub.cfg

LongVersion=$(grub-install --version)
ShortVersion=$(echo "${LongVersion:20}")
DefaultItem=0

if [[ $HideUpstartRecovery == true ]] ; then
    MenuText="Menu No.     ----------- Menu Name -----------"
else
    MenuText="Menu No. --------------- Menu Name ---------------"
fi

while true ; do

    Choice=$(whiptail \
        --title "Use arrow, page, home & end keys. Tab toggle option" \
        --backtitle "Grub Version: $ShortVersion" \
        --ok-button "Display Grub Boot" \
        --cancel-button "Exit" \
        --default-item "$DefaultItem" \
        --menu "$MenuText" 24 76 16 \
        "${AllMenusArr[@]}" \
        2>&1 >/dev/tty)

    clear
    if [[ $Choice == "" ]]; then break ; fi
    DefaultItem=$Choice

    for (( i=0; i < ${#AllMenusArr[@]}; i=i+2 )) ; do
        if [[ "${AllMenusArr[i]}" == $Choice ]] ; then
            i=$i+1
            MenuEntry="menuentry '"${AllMenusArr[i]}"'"
            break
        fi
    done

    TheGameIsAfoot=false
    while read -r line ; do
        if [[ $line = *"$MenuEntry"* ]]; then TheGameIsAfoot=true ; fi
        if [[ $TheGameIsAfoot == true ]]; then
            echo $line
            if [[ $line = *"}"* ]]; then break ; fi
        fi
    done < /boot/grub/grub.cfg

    read -p "Press <Enter> to continue"

done

exit 0

Versions précédentes (non recommandé)

Vous trouverez ci-dessous la réponse originale dans laquelle les numéros d’entrée de menu suivaient le format Grub 1.

grub-display.sh affiche les options et les paramètres du menu

Sans recourir à des applications tierces, vous pouvez utiliser un script bash pour afficher le menu grubet les paramètres de démarrage de toute option donnée. Les paramètres de démarrage ne se limitent pas aux valeurs cat /proc/cmdline. Ils incluent également les pilotes chargés avant le démarrage de Linux.

grub-display.sh script bash

Voici la liste complète du programme que vous pouvez copier et coller:

#!/bin/bash

# NAME: grub-display.sh
# PATH: $HOME/bin
# DESC: Written for AU Q&A: https://askubuntu.com/q/1019213/307523
# DATE: Mar 24, 2018. Modified: Mar 26, 2018.

# $TERM variable may be missing when called via desktop shortcut
CurrentTERM=$(env | grep TERM)
if [[ $CurrentTERM == "" ]] ; then
    notify-send --urgency=critical "$0 cannot be run from GUI without TERM environment variable."
    exit 1
fi

# Must have the dialog package. On Servers, not installed by default
command -v dialog >/dev/null 2>&1 || { echo >&2 "dialog package required but it is not installed.  Aborting."; exit 99; }

# Version without upstart and recovery options displayed
#awk -F\' '/menuentry / { print i++, $2}' /boot/grub/grub.cfg \
#        | grep -v upstart | grep -v recovery > ~/.grub-display-menu

# Version with upstart and recovery options displayed
awk -F\' '/menuentry / { print i++, $2}' /boot/grub/grub.cfg \
        > ~/.grub-display-menu

MenuArr=()

while read -r line; do 
    MenuNmbr=${line%% *}
    MenuName=${line#* }
    MenuArr+=($MenuNmbr "$MenuName")
done < ~/.grub-display-menu
rm ~/.grub-display-menu

LongVersion=$(grub-install --version)
ShortVersion=$(echo "${LongVersion:20}")
DefaultItem=0

while true ; do

    Choice=$(dialog \
        --title "Use arrow, page, home & end keys. Tab toggle option" \
        --backtitle "Grub Version: $ShortVersion" \
        --ok-label "Display Grub Boot" \
        --cancel-label "Exit" \
        --default-item "$DefaultItem" \
        --menu "Menu Number       ----------- Menu Name ----------" 24 76 16 \
        "${MenuArr[@]}" \
        >/dev/tty)

    clear
    if [[ $Choice == "" ]]; then break ; fi
    DefaultItem=$Choice

    for (( i=0; i < ${#MenuArr[@]}; i=i+2 )) ; do
        if [[ "${MenuArr[i]}" == $Choice ]] ; then
            i=$i+1
            MenuEntry="menuentry '"${MenuArr[i]}"'"
            break
        fi
    done

    TheGameIsAfoot=false
    while read -r line ; do
        if [[ $line = *"$MenuEntry"* ]]; then TheGameIsAfoot=true ; fi
        if [[ $TheGameIsAfoot == true ]]; then
            echo $line
            if [[ $line = *"}"* ]]; then break ; fi
        fi
    done < /boot/grub/grub.cfg

    read -p "Press <Enter> to continue"

done

exit 0

Note aux utilisateurs du serveur Ubuntu

Ce script bash a été conçu pour Ubuntu Desktop. Pour Ubuntu Server et les autres Distros Linux sur lesquels le paquet dialogn'est pas installé par défaut, un script différent appelé grub-display-lite.sh est inclus ci-dessous. Cette version utilise whiptailau lieu de dialogname__.

Réduire la taille du menu de 66%

Pour raccourcir la liste des options du menu de menu affiché, vous pouvez supprimer les options (upstart) et (recovery). Pour ce faire, décommentez ces lignes:

# Version without upstart and recovery options displayed
awk -F\' '/menuentry / { print i++, $2}' /boot/grub/grub.cfg \
        | grep -v upstart | grep -v recovery > ~/.grub-display-menu

Puis appliquez des commentaires à ces lignes:

# Version with upstart and recovery options displayed
#awk -F\' '/menuentry / { print i++, $2}' /boot/grub/grub.cfg \
#        > ~/.grub-display-menu

Captures d'écran

Voici à quoi cela ressemble lorsqu'il est appelé à partir de la ligne de commande. Malheureusement, je n'ai pas pu copier et coller le menu et j'ai dû utiliser Print Screen:

grub-display.sh.png

Désactiver le support de la souris pour copier/coller

 Grub Version: 2.02~beta2-36ubuntu3.15
 ──────────────────────────────────────────────────────────────────────────────────────────
       ┌──────────Use arrow, page, home & end keys. Tab toggle option─────────────┐
       │ Menu Number  ----------- Menu Name ----------                            │  
       │ ┌──────────────────────────────────────────────────────────────────────┐ │  
       │ │    0   Ubuntu                                                        │ │  
       │ │    1   Ubuntu, with Linux 4.14.30-041430-generic                     │ │  
       │ │    2   Ubuntu, with Linux 4.14.30-041430-generic (upstart)           │ │  
       │ │    3   Ubuntu, with Linux 4.14.30-041430-generic (recovery mode)     │ │  
       │ │    4   Ubuntu, with Linux 4.14.27-041427-generic                     │ │  
       │ │    5   Ubuntu, with Linux 4.14.27-041427-generic (upstart)           │ │  
       │ │    6   Ubuntu, with Linux 4.14.27-041427-generic (recovery mode)     │ │  
       │ │    7   Ubuntu, with Linux 4.14.24-041424-generic                     │ │  
       │ │    8   Ubuntu, with Linux 4.14.24-041424-generic (upstart)           │ │  
       │ │    9   Ubuntu, with Linux 4.14.24-041424-generic (recovery mode)     │ │  
       │ │    10  Ubuntu, with Linux 4.14.23-041423-generic                     │ │  
       │ │    11  Ubuntu, with Linux 4.14.23-041423-generic (upstart)           │ │  
       │ │    12  Ubuntu, with Linux 4.14.23-041423-generic (recovery mode)     │ │  
       │ │    13  Ubuntu, with Linux 4.14.21-041421-generic                     │ │  
       │ │    14  Ubuntu, with Linux 4.14.21-041421-generic (upstart)           │ │  
       │ │    15  Ubuntu, with Linux 4.14.21-041421-generic (recovery mode)     │ │  
       │ └────↓(+)──────────────────────────────────────────────────────16%─────┘ │  
       │                                                                          │  
       ├──────────────────────────────────────────────────────────────────────────┤  
       │             <Display Grub Boot>       <      Exit       >                │  
       └──────────────────────────────────────────────────────────────────────────┘  

Lorsque la prise en charge de la souris par défaut est activée, vous ne pouvez pas copier l’écran dans le presse-papiers mais vous devez utiliser Print Screen pour un instantané d'écran graphique. Afin de prendre en charge le copier-coller, vous devez désactiver le support de la souris en recherchant les lignes suivantes:

    --default-item "$DefaultItem" \
    --no-mouse \
    --menu "Menu Number       ----------- Menu Name ----------" 24 76 16 \

L'argument --no-mouse a été inséré sous --default-item. Cela signifie que vous perdez le support de la souris, mais que vous gagnez une meilleure résolution et que vous pouvez copier dans le presse-papier en mettant en surbrillance le texte et en appuyant sur Ctrl+C.

Afficher les paramètres d'amorçage

Utilisez les touches de navigation pour mettre une option en surbrillance et appuyez sur Enter pour voir les paramètres de démarrage pour cela:

menuentry 'Ubuntu, with Linux 4.14.27-041427-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.14.27-041427-generic-advanced-f3f8e7bc-b337-4194-88b8-3a513f6be55b' {
recordfail
savedefault
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root f3f8e7bc-b337-4194-88b8-3a513f6be55b
else
search --no-floppy --fs-uuid --set=root f3f8e7bc-b337-4194-88b8-3a513f6be55b
fi
echo 'Loading Linux 4.14.27-041427-generic ...'
linux /boot/vmlinuz-4.14.27-041427-generic root=UUID=f3f8e7bc-b337-4194-88b8-3a513f6be55b ro quiet splash loglevel=0 vga=current udev.log-priority=3 fastboot kaslr acpiphp.disable=1 crashkernel=384M-2G:128M,2G-:256M $vt_handoff
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.14.27-041427-generic
}
Press <Enter> to continue

Entrée de menu Grub # 94

menuentry 'Windows Boot Manager (on /dev/nvme0n1p2)' --class windows --class os $menuentry_id_option 'osprober-efi-D656-F2A8' {
savedefault
insmod part_gpt
insmod fat
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root D656-F2A8
else
search --no-floppy --fs-uuid --set=root D656-F2A8
fi
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
Press <Enter> to continue

Entrée de menu Grub # 96

menuentry 'System setup' $menuentry_id_option 'uefi-firmware' {
fwsetup
}
Press <Enter> to continue

grub-display-lite.sh pour Ubuntu Server

Ubuntu Server et Lubuntu ne possèdent pas le paquet dialoginstallé par défaut, contrairement à Ubuntu Desktop. Une version différente a été écrite pour ces utilisateurs en fonction du paquetage whiptailqui est inclus par défaut sur la plupart des distributions Linux.

L'inconvénient de whiptailest d'avoir moins de fonctions mais elles ne sont pas utilisées dans ce cas. Un autre inconvénient semble être moins de couleurs, mais cela peut le rendre plus facile à lire pour certaines personnes. whiptailprésente des avantages sur dialogtels que la copie dans le Presse-papiers, la prise en charge de la molette de la souris et un traitement probablement plus rapide.

grub-display-lite.sh script bash

#!/bin/bash

# NAME: grub-display-lite.sh
# PATH: $HOME/bin
# DESC: Written for AU Q&A: https://askubuntu.com/q/1019213/307523
# DATE: Mar 26, 2018.
# NOTE: "lite" version written for Ubuntu Server and Lubuntu which do
#       not have `dialog` installed by default. `whiptail` is used
#       instead. Nice consequences are better resolution, mouse scroll
#       wheel and copy to clipboard support.

# $TERM variable may be missing when called via desktop shortcut
CurrentTERM=$(env | grep TERM)
if [[ $CurrentTERM == "" ]] ; then
    notify-send --urgency=critical "$0 cannot be run from GUI without TERM environment variable."
    exit 1
fi

# Version without upstart and recovery options displayed
awk -F\' '/menuentry / { print i++, $2}' /boot/grub/grub.cfg \
        | grep -v upstart | grep -v recovery > ~/.grub-display-menu

# Version with upstart and recovery options displayed
#awk -F\' '/menuentry / { print i++, $2}' /boot/grub/grub.cfg \
#        > ~/.grub-display-menu

MenuArr=()

while read -r line; do 
    MenuNmbr=${line%% *}
    MenuName=${line#* }
    MenuArr+=($MenuNmbr "$MenuName")
done < ~/.grub-display-menu
rm ~/.grub-display-menu

LongVersion=$(grub-install --version)
ShortVersion=$(echo "${LongVersion:20}")
DefaultItem=0

while true ; do

    Choice=$(whiptail \
        --title "Use arrow, page, home & end keys. Tab toggle option" \
        --backtitle "Grub Version: $ShortVersion" \
        --ok-button "Display Grub Boot" \
        --cancel-button "Exit" \
        --default-item "$DefaultItem" \
        --menu "Menu Number       ----------- Menu Name ----------" 24 76 16 \
        "${MenuArr[@]}" \
       >/dev/tty)

    clear
    if [[ $Choice == "" ]]; then break ; fi
    DefaultItem=$Choice

    for (( i=0; i < ${#MenuArr[@]}; i=i+2 )) ; do
        if [[ "${MenuArr[i]}" == $Choice ]] ; then
            i=$i+1
            MenuEntry="menuentry '"${MenuArr[i]}"'"
            break
        fi
    done

    TheGameIsAfoot=false
    while read -r line ; do
        if [[ $line = *"$MenuEntry"* ]]; then TheGameIsAfoot=true ; fi
        if [[ $TheGameIsAfoot == true ]]; then
            echo $line
            if [[ $line = *"}"* ]]; then break ; fi
        fi
    done < /boot/grub/grub.cfg

    read -p "Press <Enter> to continue"

done

exit 0

Le script bash grub-display-lite.sh est fondamentalement identique à grub-display.sh sauf qu'il n'y a pas de message d'erreur si dialogn'est pas installé. De plus, certains arguments whiptailont des noms différents.

grub-display-lite.sh screenshots

L'écran couleur semble être plus facile à lire que grub-display qui utilise le paquet dialogname__:

grub-display-lite.sh

Voici l'image à base de texte qui ne nécessite aucune modification pour être copiée dans le presse-papier:

Grub Version: 2.02~beta2-36ubuntu3.15


        ┌─────────┤ Use arrow, page, home & end keys. Tab toggle option ├──────────┐
        │ Menu Number       ----------- Menu Name ----------                       │ 
        │                                                                          │ 
        │              55 Ubuntu, with Linux 4.13.9-041309-generic   ↑             │ 
        │              58 Ubuntu, with Linux 4.10.0-42-generic       ▒             │ 
        │              61 Ubuntu, with Linux 4.10.0-40-generic       ▒             │ 
        │              64 Ubuntu, with Linux 4.10.0-38-generic       ▒             │ 
        │              67 Ubuntu, with Linux 4.10.0-37-generic       ▒             │ 
        │              70 Ubuntu, with Linux 4.10.0-28-generic       ▒             │ 
        │              73 Ubuntu, with Linux 4.9.77-040977-generic   ▒             │ 
        │              76 Ubuntu, with Linux 4.9.76-040976-generic   ▒             │ 
        │              79 Ubuntu, with Linux 4.4.0-104-generic       ▒             │ 
        │              82 Ubuntu, with Linux 4.4.0-103-generic       ▒             │ 
        │              85 Ubuntu, with Linux 4.4.0-101-generic       ▒             │ 
        │              88 Ubuntu, with Linux 4.4.0-98-generic        ▒             │ 
        │              91 Ubuntu, with Linux 3.16.53-031653-generic  ▒             │ 
        │              94 Windows Boot Manager (on /dev/nvme0n1p2)   ▮             │ 
        │              95 Windows Boot Manager (on /dev/sda1)        ▒             │ 
        │              96 System setup                               ↓             │ 
        │                                                                          │ 
        │                                                                          │ 
        │                   <Display Grub Boot>        <Exit>                      │ 
        │                                                                          │ 
        └──────────────────────────────────────────────────────────────────────────┘ 

Comme mentionné ci-dessus, vous pouvez réduire la taille du menu de menu affiché ici de 66% lorsque vous supprimez les options de menu (upstart) et (recovery). C’est le cas ici, mais les lignes de détail se rétrécissent et les titres ne s’alignent pas parfaitement. Vous pouvez modifier les en-têtes de colonne en modifiant cette ligne:

    --menu "Menu Number       ----------- Menu Name ----------" 24 76 16 \

à quelque chose comme ça:

    --menu "      Menu Number ----------- Menu Name ----------" 24 76 16 \
12
WinEunuuchs2Unix