मैं रिबूट करने से पहले कैसे बता सकता हूं कि मैं विंडोज में रिबूट करना चाहता हूं?


33

मेरे पास एक दोहरी बूट लिनक्स / विंडोज सिस्टम सेट है, और अक्सर एक से दूसरे में स्विच होता है। मैं सोच रहा था कि क्या मैं मेनू में से एक में मेनू आइटम जोड़ सकता हूं, सीधे विंडोज़ में रिबूट करने के लिए, बिना GRUB प्रॉम्प्ट पर।

मैंने एक मंच पर इस प्रश्न को देखा , ठीक यही मैं चाहता हूं लेकिन यह लिलो के साथ काम कर रहा है, जो मेरा मामला नहीं है।

मैंने एक समाधान के बारे में सोचा जो GRUB मेनू में डिफ़ॉल्ट प्रविष्टि को संशोधित करेगा और फिर रिबूट करेगा, लेकिन कुछ कमियां हैं, और मैं सोच रहा था कि क्या कोई क्लीनर विकल्प था।

(इसके अलावा, मैं विंडोज से सीधे लिनक्स में बूट करने के लिए एक समाधान में रुचि रखता हूं, लेकिन यह कठिन हो सकता है, और यहां से संबंधित नहीं है। वैसे भी, जब तक मेरे पास एक तरह से है, तब तक दूसरे तरीके को सेट किया जा सकता है। डिफ़ॉल्ट।

अद्यतन यह कोई पूछा लगता है एक ऐसी ही सवाल है, और अगर उन सुझाव दिया जवाब हैं, मैं भी संपादित कर सकते हैं /boot/grub/grubenvके रूप में grub-rebootऔर grub-set-defaultऔर grub-editenvकरते हैं। )

किसी भी सुझाव के लिए अग्रिम में धन्यवाद।

अद्यतन :

यह मेरा GRUB संस्करण है: (GRUB) 1.99-12ubuntu5-1linuxmint1

मैंने दौड़ने की कोशिश की grubonce, कमान नहीं मिली। और रिपॉजिटरी में इसे खोजना मुझे कुछ नहीं देता है। मैं लिनक्स मिंट पर हूं, ताकि यह हो सके ...

देखकर man grub-reboot, ऐसा लगता है जैसे यह वही करता है जो मैं चाहता हूं, जैसा grubonceवह करता है। यह हर जगह भी उपलब्ध है (कम से कम यह मेरे लिए है, मुझे लगता है कि यह ग्रब पैकेज का हिस्सा है)। मैंने दो संबंधित आदेश देखे: grub-editenvऔर grub-set-default

मुझे पता चला कि दौड़ने के बाद sudo grub-set-default 4, जब grub-editenv listआप दौड़ते हैं तो आपको कुछ समान मिलता है:

saved_entry=4

और दौड़ते समय grub-reboot 4, आपको कुछ ऐसा मिलता है:

prev_saved_entry=0
saved_entry=4

जिसका अर्थ है कि दोनों एक ही काम करते हैं (एक अस्थायी एक नहीं है)।

हैरानी की बात है, जब मैंने कोशिश की:

sudo grub-reboot 4
sudo reboot now

यह काम नहीं करता था, जैसे कि मैंने कुछ भी नहीं किया था, इसने मुझे हमेशा की तरह मेनू दिखाया और पहली प्रविष्टि का चयन करते हुए कहा कि यह इस प्रविष्टि को 10 के दशक में बूट करेगा।

मैंने इसे फिर से आज़माया, मुझे लगा कि मैंने गलत प्रविष्टि लिखी होगी (यह शून्य-आधारित है, ठीक है?)। उस समय, यह सिर्फ मेनू स्क्रीन पर लटका हुआ था, और मुझे बूट करने में सक्षम होने के लिए पीसी को हार्ड-रीसेट करना पड़ा।

अगर कोई इसे आज़मा सकता है, तो यह देखने के लिए कि क्या यह सिर्फ मेरे लिए है, मैं इसकी सराहना करूँगा। (टकसाल मुझे एक कठिन समय दे रहा है, और यह एक अच्छा अवसर होगा: पी)।

कोड को पढ़ना /boot/grub/grub.cfg, ऐसा लगता है कि यह जाने का तरीका है, लेकिन मेरी टिप्पणियों से, यह इन सेटिंग्स को अनदेखा कर रहा है ...


