Đặt kernel kernel cũ hơn làm mục nhập grub mặc định


93

Tôi đã cài đặt kernel mainline cho mục đích thử nghiệm. Tôi muốn đặt grub để khởi động từ kernel cũ hơn theo mặc định.

Tôi biết tôi có thể đặt GRUB_DEFAULT=0cài đặt cho trang đầu tiên của grub nhưng làm cách nào để cài đặt nó khởi động theo mặc định từ một kernel trong trang thứ hai (Trang nâng cao)?

Tôi thích làm điều này mà không cần cài đặt phần mềm khác (ví dụ: grub-customizer).

Câu hỏi liên quan:
Làm cách nào để đặt Windows khởi động làm mặc định trong trình tải khởi động?
Làm cách nào để thay đổi thứ tự khởi động grub?


3
@belacqua: Nó không phải là bản sao. Câu hỏi này là về việc đặt một kernel cũ không có trong trang tùy chọn đầu tiên của grub làm mặc định.
Làm

Có vẻ như trường hợp này nên được đề cập trong các câu hỏi trước đó, ngay cả khi phương pháp cần được cập nhật cho 12.10, hạt nhân cũ hơn, v.v.
belacqua

3
Trường hợp sử dụng của câu hỏi là khác nhau và câu trả lời rất cụ thể theo cách không áp dụng cho các bản sao được yêu cầu khác. Tôi đến đây để giải quyết vấn đề đặc biệt này; không thay đổi thứ tự khởi động; cũng không khởi động Windows. +1 cho "không trùng lặp".
Robie Basak

Câu trả lời:


128

Đầu tiên, tạo một bản sao lưu của /etc/default/grub. Nếu có sự cố xảy ra, bạn có thể dễ dàng trở lại bản sao đã biết.

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

Sau đó chỉnh sửa tệp bằng trình soạn thảo văn bản bạn chọn (ví dụ: gedit, v.v.).

sudo -H gedit /etc/default/grub

Tìm dòng có chứa GRUB_DEFAULT- đây là những gì bạn sẽ muốn chỉnh sửa để đặt mặc định. Bạn phải biết tên đầy đủ của kernel mà bạn muốn - ví dụ Ubuntu, with Linux 3.13.0-53-generic- cùng với tên đầy đủ của "menu nâng cao" - vd Advanced options for Ubuntu.

Sau đó, bạn kết hợp hai chuỗi đó với >và đặt thành chuỗi GRUB_DEFAULT: GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic"(bao gồm cả dấu ngoặc kép).

Lưu nó, sau đó xây dựng menu grub cập nhật.

sudo update-grub

Xem thêm: Hướng dẫn sử dụng GNU GRUB 2.02 hoặc cụ thể hơn là phần 15.1.0 về cài đặt mặc định .


Lưu ý: Có một phương pháp sử dụng số để truy cập hạt nhân và menu nhưng điều này không được khuyến khích vì nó không đáng tin cậy khi cập nhật kernel.


24
Sử dụng một giá trị số có thể có vấn đề khi cập nhật xảy ra. Tốt hơn là sử dụng mặc định văn bản, ví dụ: GRUB_DEFAULT = "Các phiên bản Linux trước> Ubuntu, với Linux 3.2.0-18-generic"
Bealer

27
Người ta có thể sử dụng sudo grub-mkconfig | lessđể xem tất cả các tùy chọn có thể
Nitz

9
Đây là một giải pháp tốt, nhưng thậm chí tốt hơn là mở một /boot/grub/grub.cfgvà ở đó bạn sẽ thấy tất cả manuentryvà tất cả submenus. Nếu bạn chỉnh sửa chúng, bạn có thể dễ dàng đặt những cái mặc định, thậm chí thay đổi Tiêu đề của các tùy chọn trong danh sách grub khi khởi động lại máy tính.
Aleks

7
Nó chắc chắn là hữu ích để kiểm tra /boot/grub/grub.cfgđể xác định tên chính xác để sử dụng. Nhưng không thay đổi tệp này vì nó sẽ được tự động tạo lại update-grub, kể cả trên các gói cập nhật.
Robie Basak

