Ubuntu 18.04 पर 0 में GRUB टाइमआउट कैसे सेट करें


11

मैंने अपनी ग्रब कॉन्फिग फ़ाइल को 0 मान टाइमआउट करने के लिए अपडेट करने की कोशिश की, इसलिए ओएस जल्दी से शुरू होता है। मैंने /etc/default/grubअपने Ubuntu 18.04 पर कॉन्फ़िगरेशन फ़ाइल को संशोधित किया और फिर भाग गया:

sudo update-grub

और यह काम नहीं किया। मैं भी भागा:

sudo grub-mkconfig
sudo update-grub

लेकिन उन्होंने काम नहीं किया।

मैंने इस मुद्दे को हल करने के लिए वेब पर बहुत खोज की, लेकिन सभी गाइड्स को /etc/default/grubकॉन्फ़िगर फ़ाइल द्वारा ग्रब अपडेट करने के लिए अपडेट-ग्रब कमांड चलाने के लिए कहते हैं । मुझे नहीं पता कि उबंटू 18.04 है जो ग्रब फ़ाइलों को एक अलग तरीके से संभालता है, लेकिन मैं अपने मापदंडों के साथ अपने ग्रब को अपडेट नहीं कर सकता।

यह मेरी /etc/default/grubफाइल है:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

3
कृपया अपने प्रश्न को संपादित करें और अपनी संशोधित ग्रब कॉन्फिग फ़ाइल शामिल करें। अन्यथा हम केवल यह अनुमान लगाने की कोशिश कर रहे हैं कि आपने क्या किया।
ऑर्गेनिक मार्बल

क्या आपके पास अन्य वितरण स्थापित हैं (दोहरी बूट)?
mook765

इसका मतलब यह नहीं था कि मेरा ग्रब टाइमआउट अभी भी 10 सेकंड के लिए डिफ़ॉल्ट रूप में सेट है @Melebius
Bob91

मेरे पास एक ही ssd में विंडो है और अन्य hdd पर अन्य डिस्ट्रोस स्थापित हैं, लेकिन पिछले महीने मुझे फेडोरा 27 (ubuntu 18 के बजाय) मिला था और जब मैंने ग्रब कॉन्फिग फ़ाइल को बदला तो यह काम किया, इसलिए मुझे लगता है कि अन्य डिस्ट्रोस के कारण नहीं हैं यह व्यवहार @ mook765
Bob91

1
क्या आप कृपया बूट-इन्फो चला सकते हैं और अपने प्रश्न को इसके परिणामी जानकारी लॉग में शामिल करने के लिए संपादित कर सकते हैं? धन्यवाद।
डेविड फ़ॉस्टर

जवाबों:


13

में /boot/grub/grub.cfgफ़ाइल वहाँ लगभग फ़ाइल के अंत में एक शर्त है, कि सेट 10 टाइमआउट अगर समय समाप्ति 0 पर सेट है दूसरे शब्दों में अगर आप अपने में 0 समाप्ति सेट, /etc/default/grubऊपर हालत, और फिर अद्यतन कोड़ना इसे 10 सेकंड के लिए रीसेट करें।

if [ "${timeout}" = 0 ]; then
     set timeout=10
fi

हालाँकि, /boot/grub/grub.cfgकेवल पढ़ने के लिए फ़ाइल है और मैं उस स्थिति को दूर नहीं कर सकता। मैंने टाइमआउट के विभिन्न मूल्यों के साथ कुछ परीक्षण किए /etc/default/grub। मैंने 1ms (0.001), 0.1s और 1s के साथ प्रयास किया और मुझे पता चला कि 1 से नीचे (जैसे 0.1 और 0.001) मान उसी तरह काम करते हैं और लगभग टाइमआउट से 0 तक सेट होते हैं।


work in the same way and almost like timeoutऐसा इसलिए है क्योंकि बैश में गणित केवल पूर्णांकों का समर्थन करता है। सबसे कम समय का अंतर होता है 1
मार्सिन ऑर्लोव्स्की

6

