रिबूट किए बिना ग्रब मेनू और विकल्प प्रदर्शित करें?


12

मैं grubकमांड लाइन से मेनू प्रदर्शित करना चाहूंगा । ग्रब बूट मेनू विकल्प का चयन करने के लिए और Enterयह देखने के लिए दबाएं कि कर्नेल लोड करते समय पूर्व-कर्नेल ड्राइवर लोड किए गए हैं और बूट पैरामीटर पारित हो गए हैं।

कमांड लाइन से ऐसा करने के कारण:

  • grubमेनू देखने के लिए रिबूट करने में समय लगता है।
  • grubमेनू की एक तस्वीर लेना और वेबसाइटों पर छवि पोस्ट करना अजीब है । जब उबंटू उठ रहा है और चल रहा है तो स्क्रीन शॉट को पकड़ना आसान है।
  • करने के लिए editसाथ grub मेनू विकल्प eऔर ले एक तस्वीर अक्सर मुश्किल होता है क्योंकि स्क्रीन को पढ़ने के लिए कठिन है। इस फ़ंक्शन के साथ आप इसके बजाय कॉपी और पेस्ट कर सकते हैं।
  • यह बजाय सभी कर्नेल संस्करणों प्रकट करने के लिए इस समारोह का उपयोग कर आसान हो सकता है apt list --installed | grep linux-imageया ls /boot/vml*
  • जल्दी से देखने के लिए ग्रब मेनू संख्या grub-rebootऔर grub-set-defaultआदेशों के लिए मूल्यवान है ।

मैं कमांड लाइन से ग्रब मेनू कैसे पेंट कर सकता हूं, आंतरिक ग्रब मेनू एंट्री नंबर देख सकता हूं और दिए गए विकल्प के लिए बूट पैरामीटर प्रदर्शित कर सकता हूं?

जवाबों:


12

अपडेट किया गया 7 मई 2018

स्क्रिप्ट का विकास करना: 18.04 एलटीएस अपग्रेड के परीक्षण के लिए उबंटू को नए विभाजन में क्लोन करने के लिए बैश स्क्रिप्ट मैंने पाया कि आपको कुछ हास्यास्पद लंबे मेनू विकल्प मिलते हैं जो मेनू को खराब करने का कारण बनते हैं:

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

यह आज 68 वर्णों से अधिक लंबी लाइनों को काटकर तय किया गया था।

अपडेट किया गया 5 अप्रैल 2018

यह अपडेट grub-menu.shपिछले उत्तर (अभी भी नीचे उपलब्ध) के लिए बहुत बेहतर संस्करण पेश करता है। नई ग्रब मेनू सुविधाएँ:

  • ग्रब 2 मेनू प्रविष्टि संख्या प्रदर्शित करता है। यानी 0, 1, 1>0, 1>1... 2,3
  • बिना (upstart)और (recover mode)सबमेनू विकल्पों के डिफ़ॉल्ट लघु संस्करण सेट किया जा सकता है।
  • पैरामीटर 1 को डिफ़ॉल्ट के रूप में shortया longओवरराइड करने के लिए पारित किया जा सकता है ।
  • कॉलम हेडिंग को गतिशील रूप से shortया longसेटिंग के आधार पर स्वरूपित किया जाता है ।

कलर स्क्रीन शॉट (लघु संस्करण)

grub-menu.sh

पाठ स्क्रीन शॉट (लंबा संस्करण)

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 बैश स्क्रिप्ट

पिछले संस्करणों grub-display.shऔर grub-display-lite.shकोड में कई ट्विकिंग विकल्पों की आवश्यकता थी। grub-menu.shकेवल एक विकल्प ट्विक करने का है:

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

करने के लिए मान सेट करें trueया false

स्क्रिप्ट का उपयोग करते समय डिफ़ॉल्ट प्रारूप को ओवरराइड किया जा सकता है:

grub-menu.sh short

या:

grub-menu.sh long

कोड:

#!/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

पिछले संस्करण (अनुशंसित नहीं)

नीचे मूल उत्तर है जहां मेनू प्रविष्टि संख्या 1 ग्रब का अनुसरण करती है।

grub-display.sh ग्रब मेनू विकल्प और पैरामीटर प्रदर्शित करता है

तीसरे पक्ष के अनुप्रयोगों पर भरोसा किए बिना आप grubकिसी भी विकल्प के लिए मेनू और बूट मापदंडों को प्रदर्शित करने के लिए एक बैश स्क्रिप्ट का उपयोग कर सकते हैं । बूट पैरामीटर केवल cat /proc/cmdlineमानों से अधिक हैं। इनमें लिनक्स के बूट होने से पहले लोड किए गए ड्राइवर भी शामिल हैं।

grub-display.sh बैश स्क्रिप्ट

यहां पूरा कार्यक्रम सूचीबद्ध है जिसे आप कॉपी और पेस्ट कर सकते हैं:

#!/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

उबंटू सर्वर उपयोगकर्ताओं पर ध्यान दें

यह बैश स्क्रिप्ट उबंटू डेस्कटॉप के लिए डिजाइन की गई थी। उबंटू सर्वर और अन्य लिनक्स डिस्ट्रोस के लिए जो dialogडिफ़ॉल्ट रूप से स्थापित नहीं होते हैं , एक अलग स्क्रिप्ट जिसे grub-display-lite.shनीचे शामिल किया गया है। whiptailइसके बजाय संस्करण का उपयोग करता है dialog

मेनू का आकार 66% तक कम करना

