Làm cách nào tôi có thể nhận được grub2 để khởi động một tùy chọn khác chỉ trong lần khởi động tiếp theo?


19

Tôi đang thiết lập một máy Linux / Windows không đầu khởi động kép. Tôi hầu như muốn máy luôn khởi động lên Ubuntu, ngoại trừ thỉnh thoảng khi tôi cần kiểm tra một cái gì đó trong windows.

Tôi đã cài đặt Windows và Ubuntu và hiện tại nó khởi động lên Ubuntu. Tôi muốn có thể bảo nó khởi động Windows chỉ trong lần khởi động tiếp theo và sau đó khi tôi khởi động lại từ Windows, hệ thống sẽ quay trở lại khởi động Ubuntu.

Tôi đã tìm thấy Grub Legacy - phần 4.3.1 - Chỉ khởi động một lần nhưng tôi đang sử dụng máy chủ Ubuntu 14.04 có phiên bản grub mới hơn. Từ những gì tôi đã đọc, tôi cần thực hiện một số thay đổi /etc/default/grubvà sử dụng sudo grub-set-defaultkhi tôi muốn khởi động Windows.

Tôi nghĩ những thay đổi đó bắt đầu bằng việc thêm nó vào /etc/default/grub:

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=false

Bất cứ lúc nào thay đổi được thực hiện để /etc/default/grubtôi biết rằng tôi cần phải chạy
sudo update-grubvà kết quả là:

Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.13.0-43-generic
Found initrd image: /boot/initrd.img-3.13.0-43-generic
Found linux image: /boot/vmlinuz-3.13.0-32-generic
Found initrd image: /boot/initrd.img-3.13.0-32-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 7 (loader) on /dev/sda1
done

Vì Windows là tùy chọn thứ 7 trong danh sách đó nên tôi tin rằng tôi sẽ chạy sudo grub-set-default 6(đếm dựa trên 0) - điều này có đúng không và có một phương pháp khác để lấy danh sách các lựa chọn khởi động được đánh số sau khi hệ thống đã khởi động chưa?

Ngoài ra, các dòng /etc/default/grubcó đủ để đạt được hành vi này hay tôi cần thêm cấu hình bổ sung?

Câu trả lời:


19

Bạn cần đảm bảo rằng bạn có GRUB_DEFAULT=savedtrong cấu hình grub của mình (được tự động tạo, bạn thay đổi phần này bằng cách chỉnh sửa / etc / default / grub). sudo update-grubđể thực hiện các thay đổi hoạt động và sau đó sử dụng sudo grub-reboot $1.

grep -i "menuentry '" /boot/grub/grub.cfg

Sẽ cung cấp cho bạn các menu mà bạn có thể cắt dán với giá 1 đô la. Hoặc, như bạn lưu ý các tùy chọn là không có chỉ mục, do đó, menu n-th có thể có bằng cách chuyển (n-1) để khởi động lại grub.

Xem ví dụ

Không được kiểm tra bởi tôi vì tôi không cài đặt 'Windows 7'.


cảm ơn tôi nghĩ rằng đây là những gì tôi cần (với các chi tiết bổ sung mà tôi đã tìm thấy tại help.ubfox.com/community/Grub2 )
cwd

Nếu bạn tình cờ thử điều này mà không thay đổi dòng thành GRUB_DEFAULT=saved, bạn phải thực hiện việc này một cách thủ công sau đó như được giải thích ở đây trong đoạn thứ hai cho Grub2 và sau đógrub-set-default 0; grub-reboot 0
rubo77

1
một lệnh để hiển thị số của mục:grep -i "menuentry '" /boot/grub/grub.cfg|sed -r "s|--class .*$||g"|nl -v 0
rubo77