मेरे मामले में, समस्या यह थी कि मेरे सिस्टम ने "रिकॉर्डफ़ेल" का समर्थन नहीं किया था, जिसके कारण एक अलग ब्लॉक grub.cfg में जुड़ गया था, जो 30 सेकंड के टाइमआउट में चूक करता था। में प्रासंगिक कोड /etc/grub.d/00_header:

if [ "$recordfail_broken" = 1 ]; then
  cat << EOF
if lsefi; then
  set timeout=${GRUB_RECORDFAIL_TIMEOUT:-30}
  if [ x\$feature_timeout_style = xy ] ; then
    set timeout_style=menu
  fi
fi
EOF

फिक्स बस के लिए एक मूल्य जोड़ने और फिर से चलाने के लिए GRUB_RECORDFAIL_TIMEOUTहै । उदाहरण के लिए:/etc/default/grubupdate-grub

GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

# Adjusted timeout for system which doesn't support recordfail
GRUB_RECORDFAIL_TIMEOUT=2

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

3

जैसे अन्य उत्तर कहते हैं, असहजता GRUB_HIDDEN_TIMEOUTऔर दौड़ update-grub। तो टिप्पणी करें

if [ "${timeout}" = 0 ]; then
  set timeout=10
fi

में अनुभाग /boot/grub/grub.cfg। Vim में आप केवल विस्मयादिबोधक बिंदु के साथ केवल पढ़ने योग्य संपत्ति को ओवरराइड कर सकते हैं :x!। या आप चला सकते हैं

sudo chmod +w /boot/grub/grub.cfg
sudo vim /boot/grub/grub.cfg
sudo chmod -w /boot/grub/grub.cfg

फ़ाइल को संपादित करते समय अस्थायी रूप से लिखने की अनुमति है।


3
आप सही हैं, लेकिन मुझे लगता है कि हर बार आप ग्रब को अपडेट करते हैं (मैन्युअल रूप से या जब कोई ओएस अपग्रेड होता है) तो /boot/grub/grub.cfgउपरोक्त शर्त के साथ फिर से बनाया जाएगा।
Bob91

2
यह सच है, फ़ाइल अपडेट पर लिखी गई है, जैसा कि मैंने हाल ही में अनुभव किया है।
asantas93

1

आप सेट कर सकते हैं GRUB_TIMEOUTकरने के लिए 0

भाग ओवर राइटिंग टाइमआउट मान ajust_timeoutशीर्ष में फ़ंक्शन में लिखा गया है /etc/grub.d/30_os-prober

ajust_timeout () {
...
if [ "\${timeout}" = 0]; then
  set timeout=10
fi
...
}

तो, आप फ़ाइल को संपादित करके मान सेट कर सकते हैं और अगर-ब्लॉक कर सकते हैं।


1

आप सेट कर सकते हैं GRUB_TIMEOUTकरने के लिए -1

उदाहरण के लिए:GRUB_TIMEOUT="-1"


'GRUB_TIMEOUT' मेनू को प्रदर्शित करने के बाद कई सेकंड में डिफ़ॉल्ट प्रविष्टि को बूट करें, जब तक कि एक कुंजी दबाया न जाए। डिफ़ॉल्ट '5' है। मेनू प्रदर्शित किए बिना तुरंत बूट करने के लिए '0' पर सेट करें, या अनिश्चित काल तक प्रतीक्षा करने के लिए '-1' पर जाएं। कमांड सेinfo -f grub -n 'Simple configuration
विजय


0

हम बस लाइन जोड़ सकते हैं

set timeout=0

करने के लिए /etc/grub.d/40_custom, के साथ फ़ाइल निष्पादन योग्य बनाने के

chmod +x /etc/grub.d/40_custom

और भाग खड़ा हुआ

sudo update-grub

नई /boot/grub/grub.cfg-file उत्पन्न करने के लिए । set timeoutहमने जो -कॉमंड जोड़ा है , वह अब set timeoutमें अंतिम -कम है /boot/grub/grub.cfg, यही मायने रखता है।


-1

समाधान जोड़ना है

GRUB_RECORDFAIL_TIMEOUT=0

को /etc/default/grub

अन्य सभी समाधान ग्रब अपडेट पर रीसेट किए जाएंगे।

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