Wyświetlać menu i opcje grub bez ponownego uruchamiania?

12

Chciałbym wyświetlić grubmenu z linii poleceń. Również, aby wybrać opcję menu rozruchowego grub i naciśnij, Enteraby zobaczyć, które sterowniki przed jądrem są ładowane, a parametry rozruchu przekazywane podczas ładowania jądra.

Powody, aby to zrobić z wiersza polecenia:

  • Ponowne uruchomienie, aby zobaczyć grubmenu, wymaga czasu.
  • Niezręcznie jest zrobić zdjęcie grubmenu i opublikować je na stronach internetowych. Łatwiej jest zrobić zrzut ekranu, gdy Ubuntu jest uruchomione.
  • Aby editgrub z opcji menu ei wziąć obraz jest często trudne, ponieważ ekran jest trudne do odczytania. Dzięki tej funkcji możesz zamiast tego skopiować i wkleić.
  • Ta funkcja może być łatwiejsza do ujawnienia wszystkich wersji jądra niż apt list --installed | grep linux-imagelub ls /boot/vml*.
  • Aby szybko zobaczyć numer menu grub, jest cenny dla poleceń grub-rebooti grub-set-default.

Jak mogę pomalować menu GRUB z wiersza poleceń, zobaczyć wewnętrzne numery pozycji menu GRUB i wyświetlić parametry uruchamiania dla danej opcji?

WinEunuuchs2Unix
źródło

Odpowiedzi:

12

Zaktualizowano 7 maja 2018 r

Opracowywanie skryptu: Skrypt Bash do klonowania Ubuntu na nowej partycji w celu przetestowania aktualizacji 18.04 LTS Odkryłem, że masz kilka śmiesznie długich opcji menu, które powodują złośliwe menu:

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

Zostało to naprawione dzisiaj przez obcięcie linii dłuższych niż 68 znaków.

Zaktualizowano 5 kwietnia 2018 r

Ta aktualizacja wprowadza grub-menu.shznacznie lepszą wersję do poprzedniej odpowiedzi (wciąż dostępnej poniżej). Nowe funkcje menu grub:

  • Wyświetla numery pozycji menu GRUB 2. czyli 0, 1, 1>0, 1>1... 2,3
  • Można ustawić domyślną krótką wersję bez opcji (upstart)i (recover mode)podmenu.
  • Parametr 1 można przekazać jako shortlub w longcelu zastąpienia wartości domyślnej.
  • nagłówki kolumn dynamicznie formatowane na podstawie shortlub longustawienia.

Kolorowy zrzut ekranu (krótka wersja)

grub-menu.sh

Tekstowy zrzut ekranu (długa wersja)

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 skrypt bash

Poprzednie wersje grub-display.shi grub-display-lite.shwymaga wiele opcji Podkręcanie w kodzie. grub-menu.shma tylko jedną opcję dostosowania:

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

Ustaw wartość na truelub false.

Domyślny format można zastąpić podczas wywoływania skryptu za pomocą:

grub-menu.sh short

lub:

grub-menu.sh long

Kod:

#!/bin/bash

# NAME: grub-menu.sh
# PATH: $HOME/bin
# DESC: Written for AU Q&A: /ubuntu//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

Poprzednie wersje (niezalecane)

Poniżej znajduje się oryginalna odpowiedź, w której numery pozycji menu były zgodne z formatem grub 1.

grub-display.sh wyświetla opcje i parametry menu grub

Bez polegania na aplikacjach innych firm można użyć skryptu bash do wyświetlenia grubmenu i parametrów rozruchowych dla dowolnej opcji. Parametry rozruchowe to coś więcej niż tylko cat /proc/cmdlinewartości. Obejmują także sterowniki załadowane przed uruchomieniem systemu Linux.

grub-display.sh skrypt bash

Oto pełna lista programów, którą możesz skopiować i wkleić:

#!/bin/bash

# NAME: grub-display.sh
# PATH: $HOME/bin
# DESC: Written for AU Q&A: /ubuntu//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

Uwaga dla użytkowników Ubuntu Server

Ten skrypt bash został zaprojektowany dla Ubuntu Desktop. W przypadku Ubuntu Server i innych dystrybucji Linuksa, które nie mają dialogdomyślnie zainstalowanego pakietu, grub-display-lite.shponiżej podano inny skrypt o nazwie . Ta wersja używa whiptailzamiast dialog.

Zmniejszenie rozmiaru menu o 66%

Aby skrócić wyświetloną listę opcji menu grub, możesz usunąć opcje (upstart)i (recovery). Aby to zrobić, odkomentuj następujące linie:

