ตั้งค่าเคอร์เนล“ เก่ากว่า” เป็นรายการด้วงเริ่มต้น


93

ฉันติดตั้งเคอร์เนลฉีดเพื่อวัตถุประสงค์ในการทดสอบ ฉันต้องการตั้งค่าด้วงเพื่อบู๊ตจากเคอร์เนลเก่าโดยค่าเริ่มต้น

ฉันรู้ว่าฉันสามารถตั้งค่าการGRUB_DEFAULT=0ตั้งค่าสำหรับหน้าแรกของด้วง แต่ฉันจะตั้งให้บูตโดยค่าเริ่มต้นจากเคอร์เนลหนึ่งในหน้าสอง (หน้าขั้นสูง) ได้อย่างไร

ฉันต้องการทำสิ่งนี้โดยไม่ต้องติดตั้งซอฟต์แวร์อื่น (เช่น grub-customizer)

คำถามที่เกี่ยวข้อง:
ฉันจะตั้ง Windows ให้บูตเป็นค่าเริ่มต้นในบูตโหลดเดอร์ได้อย่างไร
ฉันจะเปลี่ยนลำดับการบู๊ตด้วงได้อย่างไร


3
@belacqua: มันไม่ซ้ำกัน คำถามนี้เกี่ยวกับการตั้งค่าเคอร์เนลเก่าที่ไม่ปรากฏในหน้าแรกของตัวเลือกของด้วงเป็นค่าเริ่มต้น
ถึงทำ

ดูเหมือนว่ากรณีนี้ควรจะครอบคลุมในคำถามก่อนหน้านี้แม้ว่าวิธีการจะต้องมีการปรับปรุงสำหรับ 12.10, เมล็ดที่มีอายุมากกว่าและอื่น ๆ
belacqua

3
กรณีการใช้งานของคำถามนั้นแตกต่างกันและคำตอบนั้นเฉพาะเจาะจงมากในวิธีที่ไม่สามารถนำไปใช้กับรายการซ้ำที่อ้างสิทธิ์อื่น ๆ ฉันมาที่นี่เพื่อแก้ปัญหาเฉพาะนี้ ไม่เปลี่ยนลำดับการบู๊ต หรือบูต Windows +1 สำหรับ "ไม่ใช่รายการที่ซ้ำกัน"
Robie Basak

คำตอบ:


128

/etc/default/grubก่อนให้สำเนาสำรองของ หากมีข้อผิดพลาดคุณสามารถเปลี่ยนกลับไปใช้สำเนาที่รู้จักได้ดี

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

จากนั้นแก้ไขไฟล์โดยใช้เครื่องมือแก้ไขข้อความที่คุณเลือก (เช่น gedit เป็นต้น)

sudo -H gedit /etc/default/grub

ค้นหาบรรทัดที่มีGRUB_DEFAULT- นี่คือสิ่งที่คุณต้องการแก้ไขเพื่อตั้งค่าเริ่มต้น คุณต้องทราบชื่อเต็มของเคอร์เนลที่คุณต้องการ - เช่นUbuntu, with Linux 3.13.0-53-generic- พร้อมกับชื่อเต็มของเมนู "ขั้นสูง" - Advanced options for Ubuntuเช่น

จากนั้นคุณรวมทั้งสองสายเข้าด้วยกัน>และตั้งGRUB_DEFAULTเป็น: GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic"(รวมถึงคำพูด)

บันทึกจากนั้นสร้างเมนูด้วงที่อัพเดต

sudo update-grub

ดูเพิ่มเติม: GNU ด้วงคู่มือ 2.02หรือมากขึ้นโดยเฉพาะในส่วน 15.1.0 ในการตั้งค่าเริ่มต้น


หมายเหตุ: มีวิธีการใช้ตัวเลขเพื่อเข้าถึงเมล็ดและเมนู แต่ไม่แนะนำเนื่องจากไม่น่าเชื่อถือเมื่อมีการอัพเดตเคอร์เนล


24
การใช้ค่าตัวเลขอาจเป็นปัญหาได้เมื่อมีการอัพเดต เป็นการดีกว่าที่จะใช้ข้อความเริ่มต้นเช่น: GRUB_DEFAULT = "เวอร์ชัน Linux ก่อนหน้านี้> Ubuntu, พร้อม Linux 3.2.0-18-generic"
Bealer

27
หนึ่งสามารถใช้sudo grub-mkconfig | lessเพื่อดูตัวเลือกที่เป็นไปได้ทั้งหมด
Nitz

9
นี้เป็นทางออกที่ดี แต่จะดียิ่งขึ้นคือการเปิด/boot/grub/grub.cfgและมีคุณจะเห็นทุกคนและทุกmanuentry submenusหากคุณแก้ไขพวกเขาคุณสามารถตั้งค่าเริ่มต้นได้อย่างง่ายดายแม้กระทั่งเปลี่ยนชื่อของตัวเลือกในรายการด้วงเมื่อรีสตาร์ทคอมพิวเตอร์
Aleks

