“Eski” çekirdeği varsayılan grub girişi olarak ayarlayın


93

Test amacıyla bir ana hat çekirdeği kurdum. Varsayılan olarak eski çekirdekten önyükleme yapacak grub ayarlamak istiyorum.

GRUB_DEFAULT=0Grubun ilk sayfasının ayarını ayarlayabileceğimi biliyorum ama ikinci sayfadaki (Gelişmiş sayfa) varsayılan olarak bir çekirdekten önyüklemeye nasıl ayarlarım?

Bunu başka bir yazılım yüklemeden yapmayı tercih ederim (örn. Grub-customizer).

İlgili Sorular:
Windows'u, önyükleyici içinde önyükleyici olarak varsayılan olarak nasıl ayarlarım?
Grub önyükleme sırasını nasıl değiştiririm?


3
@ belacqua: Bir kopyası değil. Bu soru, grubun ilk seçenek sayfasında varsayılan olarak bulunmayan eski bir çekirdeği ayarlamakla ilgilidir.
Yapılacak

Bu durumda önceki sorulara kaplı olmalıdır gibi yöntem 12.10 için güncelleme, eski çekirdekler, vb olması gerekiyor olsa bile, görünüyor ..
Belacqua

3
Sorunun kullanım durumu farklıdır ve cevap, talep edilen diğer kopyalara uygulanmayan bir şekilde çok spesifiktir. Bu özel sorunu çözmek için buraya geldim; önyükleme sırasını değiştirmemek; ne de Windows'u önyüklemek için. "Bir kopya değil" için +1.
Robie Basak

Yanıtlar:


128

İlk önce bir yedek kopyasını alın /etc/default/grub. Bir şeyler ters giderse, iyi bilinen kopyaya kolayca geri dönebilirsiniz.

sudo cp /etc/default/grub /etc/default/grub.bak

Ardından, seçtiğiniz metin editörünü kullanarak dosyayı düzenleyin (örn. Gedit, vb.).

sudo -H gedit /etc/default/grub

İçerdiği satırı bulun GRUB_DEFAULT- varsayılanı ayarlamak için düzenlemek istediğiniz şey budur. İstediğiniz çekirdeğin tam adını bilmeniz gerekir - örneğin Ubuntu, with Linux 3.13.0-53-generic- "gelişmiş menünün" tam adı ile birlikte - örneğin Advanced options for Ubuntu.

Daha sonra bu iki dizgiyi birleştirin >ve GRUB_DEFAULTbunlara şu şekilde ayarlayın : GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic"(tırnak işaretleri dahil).

Saklayın, ardından güncellenmiş grub menüsünü oluşturun.

sudo update-grub

Ayrıca bakınız: GNU GRUB El Kitabı 2.02 veya daha spesifik olarak varsayılanı ayarlama ile ilgili 15.1.0 .


Not: Çekirdeklere ve menülere erişmek için sayıları kullanan bir yöntem vardır, ancak çekirdek güncelleştirmeleri gerçekleştiğinde güvenilmez olduğundan bu önerilmez.


24
Güncelleme gerçekleştiğinde sayısal bir değer kullanmak sorunlu olabilir. GRUB_DEFAULT = "Önceki Linux sürümleri> 3.2.0-18-jenerik Linux ile Ubuntu,": Bu, yani bir metin varsayılan kullanmak daha iyidir
Bealer

27
sudo grub-mkconfig | lessOlası tüm seçenekleri görmek için kullanabilirsiniz
Nitz

9
Bu iyi bir çözümdür, ama daha da iyi bir açmaktır /boot/grub/grub.cfgve orada tüm göreceksiniz manuentryve tüm submenus. Bunları düzenlerseniz, varsayılan ayarları kolayca ayarlayabilirsiniz, hatta bilgisayarı yeniden başlatırken grub listesindeki seçeneklerin Başlıklarını bile değiştirebilirsiniz.
Aleks

7
/boot/grub/grub.cfgKullanılacak tam adların belirlenmesinde kesinlikle faydalıdır . Ancak bu dosyayı update-grub, paketleri güncelleme dahil olmak üzere otomatik olarak yenileneceği için değiştirmeyin .
Robie Basak

