Grub có thể được cấu hình để ghi nhớ hệ điều hành cuối cùng mà bạn đã khởi động không?


17

Tôi thường có 2-3 hệ điều hành trong menu khởi động của mình:

  • Ubuntu 10.04
  • Windows 7
  • [Đôi khi, một tùy chọn thứ ba, chẳng hạn như Ubuntu 10.04 Netbook]

Nếu tôi ở trong HĐH khác với lựa chọn mặc định (Windows 7 trong trường hợp này) và tôi khởi động lại, Grub khởi động vào Ubuntu 10.04. Điều này không nên xảy ra - khi tôi khởi động lại trong Windows 7, tôi muốn ở lại Windows 7. Có cách nào để định cấu hình Grub để ghi nhớ lựa chọn cuối cùng của tôi và khởi động vào đó không?

Ngoài ra, sẽ tốt hơn nữa nếu Grub chỉ làm điều này khi tôi khởi động lại (không phải khi tôi bật máy tính lần đầu tiên). Tôi nhận ra điều này có thể là không thể, vì vậy tôi rất vui với việc ghi nhớ lựa chọn cuối cùng đơn giản.

Câu trả lời:


20

Trong Grub gốc bạn đã làm điều này bằng cách thiết lập, trong /boot/grub/menu.lst , các mặc định từ khóa để "cứu" và sau đó sử dụng savedefault từ khóa trong mỗi mục trình đơn khởi động.


Cập nhật :
Grub2 phức tạp hơn một chút. Nó vẫn đang phát triển, do đó, mặc dù cả Ubuntu 9.10 và 10.04 đều sử dụng Grub2, nhưng có đủ sự khác biệt trong cách mọi thứ được đóng gói và định cấu hình để khiến mọi thứ trở nên thú vị.

Dưới đây là cách thực hiện các savedefault trick trong cả hai:

  • Ubuntu 10.04:
    Các hướng 9,10 là một mẹo; Lucid đơn giản hơn nhiều. Xem trợ giúp của Ubuntu để biết thêm chi tiết. Bạn cần thực hiện hai thay đổi trong / etc / default / grub :

    1. Thay đổi dòng đọc GRUB_DEFAULT=0thànhGRUB_DEFAULT=saved

    2. Thêm một dòng với GRUB_SAVEDEFAULT=true

    Đó là nó. Thật ra điều đó không tệ phải không? Đừng quên chạy sudo update-grub.

  • Ubuntu 9.10:
    Có một số hack trên các diễn đàn Ubuntu để làm cho nó hoạt động; rõ ràng là savedefault từ khóa là lỗi trong Grub v1.97. Bài đăng này trên Diễn đàn Ubuntu cung cấp một phương pháp. Một bài viết khác cho thấy một phương pháp đơn giản hơn một chút:

    1. Đặt GRUB_DEFAULT = được lưu trong / etc / default / grub .

    2. Đặt hai dòng này vào /etc/grub.d/40_custom (gần cuối, sau dòng "exec tail" ):

      saved_entry=${chosen}
      save_env saved_entry
      

    Tôi đã thử nghiệm phương pháp này trong Ubuntu 9.10 và nó hoạt động; lần khởi động tiếp theo sẽ tự động làm nổi bật mục cuối cùng được chọn. Kết hợp với thời gian chờ, điều này sẽ tự động khởi động vào hệ điều hành cuối cùng mà bạn đã khởi động.

Và đừng quên chạy sudo update-grub. Sau khi bạn hoàn thành với những thay đổi của bạn. Nó quan trọng và đáng xấu hổ dễ quên ....


Grub không có cách nào để phân biệt khởi động lại với khởi động lạnh , vì vậy Grub không thể tự làm điều này khi khởi động lại. Tuy nhiên, nếu bạn đã khởi động vào Linux, bạn có thể sử dụng sudo grub-set-default N(trong đó N là số mục nhập của menu khởi động, bắt đầu từ 0) để đặt mục N được chọn ở lần khởi động tiếp theo (thay vì bất kỳ mục nào được lưu).

Về lý thuyết, bạn có thể hack cùng một thứ gì đó dính vào thói quen tắt máy ( kịch bản Upstart , có lẽ) chạy grub-set-default cho bạn khi bạn bảo Linux tắt máy (nhưng không phải khi bạn bảo nó khởi động lại). Tuy nhiên, bạn sẽ không nhận được chức năng tương tự khi tắt Windows.

Tôi đã nghe nói về kỹ thuật Grub4DOS hoặc Grub1 liên quan đến việc cài đặt Grub vào phân vùng khởi động FAT32 hoặc NTFS / boot - cho phép bạn cũng chạy grub-set-default từ Windows, vì vậy bạn có thể gọi nó từ tập lệnh đăng xuất Windows. Lần trước tôi đã thấy bất cứ điều gì về điều đó, điều này là không thể trên Grub2. Điều đó có thể đã thay đổi ngay bây giờ.


Giải pháp số 2 dường như không hiệu quả với tôi. Tôi đã chỉnh sửa / etc / default / grub, chỉnh sửa /etc/grub.d/40_custom và chạy sudo update-grub. Tôi đã kiểm tra bằng cách khởi động vào Windows 7, tắt, sau đó bật lại máy tính. Ubuntu 10.04 (mặc định) vẫn được chọn. Tôi cũng đã thử đặt "yet_entry" vào / etc / default / grub, thay vì "đã lưu" (không chắc cách các tập lệnh cấu hình grub hoạt động), nhưng nó không giúp ích gì. Tôi chưa thử giải pháp số 1.
Matthew

@Matthew: kiểm tra kỹ xem /etc/grub.d/40_custom có ​​thể thực thi được không (sudo chmod + x nếu không). nhưng vâng, tôi vừa thử trên máy Ubuntu 10.04 của mình và nó cũng không hoạt động. kiểm tra lý do tại sao ...
quack quixote

@Matthew: OK, đã tìm ra rồi. tôi xin lỗi, tôi nên biết Lucid và Karmic sẽ khác nhau như vậy. (oh. và chắc chắn rằng bạn chạy sudo update-grub.)
quack quixote

3

Bài đăng này có thể sẽ được sử dụng cho bạn, nó là khá tự giải thích. Lưu ý rằng 10.04 và 9.10 sử dụng cùng một phiên bản GRUB, vì vậy mọi thứ sẽ hoàn toàn giống với bạ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.