7
มีประโยชน์อย่างยิ่งในการตรวจสอบ/boot/grub/grub.cfgเพื่อกำหนดชื่อที่แน่นอนที่จะใช้ แต่อย่าเปลี่ยนไฟล์นี้เพราะมันจะถูกสร้างใหม่โดยอัตโนมัติupdate-grubรวมถึงการอัพเดทแพ็คเกจ
Robie Basak

18
การจัดรูปแบบสำหรับ GRUB_DEFAULT นั้นล้าสมัยเล็กน้อย (ตั้งแต่อย่างน้อย Ubuntu 14.04.2) เล่นupdate-grubผมพบคำเตือน: โปรดอย่าใช้ชื่อเก่าPrevious Linux versions>Ubuntu, with Linux 3.13.0-53-genericสำหรับ GRUB_DEFAULT ใช้Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic(สำหรับรุ่นก่อน 2.00) หรือgnulinux-advanced-b0ce60c3-184c-453b-af59-419b56a2584f>gnulinux-3.13.0-53-generic-advanced-b0ce60c3-184c-453b-af59-419b56a2584f(2.00 หรือสูงกว่า)
Wumms

22

ทางออกที่ดีที่สุดสำหรับฉันคือการตั้ง (ใน/etc/default/grub):

 GRUB_DEFAULT=saved
 GRUB_SAVEDEFAULT=true

ด้วยการตั้งค่านี้ค่าที่เลือกล่าสุดจะถูกเก็บไว้สำหรับการบูตครั้งต่อไป หากคุณมีเคอร์เนลใหม่คุณไม่จำเป็นต้องแก้ไขการกำหนดค่าของคุณ

อย่าลืมเรียกใช้ซ้ำ sudo update-grub

การแก้ปัญหามาจากการอ่าน: info grub-mkconfig


4
นี่มันยอดเยี่ยมมาก
Mephisto

คุณแน่ใจเกี่ยวกับเครื่องหมายอัฒภาค ( ;) ที่ท้ายบรรทัดหรือไม่?
DJCrashdummy

ฉันไม่สามารถดูคอมพิวเตอร์ที่ฉันใช้ในขณะนี้ แต่คุณพูดถูก ";" ดูเหมือนว่าจะผิดหรือไม่จำเป็น!
Martin T.

21

ตอนนี้Advancedเมนูเป็นเมนูเริ่มต้นใน Ubuntu คุณจะต้องเลือกก่อนที่เคอร์เนลที่คุณต้องการใช้>อักขระ

ตั้งค่าเช่น:

GRUB_DEFAULT="1>7"

ในอีกครั้งวิ่ง/etc/default/grubsudo update-grub

0มันเป็นสิ่งสำคัญที่จะทราบว่าสำหรับรายการเมนูด้วงเลขเริ่มต้นด้วย ดังนั้น1ข้างต้นชี้ไปที่Advancedเมนู GRUB_TIMEOUT=5เพื่อความไม่ประมาทคุณอาจต้องการที่จะตั้งค่าเริ่มต้น บางคนอาจไม่สามารถเข้าถึง GRUB ได้โดยกดปุ่มในเวลาบูต นี่คือเครือข่ายความปลอดภัยในกรณีที่คุณตั้งใจชี้ไปที่บางสิ่งบางอย่างMemory testแทน นอกจากนี้ยังจำเป็นต้องใส่ตัวเลขข้างต้นในเครื่องหมายคำพูด มันจะไม่ทำงานเป็นอย่างอื่น

ฉันทดสอบที่ 16.04 LTS


ทำงานใน Debian ด้วย
Lawrence D'Oliveiro

ฉันพบว่าคำตอบนี้มีประโยชน์มากเพราะหลังจากเคอร์เนลอัพเดตแล้วยังคงชี้ไปที่เคอร์เนลใหม่ล่าสุด ในการตั้งค่าของฉันเช่นเป็น 1> 0 ความหมาย: รายชื่อขั้นสูงครั้งแรก (เป็นเคอร์เนลใหม่ล่าสุดเสมอ) บางครั้งระบบของฉันหยุดการอัพเดตด้วง 0 รายการด้วยเคอร์เนลใหม่ล่าสุดโดยอัตโนมัติดังนั้นฉันจึงใช้วิธีนี้
Peter Fleix

9

เพื่อให้สามารถตั้งค่าตัวเลือกการบูตที่จะใช้เป็นค่าเริ่มต้นคุณจำเป็นต้องรู้ว่ามี ... ดังนั้น:

หากต้องการแสดงรายการเมนูโดยไม่ต้องบูทจริงให้ลองทำดังนี้:

$ 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 'เมนูย่อย | menuentry' /boot/grub/grub.cfg | sed -re "s / (.?) '([^'] +) '. * / \ 1 \ 2 /"
menuentry Ubuntu
เมนูย่อยตัวเลือกขั้นสูงสำหรับ Ubuntu
    menuentry Ubuntu พร้อมด้วย Linux 4.4.0-34-generic
    menuentry Ubuntu พร้อมด้วย Linux 4.4.0-34-generic (upstart)
    menuentry Ubuntu พร้อม Linux 4.4.0-34-generic (โหมดการกู้คืน)
menuentry การตั้งค่าระบบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.