GRUB2: วิธีการจำตัวเลือกสุดท้ายของด้วง


11

ฉันกำลังลอง distros ต่าง ๆ ดังนั้นเมื่อฉันบูตเครื่องแล็ปท็อปของฉันฉันมีระบบปฏิบัติการหลายตัวให้เลือก โดยปกติแล้ว distros เหล่านั้นจะติดตั้งgrub2และค้นหาตนเองที่ด้านบนสุดของรายการดังนั้นจึงเป็นค่าเริ่มต้นที่จะบู๊ตหลังจากการติดตั้งเสร็จสิ้น

แต่มันจาโรทำสิ่งที่แตกต่าง มันติดตั้งเวอร์ชั่นบางส่วนgrub2ที่จะจำ distro ที่ฉันบูทครั้งสุดท้ายและทำการบูทนั้น (เมื่อรีสตาร์ท) จนกว่าฉันจะเลือกอันอื่น (และจากนั้นมันจะบู๊ตอันนั้นเป็นต้น)

ฉันจินตนาการเรื่องนี้ไหม มันจาโร่ทำเช่นนั้นจริงหรือ? ถ้าเป็นเช่นนั้นวิธีการที่ฉันสามารถติดตั้งรุ่นที่ของgrubกับระบบของฉันได้อย่างไร ไชโย


นี่คือ/etc/grub.d/40_customไฟล์ของฉัน:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

และนี่คือ/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=saved
GRUB_SAVEDEFAULT=true
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=3
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"

ฉันทำตามคำแนะนำในคำถามนั้น (ส่วนใหญ่เพิ่มสองบรรทัดเหล่านั้นในของฉันgrub) แต่มันไม่ทำงาน distro เริ่มระบบใหม่เมื่อเริ่มต้นใหม่แม้ว่าฉันจะเลือกอีกอันก่อนหน้านี้
Gabriel

ฉันทำตามคำแนะนำในคำตอบที่ยอมรับแล้ว ฉันแก้ไข/etc/default/grubและฉันเปลี่ยนบรรทัดGRUB_DEFAULT=0เป็นGRUB_DEFAULT=savedและเพิ่มบรรทัดGRUB_SAVEDEFAULT=trueที่ไม่ได้อยู่ที่นั่น sudo update-grubแล้วฉัน รีบูทแล้วเลือก distro เพื่อบู๊ตซึ่งแตกต่างจาก top top รีบูตอีกครั้งและด้านบน (ไม่ใช่ที่ฉันเลือกไว้ก่อนหน้านี้) distro ถูกเลือกตามค่าเริ่มต้นและบูตแล้ว
Gabriel

ฉันอัปเดตคำถามของฉันด้วยสิ่งที่อยู่ในไฟล์สองไฟล์นั้น การเปลี่ยนแปลงที่ฉันควรทำคืออะไร?
Gabriel

คำตอบ:


11

ตามคู่มือ GRUB :

'GRUB_DEFAULT'

.................

หากคุณตั้งค่านี้เป็น 'บันทึก' รายการเมนูเริ่มต้นจะถูกบันทึกไว้โดย 'GRUB_SAVEDEFAULT', grub-set-default หรือ grub-reboot


'GRUB_SAVEDEFAULT'

หากตัวเลือกนี้ถูกตั้งค่าเป็น 'จริง' เมื่อเลือกรายการแล้วให้บันทึกเป็นรายการเริ่มต้นใหม่สำหรับใช้โดยการเรียกใช้ GRUB ในอนาคต สิ่งนี้มีประโยชน์เฉพาะเมื่อ 'GRUB_DEFAULT = บันทึก'; มันเป็นตัวเลือกที่แยกจากกันเพราะ 'GRUB_DEFAULT = บันทึก' มีประโยชน์หากไม่มีตัวเลือกนี้ร่วมกับ grub-set-default หรือ grub-reboot Unset ตามค่าเริ่มต้น ตัวเลือกนี้ขึ้นอยู่กับบล็อกสภาพแวดล้อมซึ่งอาจไม่สามารถใช้ได้ในทุกสถานการณ์ (ดูบล็อกสภาพแวดล้อม)

คุณต้องเพิ่ม:

GRUB_DEFAULT=saved

และ

GRUB_SAVEDEFAULT=true

/etc/default/grubที่คุณ นอกจากนี้หากคุณใช้ไฟล์เมนูที่กำหนดเองเช่น/etc/grub.d/40_customคุณจะต้องเพิ่มตัวเลือก

savedefault

ไปที่เมนู / เมนูในไฟล์นั้น หลังจากอัพเดตด้วงแล้ว:

grub-mkconfig -o /boot/grub/grub.cfg

หรือ

update-grub

หากคุณมีหลาย distros ติดตั้งให้แน่ใจว่าคุณกำลังกำหนดค่าและปรับปรุงด้วงที่ใช้งานอยู่


1

ฉันมีปัญหากับการใช้ Arch ในฐานะแขก VirtualBox ปัญหาปรากฏว่าเป็นการใช้งาน LVM ของฉัน

อีกครั้งจากคู่มือ GRUB :

13.2 บล็อกสภาพแวดล้อม GRUB

มักจะมีประโยชน์ที่จะสามารถจำข้อมูลจำนวนเล็กน้อยจากการบู๊ตครั้งต่อไป ตัวอย่างเช่นคุณอาจต้องการตั้งค่ารายการเมนูเริ่มต้นตามสิ่งที่เลือกไว้ในครั้งสุดท้าย GRUB จงใจไม่ใช้การสนับสนุนการเขียนไฟล์เพื่อลดความเป็นไปได้ของ boot loader ที่รับผิดชอบต่อความเสียหายของระบบไฟล์ดังนั้นไฟล์การตั้งค่าของ GRUB จึงไม่สามารถสร้างไฟล์ได้ตามปกติ อย่างไรก็ตาม GRUB จัดให้มี "บล็อกสภาพแวดล้อม" ซึ่งสามารถใช้เพื่อบันทึกสถานะจำนวนเล็กน้อย

บล็อกสภาพแวดล้อมเป็นไฟล์ที่จัดสรรล่วงหน้าขนาด 1024- ไบต์ซึ่งโดยทั่วไปจะอยู่ใน / boot / grub / grubenv (แม้ว่าคุณไม่ควรถือว่านี่) ณ เวลาบูตคำสั่ง load_env (ดูที่ load_env) จะโหลดตัวแปรสภาวะแวดล้อมจากนั้นและคำสั่ง save_env (ดูที่ save_env) จะบันทึกตัวแปรสภาพแวดล้อมไว้ จากระบบที่รันอยู่ยูทิลิตี grub-editenv สามารถใช้เพื่อแก้ไขบล็อกสภาพแวดล้อม

เพื่อเหตุผลด้านความปลอดภัยที่เก็บข้อมูลนี้จะใช้ได้เฉพาะเมื่อติดตั้งบนดิสก์ธรรมดา (ไม่มี LVM หรือ RAID)โดยใช้ระบบไฟล์ที่ไม่ผ่านการตรวจสอบ (ไม่มี ZFS) และการใช้ฟังก์ชัน BIOS หรือ EFI (ไม่มี ATA, USB หรือ IEEE1275)

grub-mkconfig ใช้เครื่องมือนี้เพื่อใช้งาน 'GRUB_SAVEDEFAULT' (ดูการกำหนดค่าอย่างง่าย)

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