तुम किस डिस्ट्रो पर हो? मुझे लगता है कि मैं इसे अपने डेबियन पर काम कर रहा हूं।
jw013

जवाबों:


20

के लिए आदेश में grub-rebootकाम करने के लिए आदेश, कई आवश्यक विन्यास बदलाव जगह पर होना चाहिए:

  • ग्रब के लिए डिफ़ॉल्ट प्रविष्टि सेट होनी चाहिए saved। इसके लिए एक संभावित स्थान GRUB_DEFAULT=रेखा है/etc/default/grub
  • grub-set-defaultसामान्य रूप से आपके द्वारा उपयोग की जाने वाली डिफ़ॉल्ट प्रविष्टि को सेट करने के लिए उपयोग करें।
  • अपने grub config (जैसे update-grub) को अपडेट करें ।

यह प्रारंभिक सेट-अप का ध्यान रखना चाहिए। भविष्य में, बस grub-reboot <entry>एक बार के बूट के लिए करें <entry>


मुझे लगता है कि उर शब्द "ग्रब के लिए डिफ़ॉल्ट प्रविष्टि सेट किया जाना चाहिए saved", जबकि मेरे रखने GRUB_DEFAULT=0भी पर्याप्त है। तो savedअनावश्यक है?
झांगक्साओचेन

मुझे यकीन नहीं है कि अगर सभी को पता है कि यह सुविधा वास्तव में कितनी अच्छी है, तो मैं r764 के साथ win7ult64 को बूट करने की योजना बना रहा हूं, और इसके विपरीत, जब तक कि rhel एक और जीत नेटवर्क सिस्टम शेड्यूल किए गए बैकअप कार्य के लिए ऑटो उपलब्ध नहीं हो जाता है, जो कि rasp z2 raidz2 को धक्का देता है। फिर बैकअप पूरा होने पर, ग्रबेड सिस्टम ऑटो बूट सप्ताह के बाकी हिस्सों के लिए एक विंडोज़ गेमर आईस सर्वर खेल के मैदान में वापस जाता है, कुल्ला और दोहराएं। इसकी आकृति शिफ्टर है। :-)
ब्रायन थॉमस

मुझे यह देखने में उम्र लग गई कि ग्रब-रिबूट चुपचाप विफल रहता है, एक सफलता रिटर्न कोड देता है। मुझे आशा है कि मेरा सुझाया हुआ संपादन ठीक है। :-)
कोई भी

23
  1. / Etc / default / grub संपादित करें और GRUB_DEFAULT=0साथ बदलेंGRUB_DEFAULT=saved
  2. sudo update-grub
  3. आपकी आज्ञा होगी:

    sudo grub-reboot "$(grep -i 'windows' /boot/grub/grub.cfg|cut -d"'" -f2)" && sudo reboot
    

अपने ~ / .bashrc में एक सुंदर समारोह की तरह दिखेगा

# ******************************************************************
# reboot directly to windows 
#   Inspired by http://askubuntu.com/questions/18170/how-to-reboot-into-windows-from-ubuntu
# ******************************************************************
function my_reboot_to_windows {
    WINDOWS_TITLE=`grep -i 'windows' /boot/grub/grub.cfg|cut -d"'" -f2`
    sudo grub-reboot "$WINDOWS_TITLE"
    sudo reboot
}

मामले में, आपके grub.conf में विंडोज के लिए कई लाइनें हैं, निम्नलिखित कार्यों में केवल menuentryपहले से शुरू होने वाली लाइनों के बारे में ध्यान रखना होगा और विंडोज का जिक्र करना होगा:

function my_reboot_to_windows {
    WINDOWS_TITLE=`grep -i "^menuentry 'Windows" /boot/grub/grub.cfg|head -n 1|cut -d"'" -f2`
    sudo grub-reboot "$WINDOWS_TITLE"
    sudo reboot
}

मेरी फ़ाइल /boot/grub/grub.cfgमें "विंडोज" के साथ अधिक लाइनें हैं, उनमें से कई कुछ ऐसा बताते हैं ...=1 i915.semaphores=1 acpi_osi='!Windows 2012' $vt..., इसलिए मुझे लगता है कि आपका कोड इस पर विफल होगा। इसके लिए grepping करके इसे ठीक किया जा सकता है ^menuentry 'Windows
Jan Vlcinsky

