GRUB2: cách nhớ grub lựa chọn cuối cùng


11

Tôi hiện đang thử các bản phân phối khác nhau vì vậy khi tôi khởi động máy tính xách tay của mình, tôi có một số hệ điều hành để lựa chọn. Thông thường, tất cả các bản phân phối đó đều tự cài đặt grub2và định vị chúng ở đầu danh sách để chúng là các bản mặc định để khởi động sau khi cài đặt hoàn tất.

Nhưng Manjaro đã làm một cái gì đó khác biệt. Nó đã cài đặt một số phiên bản grub2sẽ nhớ bản phân phối nào tôi đã khởi động lần trước và tiếp tục khởi động bản đó (khi khởi động lại) cho đến khi tôi chọn một bản khác (và sau đó nó sẽ khởi động bản đó và cứ thế tiếp tục).

Tôi đã tưởng tượng điều này? Manjaro thực sự làm điều đó? Nếu vậy, làm thế nào tôi có thể cài đặt phiên bản của grubhệ thống của tôi? Chúc mừng.


Đây là /etc/grub.d/40_customtập tin của tôi :

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

và đây là /etc/default/grubtập tin của tôi :

# 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"

Tôi đã làm theo hướng dẫn trong câu hỏi đó (chủ yếu thêm hai dòng đó vào tôi grub) nhưng nó không hoạt động. Bản phân phối hàng đầu khởi động khi khởi động lại mặc dù tôi đã chọn một bản khác trước đó.
Gabriel

Tôi làm theo hướng dẫn trong câu trả lời được chấp nhận. Tôi đã chỉnh sửa /etc/default/grubvà tôi đã thay đổi dòng GRUB_DEFAULT=0thành GRUB_DEFAULT=savedvà thêm dòng GRUB_SAVEDEFAULT=truekhông có ở đó. Rồi tôi sudo update-grub. Khởi động lại và chọn một bản phân phối để khởi động, khác với bản trên cùng. Khởi động lại một lần nữa và bản phân phối trên cùng (không phải cái tôi đã chọn trước đó) được chọn theo mặc định và được khởi động.
Gabriel

Tôi đã cập nhật câu hỏi của mình với những gì bên trong hai tập tin đó. Thay đổi tôi nên làm là gì?
Gabriel

Câu trả lời:


11

Theo hướng dẫn GRUB :

'GRUB_DEFAULT'

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

Nếu bạn đặt thành 'đã lưu', thì mục trình đơn mặc định sẽ được lưu bởi 'GRUB_SAVEDEFAULT', grub-set-default hoặc grub-restart.


'GRUB_SAVEDEFAULT'

Nếu tùy chọn này được đặt thành 'true', thì khi chọn mục nhập, hãy lưu nó làm mục nhập mặc định mới để sử dụng cho các lần chạy GRUB trong tương lai. Điều này chỉ hữu ích nếu 'GRUB_DEFAULT = đã lưu'; đó là một tùy chọn riêng vì 'GRUB_DEFAULT = đã lưu' rất hữu ích khi không có tùy chọn này, kết hợp với grub-set-default hoặc grub-restart. Bỏ mặc định Tùy chọn này dựa trên khối môi trường, có thể không khả dụng trong mọi tình huống (xem Khối môi trường).

Bạn phải thêm:

GRUB_DEFAULT=saved

GRUB_SAVEDEFAULT=true

để của bạn /etc/default/grub. Ngoài ra, nếu bạn đang sử dụng các tệp menu tùy chỉnh như /etc/grub.d/40_custombạn phải thêm tùy chọn

savedefault

vào menuentry / menuentries trong tập tin đó. Sau bản cập nhật GRUB đó:

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

hoặc là

update-grub

Nếu bạn đã cài đặt một số bản phân phối, hãy đảm bảo rằng bạn đang định cấu hình và cập nhật GRUB đang hoạt động .


1

Tôi đã gặp rắc rối với việc sử dụng Arch với tư cách là khách VirtualBox. Vấn đề hóa ra là việc tôi sử dụng LVM.

Một lần nữa, từ Hướng dẫn GRUB :

13.2 Khối môi trường GRUB

Nó thường hữu ích để có thể nhớ một lượng nhỏ thông tin từ lần khởi động này đến lần khởi động tiếp theo. Ví dụ: bạn có thể muốn đặt mục trình đơn mặc định dựa trên mục được chọn lần trước. GRUB cố tình không thực hiện hỗ trợ ghi tệp để giảm thiểu khả năng bộ tải khởi động chịu trách nhiệm cho lỗi hệ thống tệp, do đó, tệp cấu hình GRUB chỉ có thể tạo tệp theo cách thông thường. Tuy nhiên, GRUB cung cấp một khối môi trường trên mạng có thể được sử dụng để tiết kiệm một lượng nhỏ trạng thái.

Khối môi trường là một tệp 1024 byte được preallocated, thường sống trong / boot / grub / grubenv (mặc dù bạn không nên giả sử điều này). Khi khởi động, lệnh load_env (xem load_env) tải các biến môi trường từ nó và lệnh save_env (xem save_env) lưu các biến môi trường vào nó. Từ một hệ thống đang chạy, tiện ích grub-editenv có thể được sử dụng để chỉnh sửa khối môi trường.

Vì lý do an toàn, bộ lưu trữ này chỉ khả dụng khi được cài đặt trên một đĩa đơn giản (không có LVM hoặc RAID) , sử dụng hệ thống tệp không kiểm tra (không có ZFS) và sử dụng các chức năng BIOS hoặc EFI (không có ATA, USB hoặc IEEE1275).

grub-mkconfig sử dụng cơ sở này để triển khai 'GRUB_SAVEDEFAULT' (xem Cấu hình đơn giản).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.