GRUB'a, yeniden başlatmadan önce Windows'u yeniden başlatmak istediğimi nasıl söyleyebilirim?


33

Bir çift önyükleme Linux / windows sistemi kurdum ve sık sık birinden diğerine geçiyorum. GRUB isteminde durmadan doğrudan pencerelere yeniden başlatmak için menülerden birine bir menü öğesi ekleyebilir miyim diye düşünüyordum.

Bu soruyu bir forumda gördüm , tam olarak istediğim bu ama benim durumum değil, lilo ile ilgili.

GRUB menüsündeki varsayılan girişi değiştiren ve ardından yeniden başlatılan bir çözüm düşündüm, ancak bazı dezavantajlar var ve daha temiz bir alternatif olup olmadığını merak ediyordum.

(Ayrıca, Windows’tan doğrudan Linux’a önyükleme yapmak için bir çözüme ilgi duyacağım, ancak bu daha zor olabilir ve buraya ait olmayabilir. varsayılan.

GÜNCELLEME Birinin istedi görünüyor benzer bir soru ve bu önerilen cevaplar, ben de düzenleme olabilir /boot/grub/grubenvolarak grub-rebootve grub-set-defaultve grub-editenvyapmak. )

Herhangi bir ipucu için şimdiden teşekkür ederim.

GÜNCELLEME :

Bu benim GRUB versiyonum: (GRUB) 1.99-12ubuntu5-1linuxmint1

Koşmayı denedim grubonce, komut bulunamadı. Ve depolarda araştırmak bana hiçbir şey vermez. Ben Linux Nane'deyim, o yüzden olabilir ...

Görme man grub-reboot, o kadar, o ne istediğiniz gibi görünüyor grubonceyapar. Aynı zamanda her yerde mevcut (en azından benim için, grub grubunun bir parçası olduğunu düşünüyorum). İlgili iki komut gördüm: grub-editenvve grub-set-default.

Çalıştırdıktan sonra sudo grub-set-default 4, çalıştırırken grub-editenv listsize benzer bir şey bulduğunuzu öğrendim :

saved_entry=4

Ve koşarken grub-reboot 4, şöyle bir şey elde edersiniz:

prev_saved_entry=0
saved_entry=4

Yani her ikisi de aynı şeyi yapar (biri geçicidir, biri değildir).

Şaşırtıcı bir şekilde, denediğimde:

sudo grub-reboot 4
sudo reboot now

İşe yaramadı, sanki hiçbir şey yapmamıştım, bana her zamanki gibi menüyü gösterdi ve ilk girişi seçti, bu girişi 10'larda başlatacağını söyledi.

Tekrar denedim, yanlış girişi yazmış olabileceğimi düşündüm (sıfır tabanlı, değil mi?). O zaman, sadece menü ekranında asılı ve önyükleme yapabilmek için PC'yi sıfırlamak zorunda kaldım.

Herhangi biri bunu deneyebilirse, sadece benim olup olmadığına bakmak için minnettar olurum. (nane bana zor zamanlar veriyordu ve bu değişmek için iyi bir fırsat olurdu: P).

Kodu okumak, /boot/grub/grub.cfgyol böyle görünüyor, ama gözlemlerime göre, bu ayarları görmezden geliyor ...


Hangi dağıtımdasın? Galiba Debian'ım üzerinde çalışıyorum.
jw013

Yanıtlar:


20

grub-rebootKomutun çalışması için gerekli birkaç yapılandırma değişikliği yapılmalıdır:

  • Grub için varsayılan giriş olarak ayarlanmalıdır saved. Bunun için olası bir yer, içindeki GRUB_DEFAULT=çizgidir./etc/default/grub
  • Kullanım grub-set-defaultnormalde kullandığınız için varsayılan girişini ayarlamak için.
  • Grub ayarlarınızı güncelleyin (örn. update-grub).

Bu ilk kurulum ile ilgilenmelidir. Gelecekte, sadece grub-reboot <entry>bir kerelik önyükleme için yapın <entry>.


Ben "grub için varsayılan giriş olarak ayarlanması gerekir ur kelimeleri görmek savedbenim tutma ederken," GRUB_DEFAULT=0ayrıca yeterliydi. Yani savedgereksiz mi?
zhangxaochen

Herkesin bu özelliğin ne kadar havalı olduğunu fark edip etmediğine emin değilim, r76464'i rhel64 ile başlatmayı planlıyorum ve bunun tersi de, rhel'i zfs raidz2'ye iten başka bir kazan ağı sistemli yedekleme görevi için otomatik hale getirilirken. Ardından yedeklemede, grubbed oto sistemi haftanın geri kalanında bir windows gamer iis server oyun alanına geri döner, durulanır ve tekrarlanır. Bir şekil değiştirici. :-)
Brian Thomas

Grubun yeniden başlatılmasının sessizce başarısız olduğunu ve başarılı bir geri dönüş kodu verdiğini fark etmem yıllar aldı. Umarım önerdiğim düzenleme tamamdır. :-)
Hiç kimse

23
  1. / Etc / default / grub'u GRUB_DEFAULT=0düzenleyin ve ile değiştirinGRUB_DEFAULT=saved
  2. sudo update-grub
  3. emriniz:

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

~ / .bashrc dosyasındaki güzel bir işlev

# ******************************************************************
# 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 dosyanız Windows için birden fazla satır içeriyorsa, aşağıdaki işlevler yalnızca menuentryWindows'a atıfta bulunan ve yalnızca birinciyi seçen satırları dikkate alır :

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
}