इसे सही उत्तर के रूप में चिह्नित किया जाना चाहिए।
ताहा रहमान सिद्दीकी

फंक्शन मेरे विचार से ज्यादा मददगार है।
कार्सन आईपी

2

यह करने के लिए एक सुपर आसान तरीका है GRUB रिबूट GNOME शेल एक्सटेंशन (यदि आप GNOME का उपयोग कर रहे हैं)।

एक्सटेंशन का उपयोग करने के लिए, ऊपर दी गई साइट पर जाएं, और ऊपरी दाएं कोने में थोड़ा टॉगल क्लिक करें (यह संभवतः तब कहता है जब आप पृष्ठ पर पहली बार नेविगेट करते हैं)। आपको यह पुष्टि करने के लिए कहा जाएगा कि आप एक्सटेंशन को डाउनलोड और इंस्टॉल करना चाहते हैं।

एक बार यह स्थापित हो जाने के बाद, आप अपना सिस्टम मेनू खोल सकते हैं और पावर बटन पर क्लिक कर सकते हैं जैसा कि आप आमतौर पर पुनरारंभ के लिए करते हैं। वह विंडो जो यह पुष्टि करती है कि अब आप शटडाउन या रिस्टार्ट करना चाहेंगे, जिसमें "रिस्टार्ट टू ..." नामक एक बटन है। जब आप उस बटन पर क्लिक करते हैं, तो आपके ग्रब मेनू के आइटम सूची में दिखाई देते हैं ताकि आप यह चुन सकें कि कौन सा ओएस पुनः आरंभ करने के बाद स्वचालित रूप से लॉन्च हो सकता है। यदि आप उन वस्तुओं में से एक का चयन करते हैं, तो आपका सिस्टम बंद हो जाएगा और आपके चयनित ग्रब विकल्पों का उपयोग करके पुनः आरंभ करेगा।


1
मैंने अपनी पोस्ट को एडिट करने के लिए और एक्सटेंशन का उपयोग करने के लिए शामिल किया।
डायलन स्मिथ

1

मैं OpenSUSE का उपयोग करता हूं जो कि एक स्क्रिप्ट के साथ आता है जिसे कहा जाता है grubonce, जो आपको आवश्यक है - अगले रिबूट पर उपयोग किए जाने के लिए ग्रब प्रविष्टि सेट करें।

# grubonce
0: Trace -- openSUSE 12.1 - 3.1.10-1.16
1: Debug -- openSUSE 12.1 - 3.1.10-1.16
2: Desktop -- openSUSE 12.1 - 3.1.10-1.16
3: Failsafe -- openSUSE 12.1 - 3.1.10-1.16

# grubonce 0
Using entry #0: Trace -- openSUSE 12.1 - 3.1.10-1.16

# grubonce 2
Using entry #2: Desktop -- openSUSE 12.1 - 3.1.10-1.16

मुझे नहीं पता कि कौन सा (यदि कोई है) अन्य वितरण इस स्क्रिप्ट को जहाज करते हैं, इसलिए यदि आपके डिस्ट्रो में यह नहीं है, तो आप इस पृष्ठ की जांच कर सकते हैं:

http://sidvind.com/wiki/GRUB:_Boot_another_OS_once


इसका वास्तव में ग्रब और विश्वसनीय ग्रब (जो कुछ भी है) का हिस्सा है और ग्रब 2 नहीं है, इसलिए मेरे पास यह नहीं है कि मैंने इसे
टबल्यूड

1