प्रदर्शित मेनू विकल्प विकल्प को छोटा करने के लिए आप विकल्पों (upstart)और (recovery)विकल्पों को हटा सकते हैं। इन पंक्तियों को करने के लिए:

# 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

स्क्रीनशॉट

यहां यह दिखाया गया है कि कमांड लाइन से आह्वान करने पर यह कैसा दिखता है। दुर्भाग्य से मैं मेनू को कॉपी और पेस्ट करने में सक्षम नहीं था और इसका उपयोग करना था Print Screen:

कोड़ना display.sh.png

कॉपी और पेस्ट के लिए माउस समर्थन बंद करें

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

जब डिफ़ॉल्ट माउस समर्थन सक्षम होता है, तो आप स्क्रीन को क्लिपबोर्ड पर कॉपी नहीं कर सकते, लेकिन Print Screenएक ग्राफिकल स्क्रीन स्नैपशॉट के लिए उपयोग करना चाहिए । कॉपी और पेस्ट का समर्थन करने के लिए आपको इन पंक्तियों की खोज करके अक्षम माउस समर्थन की आवश्यकता है:

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

तर्क --no-mouseनीचे डाला गया है --default-item। इसका मतलब है कि आप माउस समर्थन को ढीला करते हैं लेकिन बेहतर रिज़ॉल्यूशन प्राप्त करते हैं और टेक्स्ट और हाइलाइटिंग Ctrl+ दबाकर क्लिपबोर्ड की क्षमता की नकल करते हैं C

ग्रब बूट पैरामीटर प्रदर्शित करें

एक विकल्प को उजागर करने के लिए नेविगेशन कुंजी का उपयोग करें और Enterइसके लिए बूट पैरामीटर देखने के लिए दबाएं :

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

ग्रब मेनू प्रविष्टि # 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

ग्रब मेनू प्रविष्टि # 96

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

grub-display-lite.sh Ubuntu सर्वर के लिए

उबंटू dialogडेस्कटॉप के पास उबंटू सर्वर और लुबंटू डिफ़ॉल्ट रूप से स्थापित नहीं है। इन उपयोगकर्ताओं के लिए whiptailपैकेज के आधार पर एक अलग संस्करण लिखा गया है, जो कि अधिकांश लिनक्स वितरण पर डिफ़ॉल्ट रूप से शामिल है।

इसका नुकसान whiptailकम कार्य है, लेकिन वे इस मामले में उपयोग नहीं किए जाते हैं। एक और नुकसान कम रंग प्रतीत होता है लेकिन यह कुछ लोगों के लिए पढ़ना आसान बना सकता है। वहाँ के लिए फायदे हैं whiptailसे अधिक dialogऐसे क्लिपबोर्ड में कॉपी, माउस स्क्रॉल व्हील समर्थन और शायद तेजी के रूप में प्रसंस्करण।

grub-display-lite.sh बैश स्क्रिप्ट

#!/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.shबैश स्क्रिप्ट मूलतः एक ही रूप में है grub-display.shको छोड़कर कोई त्रुटि संदेश है अगर dialogस्थापित नहीं है। साथ ही कुछ whiptailतर्कों के अलग-अलग नाम हैं।

grub-display-lite.sh स्क्रीनशॉट

रंगीन स्क्रीन पढ़ने में आसान लगती है grub-displayजिससे dialogपैकेज का उपयोग होता है:

grub-display-lite.sh

यहाँ पाठ आधारित छवि है जिसे क्लिपबोर्ड पर कॉपी करने के लिए कोई संशोधन की आवश्यकता नहीं है:

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

जैसा कि ऊपर उल्लेख किया गया है आप हटाने (upstart)और (recovery)मेनू विकल्पों के दौरान यहां दिखाए गए ग्रब मेनू का आकार 66% तक कम कर सकते हैं। यहाँ ऐसा ही है, लेकिन इसके परिणामस्वरूप विस्तार रेखाएँ संकरी हो जाती हैं और हेडिंग पूरी तरह से नहीं खिंचती हैं। आप इस पंक्ति को बदलकर कॉलम हेडिंग को ट्विक कर सकते हैं:

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

कुछ इस तरह से:

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

वर्तमान जानकारी को देखने के लिए उपयोग करें cat /proc/cmdline। विकल्पों को देखने के लिए अगली बार जब आप ग्रब मेनू का उपयोग अपडेट करेंगे तो ग्रब उपयोग करेगा grep GRUB_CMDLINE_LINUX /etc/default/grub। उन सेटिंग्स का दूसरा सेट उपयुक्त या जब भी update-grubचलाया जाएगा। बस less /boot/grub/grub.cfgया समान सभी विकल्पों को देखने के लिए ।
पैंथर

@Panther मैंने अधिक उपयोगिता दिखाने के लिए ग्रब मेनू प्रविष्टियाँ # 94 और # 96 (मेरे सिस्टम से) जोड़ीं। विचार करने के लिए दूसरी बात यह है कि याद रखने की तुलना में catऔर grepहम में से अधिकांश के लिए मेनू का उपयोग करना आसान है।
WinEunuuchs2Unix

+1। मैं सहमत हूं कि पाठ मोड मेनू का उपयोग dialogसहायक हो सकता है।
सुडोडुस

अच्छी तरह से इस भयानक anwser के लिए एक फुटनोट ubuntu के कुछ स्वादों में शामिल नहीं है डायलॉग lubuntu 16.04 डिफ़ॉल्ट रूप से नहीं है।
.ऑनोरलिन

@ianorlin एक बेहतर संस्करण अभी पोस्ट किया गया है।
विनयुनुच्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.