18
Định dạng cho GRUB_DEFAULT hơi lỗi thời (vì ít nhất là Ubuntu 14.04.2). Đang chạy update-grubTôi đã gặp cảnh báo: Vui lòng không sử dụng tiêu đề cũ Previous Linux versions>Ubuntu, with Linux 3.13.0-53-genericcho GRUB_DEFAULT, sử dụng Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic(cho các phiên bản trước 2.00) hoặc gnulinux-advanced-b0ce60c3-184c-453b-af59-419b56a2584f>gnulinux-3.13.0-53-generic-advanced-b0ce60c3-184c-453b-af59-419b56a2584f(cho 2.00 trở lên)
Wumms

22

Giải pháp tốt nhất cho tôi là đặt (trong /etc/default/grub):

 GRUB_DEFAULT=saved
 GRUB_SAVEDEFAULT=true

Với cài đặt này, giá trị được chọn cuối cùng được giữ cho lần khởi động tiếp theo. Nếu bạn có kernel mới, bạn không phải chỉnh sửa cấu hình của mình.

Đừng quên chạy lại sudo update-grub

Giải pháp là từ việc đọc: info grub-mkconfig


4
Điều này thật tuyệt vời
Mephisto

bạn có chắc chắn về dấu chấm phẩy ( ;) ở cuối dòng không?!?
DJCrashdummy

Tôi không thể nhìn vào máy tính của mình, nơi tôi đã sử dụng nó trong thời điểm này, nhưng bạn đã đúng ";" dường như là sai hoặc không cần thiết!
Martin T.

21

Giờ đây, một Advancedmenu được mặc định trong Ubuntu, bạn sẽ cần chọn nó trước kernel bạn muốn sử dụng >ký tự.

Đặt ví dụ:

GRUB_DEFAULT="1>7"

trong /etc/default/grubvà chạy lại sudo update-grub.

Điều quan trọng cần lưu ý là để đánh số các mục trong menu GRUB bắt đầu bằng 0. Do đó, các 1điểm trên vào Advancedmenu. Để phòng ngừa, bạn có thể muốn thiết lập ban đầu GRUB_TIMEOUT=5. Một số có thể không thể truy cập GRUB bằng cách nhấn phím khi khởi động. Đây là một mạng lưới an toàn trong trường hợp bạn vô tình chỉ vào một cái gì đó như Memory testthay vào đó. Nó cũng là cần thiết để bao gồm các con số trên trong dấu ngoặc kép. Nó sẽ không hoạt động khác.

Tôi đã thử nghiệm trên 16.04 LTS.


Hoạt động trong Debian cũng vậy.
Lawrence D'Oliveiro 16/03/18

Tôi thấy câu trả lời này rất hữu ích, vì sau khi cập nhật kernel, nó vẫn trỏ đến kernel mới nhất. trong thiết lập của tôi chẳng hạn, nó là 1> 0, nghĩa là: danh sách nâng cao đầu tiên (luôn là kernel mới nhất). hệ thống của tôi đôi khi dừng lại để tự động cập nhật 0 mục nhập của grub với kernel mới nhất, vì vậy tôi sử dụng phương pháp này.
Peter Fleix

9

Để có thể đặt tùy chọn khởi động nào được sử dụng làm mặc định, bạn cần biết có gì ... vì vậy:

Để hiển thị các mục menu mà không thực sự khởi động , hãy thử một cái gì đó như:

$ lsb_release -s -rdc
Ubuntu 16.04.4 LTS
16.04
xenial

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

$ grep -Ei 'menu phụ | menuentry' /boot/grub/grub.cfg | sed -re "s / (.?) '([^'] +) '. * / \ 1 \ 2 /"
thực đơn Ubuntu
menu phụ Tùy chọn nâng cao cho Ubuntu
    thực đơn Ubuntu, với Linux 4.4.0-34-generic
    thực đơn Ubuntu, với Linux 4.4.0-34-generic (mới bắt đầu)
    thực đơn Ubuntu, với Linux 4.4.0-34-generic (chế độ phục hồi)
menuentry Thiết lập hệ thống

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.