18
GRUB_DEFAULT için biçimlendirme biraz eski (en azından Ubuntu 14.04.2'den beri). Çalıştırıyor update-grubBir uyarıyla karşılaştım: Lütfen Previous Linux versions>Ubuntu, with Linux 3.13.0-53-genericGRUB_DEFAULT için eski bir başlık kullanmayın, kullanın Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic(2.00'den önceki sürümler için) veya gnulinux-advanced-b0ce60c3-184c-453b-af59-419b56a2584f>gnulinux-3.13.0-53-generic-advanced-b0ce60c3-184c-453b-af59-419b56a2584f(2.00 veya üstü için)
Wumms

22

Benim için en iyi çözüm (in /etc/default/grub) ayarlamaktı :

 GRUB_DEFAULT=saved
 GRUB_SAVEDEFAULT=true

Bu ayarlarla en son seçilen değer bir sonraki önyükleme için tutulur. Yeni bir çekirdeğiniz varsa, yapılandırmanızı düzenlemek zorunda değilsiniz.

Tekrar çalıştırmayı unutma sudo update-grub

Çözüm okuyor: info grub-mkconfig


4
Bu harika
Mephisto

;satırların sonundaki noktalı virgül ( ) öğesinden emin misiniz ?!?
DJCrashdummy

Bilgisayarımı şu anda kullandığım yere bakamıyorum, ama haklısın ";" yanlış ya da gereksiz görünüyor!
Martin T.

21

Şimdi AdvancedUbuntu'da bir menü varsayılan olarak, >karakteri kullanmak istediğiniz çekirdeğin önünde seçmeniz gerekir .

Örneğin ayarla:

GRUB_DEFAULT="1>7"

içeri /etc/default/grubve yeniden çalıştırın sudo update-grub.

GRUB menüsü girişleri için numaralandırmanın başladığına dikkat etmek önemlidir 0. Bu nedenle 1yukarıdakiler Advancedmenüye işaret eder . Bir önlem olarak, başlangıçta ayarlamak isteyebilirsiniz GRUB_TIMEOUT=5. Bazıları önyükleme sırasında bir tuşa basarak GRUB’a erişemeyebilir. Yanlışlıkla Memory testbunun gibi bir şeye işaret etmeniz durumunda, bu bir güvenlik ağıdır . Yukarıdaki sayıları tırnak içine almak da gereklidir. Aksi takdirde çalışmayacak.

16.04 LTS'de test ettim.


Debian'da da çalışıyor.
Lawrence D'Oliveiro

Bu cevabı çok yararlı buluyorum, çünkü bir çekirdek güncellemesinden sonra hala en yeni çekirdeğe işaret ediyor. kurulumumda örneğin 1> 0, anlamı: gelişmiş-birinci liste (her zaman en yeni çekirdek). sistemim bazen grubun 0 girdisini en yeni çekirdekli olarak otomatik olarak güncellemek için durdu, bu yüzden bu yöntemi kullanıyorum.
Peter Fleix

9

Hangi önyükleme seçeneğini varsayılan olarak kullanacağınızı ayarlayabilmek için ne olduğunu bilmeniz gerekir ... öyleyse:

Menü girişlerini önyükleme yapmadan görüntülemek için , şöyle bir şey deneyin:

$ lsb_release -s -rdc
Ubuntu 16.04.4 LTS
16.04
Xenial

$ update-grub --version
grub-mkconfig (GRUB) 2.02 ~ beta2-36ubuntu3.17

$ grep -Ei 'submenu | menuentry' /boot/grub/grub.cfg | sed -re "s / (.?) '([^'] +) '. * / \ 1 \ 2 /"
menuentry Ubuntu
submenu Ubuntu için gelişmiş seçenekler
    Linux 4.4.0-34-generic ile menüsel Ubuntu
    Linux 4.4.0-34-generic (başlangıç) ile menuent Ubuntu
    Linux 4.4.0-34-jenerik (kurtarma modu) ile menüsel Ubuntu
menü sistemi Sistem kurulumu

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.