grub-set-defaultअधिक उपलब्ध लगता है ( grubonceUbuntu 'कविता में सूचीबद्ध नहीं है)। यह अधिक उपयोगी भी हो सकता है क्योंकि विंडोज 7 में स्टार्टअप के दौरान रिबूट प्रदर्शन करने की आदत है यदि अपडेट अंतिम शटडाउन पर लागू किए गए थे (यानी यह स्टार्टअप शुरू करता है, कुछ अपडेट डेटा को संसाधित करता है, रिबूट करता है, और फिर लॉगिन पृष्ठ प्रदर्शित करता है)।
मैंने अक्सर विंडोज 7 को केवल वापस आने और उबंटू चलाने के लिए शुरू किया है।


1
मैंने विंडोज अपडेट को बंद कर दिया, ताकि कोई समस्या न हो: डी, ​​मैं यह कोशिश करूँगा। मैंने जो देखा, उससे ऐसा लगता है जैसे यह वही काम करता है grub-reboot। मैं अपने प्रश्न को अधिक विस्तार से संपादित कर रहा हूं। फिर भी धन्यवाद।
jadkik94

1

फेडोरा में, आप निम्न स्क्रिप्ट का उपयोग कर सकते हैं। ध्यान दें कि यह ज्यादातर वैसा ही है जैसा कि https://askubuntu.com/a/18186/149422 में वर्णित है , फेडोरा में GRUB 2 के लिए कुछ संशोधनों के साथ ।

#!/bin/bash
if [ `readlink /boot/grub2/grubenv` == "/boot/efi/EFI/fedora/grubenv" ]; then
    sudo mv /boot/grub2/grubenv /boot/grub2/grubenv-original
    sudo ln -s ../efi/EFI/fedora/grubenv /boot/grub2/grubenv
fi
MENU_ENTRY=`grep ^menuentry /boot/grub2/grub.cfg  | grep --line-number Windows`
MENU_NUMBER=$(( `echo $MENU_ENTRY | sed -e "s/:.*//"` - 1 ))
sudo grub2-reboot $MENU_NUMBER
sudo reboot

1

मैं उबंटू 16.04 का उपयोग कर रहा है और इसके बाद के संस्करण समाधान मेरे लिए काम नहीं किया था ... अगर किसी कारण से sudo grub-reboot 2अद्यतन करने के लिए लग रहा था कभी नहीं /boot/grub/grubenvफ़ाइल, बदलने के बाद भी GRUB_DEFAULT=0करने के लिए GRUB_DEFAULT=savedदोनों में /etc/default/grubऔर /boot/grub/menu.lstsavedefault --default=2 --onceग्रब में कमांड का उपयोग करना भी काम नहीं करता था और न ही ग्रुबनेव फाइल को बदलने के लिए। यह बस मूल ग्रुब मेनू पर वापस आता रहा जैसे कि कुछ भी नहीं किया गया हो।

इसलिए मैंने इसे मैन्युअल रूप से करना समाप्त कर दिया है और यह काम कर रहा है (यह सुनिश्चित नहीं है कि यह RAID ड्राइव के साथ कैसे काम करेगा, हालांकि)।

sudo grub-editenv - set next_entry=2
reboot

जहां ग्रब स्टार्ट-अप मेनू में विंडोज प्रविष्टि के लिए 2 शून्य-आधारित मेनू प्रविष्टि स्थान है।

आप देख सकते हैं कि यह /boot/grub/grub.cfgफ़ाइल को देखकर क्यों काम करता है , क्योंकि यह next_entry मान का उपयोग करता है और फिर इसे अगले बूट के लिए रीसेट करता है।


0

@ Jw013 से सहमत हैं। और आप मेनू टाइल को ग्रब-रिबूट (मूल मेनू के शीर्षक सहित) भी दे सकते हैं। उदाहरण के लिए:

$ sudo grub-reboot "Advanced options for Ubuntu>Ubuntu, with Linux 4.13.0-26-generic"
$ sudo reboot

जहां "उबंटू के लिए उन्नत विकल्प" मूल मेनू है, "उबंटू, लिनक्स 4.13.0-26-जेनेरिक के साथ" सबमेनू है।


0

मशीन को एक विशिष्ट बूट लक्ष्य (ग्रब प्रविष्टि) को रिबूट करें।
बूट लक्ष्य अंतःक्रियात्मक रूप से fzf के साथ चुना गया है।

# Search for grub.cfg
GRUB_CFG=$(find /boot -name grub.cfg 2> /dev/null)

if [[ -z ${GRUB_CFG} ]]; then
  echo "No grub.cfg found under /boot. Try as root."
  exit 1
elif [[ ! -r ${GRUB_CFG} ]]; then
  echo "${GRUB_CFG} is not readable. Try as root."
  exit 1
fi

GRUB_MENUENTRY=$(awk -F\' '/menuentry / {print $2}' ${GRUB_CFG} | fzf)

# Set boot target for next boot
grub2-reboot "${GRUB_MENUENTRY}"

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