1
Theo Askubfox.com/questions/838704/grub-reboot-to-specific-kernel , menuentrys dưới một submenutrong /boot/grub/grub.cfgphải được chuyển đến grub-rebootdưới dạng SUBMENU>MENUENTRY. Vì vậy, ví dụ, bằng cách sử dụng một số bash-fu tương tự như @ rubo77, tôi muốn khởi động menuentry7, tuy nhiên mục này nằm dưới submenumục thứ hai trong menu cấp cao nhất, vì vậy tôi cần phải vượt qua '1>6'(chỉ trích dẫn để tránh vỏ phiên dịch>).
Trent Nelson

1
CẢNH BÁO: Điều này không hoạt động nếu bạn khởi động phân vùng BTRFS. Grub cần có khả năng ghi vào grubenv khi khởi động windows, nó không thể ghi vào BTRFS. Tệp thường được lưu trữ trong / boot / grub và có thể được xem bằng grub-editenv. Tôi đã sửa lỗi hệ thống của mình bằng cách gắn BTRFS vào /, phân vùng EXT4 trong / boot và sau đó là phân vùng EFI trong / boot / efi.
nathan

-2

Hãy thử cài đặt grub-customizer (hướng dẫn cài đặt bên dưới) vào hệ thống Ubuntu của bạn. Công cụ GUI này sẽ cung cấp cho bạn một bộ tùy chọn tuyệt vời để bạn có thể định cấu hình cài đặt GRUB của mình, bao gồm tên và thứ tự của các tùy chọn khởi động, hệ thống mặc định, độ phân giải màn hình, phông chữ, nền, v.v ...
Tôi không chắc liệu nó có khả năng chỉ đạo thiết lập những gì bạn muốn, nhưng ít nhất nó có thể cho bạn thấy các số os. Họ có thể được tham chiếu bởi tên của họ quá, tôi nghĩ.

Cách cài đặt grub-customizer:

sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer

(nguồn: launchpad - daniel richter )


Tôi đã thấy công cụ đó, nhưng tôi đang sử dụng máy chủ Ubuntu 14.04 (không có GUI) vì vậy tôi rất muốn có một giải pháp dòng lệnh.
cwd

Ồ, không biết điều này. Tôi sử dụng tiêu chuẩn 14.10 (Unity) và cá nhân tôi thích GUI cho các công việc như thế này. Bạn có biết trang web này ? Nó mô tả về những gì bạn đã viết trong câu hỏi của bạn, nhưng nếu nó khác với nguồn đầu tiên của bạn, có thể ở đó bạn tìm thấy chính xác những gì bạn cần.
Chỉ huy Byte

-1 - Tôi đang hạ thấp câu trả lời của bạn vì tôi tự hỏi liệu bạn có đọc câu hỏi nào không. Tôi có thể hiểu rằng bạn có thể đã bỏ lỡ 'máy chủ Ubuntu' ở đó nhưng bạn chỉ đăng cùng một liên kết mà tôi đã đưa vào câu hỏi của tôi trong bình luận cuối cùng của bạn ...
cwd

Giáo sư. Nhưng bạn có nghĩ rằng mỗi khi tôi viết một bình luận hoặc câu trả lời mới, tôi đọc lại toàn bộ câu hỏi và bài đăng cũ, kiểm tra mọi liên kết!? Bên cạnh đó, bạn cũng có thể cài đặt DE trên các bản phân phối máy chủ! Tôi thừa nhận rằng tôi chưa phải là chuyên gia (nhưng), nhưng ít nhất tôi cố gắng giúp đỡ người khác khi tôi có thể, ngay cả khi câu trả lời không phải lúc nào cũng đúng 100% hoặc hữu ích. Bạn nên vui mừng vì có bất kỳ ai đang cố gắng giúp bạn giải quyết vấn đề này, nhưng nếu bạn muốn chọc tức tôi, bạn đã thành công. Một điều cuối cùng: bạn đã nói về GRUB_SAVEDEFAULT=false, nhưng tôi không thể tìm thấy điều này trên liên kết của chúng tôi. Và bạn quên những dòng khác được đề cập ở đó!
Chỉ huy Byte
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.