# 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

Następnie zastosuj komentarze do tych wierszy:

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

Zrzuty ekranu

Oto jak wygląda po wywołaniu z wiersza poleceń. Niestety nie byłem w stanie skopiować i wkleić menu i musiałem użyć Print Screen:

grub-display.sh.png

Wyłącz obsługę myszy dla kopiowania i wklejania

 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       >                  
       └──────────────────────────────────────────────────────────────────────────┘  

Gdy domyślna obsługa myszy jest włączona, nie można skopiować ekranu do schowka, ale należy go użyć Print Screenw przypadku graficznej migawki ekranu. Aby obsługiwać kopiowanie i wklejanie, wyłącz obsługę myszy, wyszukując następujące wiersze:

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

Argument --no-mousezostał wstawiony poniżej --default-item. Oznacza to, że tracisz obsługę myszy, ale zyskujesz lepszą rozdzielczość i możliwość kopiowania do schowka, zaznaczając tekst i naciskając Ctrl+ C.

Wyświetl parametry rozruchowe grub

Użyj klawiszy nawigacyjnych, aby podświetlić opcję i naciśnij, Enteraby wyświetlić parametry rozruchu:

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

Pozycja 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

Pozycja menu Grub # 96

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

grub-display-lite.sh dla Ubuntu Server

Ubuntu Server i Lubuntu nie mają dialogdomyślnie zainstalowanego pakietu, tak jak Ubuntu Desktop. Dla tych użytkowników została napisana inna wersja na podstawie whiptailpakietu, który jest domyślnie dołączany do większości dystrybucji Linuksa.

Wadą whiptailjest mniej funkcji, ale w tym przypadku nie są one używane. Kolejną wadą wydaje się być mniej kolorów, ale może to ułatwić niektórym osobom czytanie. Są zalety whiptailponad dialogtakie jak kopiowanie do schowka, wsparcia kółkiem myszy i prawdopodobnie szybsze przetwarzanie.

grub-display-lite.sh skrypt bash

#!/bin/bash

# NAME: grub-display-lite.sh
# PATH: $HOME/bin
# DESC: Written for AU Q&A: /ubuntu//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

grub-display-lite.shSkrypt bash jest w zasadzie taka sama jak grub-display.shz wyjątkiem nie ma komunikatu o błędzie, jeśli dialognie jest zainstalowany. Również niektóre whiptailargumenty mają różne nazwy.

grub-display-lite.sh zrzuty ekranu

Kolorowy ekran wydaje się łatwiejszy do odczytania niż ten, grub-displayktóry używa dialogpakietu:

grub-display-lite.sh

Oto obraz tekstowy, który nie wymaga modyfikacji, aby skopiować do schowka:

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>                       
                                                                                   
        └──────────────────────────────────────────────────────────────────────────┘ 

Jak wspomniano powyżej, możesz zmniejszyć rozmiar wyświetlanego tutaj menu grub o 66% podczas usuwania (upstart)i (recovery)opcji menu. Tak jest w tym przypadku, ale w konsekwencji linie szczegółów stają się węższe, a nagłówki nie układają się idealnie. Możesz poprawić nagłówki kolumn, zmieniając ten wiersz:

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

do czegoś takiego:

    --menu "      Menu Number ----------- Menu Name ----------" 24 76 16 \
WinEunuuchs2Unix
źródło
Aby zobaczyć aktualne informacje, po prostu użyj cat /proc/cmdline. Aby zobaczyć opcje, którą grub użyje przy następnej aktualizacji użyj menu grub grep GRUB_CMDLINE_LINUX /etc/default/grub. Drugi zestaw ustawień będzie używany przez apt lub za każdym razem, gdy update-grubzostanie uruchomiony. Aby zobaczyć wszystkie opcje po prostu less /boot/grub/grub.cfglub podobnie.
Panther
@Panther Dodałem wpisy menu grub # 94 i # 96 (z mojego systemu), aby pokazać większą użyteczność. Inną rzeczą do rozważenia jest łatwiejsze korzystanie z menu niż zapamiętywanie cati grepdla większości z nas.
WinEunuuchs2Unix
+1. Zgadzam się, że używanie menu w trybie tekstowym dialogmoże być pomocne.
sudodus
Cóż, jednym z przypisów do tej niesamowitej odpowiedzi jest to, że niektóre smaki ubuntu nie zawierają okna dialogowego lubuntu 16.04 domyślnie nie.
ianorlin
@ianorlin właśnie opublikowano znacznie lepszą wersję.
WinEunuuchs2Unix