Dosyam /boot/grub/grub.cfgdaha İçinde "Windows'un" ile çizgiler, çoğu gibi bir şey belirten içeren ...=1 i915.semaphores=1 acpi_osi='!Windows 2012' $vt...senin kod üzerinde başarısız olacağını varsayıyorum böylece. Bunun için grepping ile düzeltilebilir ^menuentry 'Windows.
Jan Vlcinsky

Bu doğru cevap olarak işaretlenmelidir.
Taha Rehman Siddiqui

İşlev düşündüğümden daha faydalı.
Carson Ip,

2

Bunu yapmanın süper kolay bir yolu GRUB Reboot GNOME Shell Extension ile (yani, eğer GNOME kullanıyorsanız).

Uzantıyı kullanmak için, yukarıda bağlantı verilen siteye gidin ve sağ üst köşedeki küçük düğmeyi tıklayın (muhtemelen sayfaya ilk gittiğinizde Kapalı olduğu söylenir). Uzantıyı indirmek ve yüklemek istediğinizi onaylamanız istenir.

Kurulduktan sonra, Sistem menünüzü açabilir ve yeniden başlatmanız için yaptığınız gibi güç düğmesine basabilirsiniz. Açılan pencerenin, kapanmak veya yeniden başlatmak istediğinizi onaylayan bir pencerede, "Yeniden Başlat ..." etiketli bir düğme var. Bu düğmeyi tıklattığınızda, grub menünüzdeki öğeler listede görünür, böylece yeniden başlattıktan sonra hangi işletim sisteminin otomatik olarak başlatılacağını seçebilirsiniz. Bu öğelerden birini seçerseniz, sisteminiz kapanır ve seçtiğiniz grub seçeneklerini kullanarak yeniden başlatılır.


1
Gönderimi, uzantı yükleme ve kullanma ayrıntılarını içerecek şekilde düzenledim.
Dylan Smith,

1

Bir gruboncesonraki yeniden başlatmada kullanılacak grub girişini ayarlayan, tam olarak ihtiyacınız olanı yapan adlı bir betiği olan openSUSE'yi kullanıyorum .

# 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

Hangi (varsa) diğer dağıtımların bu komut dosyasını gönderdiğini bilmiyorum, bu nedenle dağıtımınız buna sahip değilse, bu sayfayı kontrol edebilirsiniz:

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


Aslında grubun ve güvenilenlerin bir parçası (her ne ise) ve grub2 DEĞİLDİR, bu yüzden tumbleweed haziran 2019 üzerine kurulmadım
redanimalwar

1

grub-set-defaultdaha uygun görünüyor ( grubonceUbuntu 'ayette listelenmiyor). Ayrıca, son kapanışta güncellemeler uygulandıysa, Windows 7 başlatma sırasında yeniden başlatma alışkanlığı olduğundan daha yararlı olabilir (yani başlangıç ​​başlar, bazı güncelleme verilerini işler, yeniden başlatır ve ardından giriş sayfasını görüntüler).
Windows 7'yi yalnızca geri gelip çalışan Ubuntu'yu bulmak için başlattım.


1
Windows güncellemesini kapattım, bu yüzden sorun olmamalı: D, bunu deneyeceğim. Gördüğüm kadarıyla, aynı şeyi yapıyor gibi görünüyor grub-reboot. Sorumu daha ayrıntılı olarak düzenliyorum. Yine de teşekkürler.
jadkik94

1

Fedora'da aşağıdaki betiği kullanabilirsiniz. Bunun çoğunlukla, Fedora'daki GRUB 2 için birkaç değişiklikle, https://askubuntu.com/a/18186/149422 sayılı belgede açıklananlarla aynı olduğunu unutmayın .

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

Ben Ubuntu 16.04 kullanıyorum ve yukarıdaki çözümler benim için iş vermedi ... nedense sudo grub-reboot 2güncellemek gibiydi asla /boot/grub/grubenvbile değiştirdikten sonra, dosyayı GRUB_DEFAULT=0için GRUB_DEFAULT=savedhem de /etc/default/grubve /boot/grub/menu.lst. Kullanmaksavedefault --default=2 --onceGrubdaki komutu da işe yaramadı ya da grubenv dosyasını değiştirmedi. Hiçbir şey yapmamış gibi orijinal grub menüsüne geri dönmeye devam etti.

Bu yüzden elle yapmayı bıraktım ve çalışıyordu (RAID sürücüleri ile nasıl çalışacağından emin değilim).

sudo grub-editenv - set next_entry=2
reboot

2, grub başlangıç ​​menüsündeki Windows girişi için sıfır tabanlı menü girişi konumu.

Bunun neden işe yaradığını, /boot/grub/grub.cfgdosyaya bakarak , next_entry değerini kullandığından ve ardından bir sonraki önyükleme için sıfırladığını görebilirsiniz.


0

@ Jw013 ile aynı fikirde. Ayrıca menü döşemesini grubun yeniden başlatılmasına da (ana menünün adı dahil) verebilirsiniz. Örneğin:

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

"Ubuntu için gelişmiş seçenekler" ana menü iken, "Ubuntu, Linux 4.13.0-26-jeneric" alt menüsüdür.


0

Makineyi belirli bir önyükleme hedefine yeniden başlatın (Grub girişi).
Önyükleme hedefi etkileşimli olarak fzf ile seçilir.

# 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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.