Bisakah Grub dikonfigurasikan untuk mengingat OS terakhir yang Anda gunakan?

17

Saya biasanya memiliki 2-3 OS di menu boot saya:

  • Ubuntu 10,04
  • Windows 7
  • [Terkadang, opsi ketiga, seperti Ubuntu 10,04 Netbook]

Jika saya menggunakan OS selain pilihan default (Windows 7 dalam hal ini), dan saya reboot, Grub melakukan boot ke Ubuntu 10.04. Ini seharusnya tidak terjadi - ketika saya reboot di Windows 7, saya ingin tetap di Windows 7. Apakah ada cara untuk mengkonfigurasi Grub untuk mengingat pilihan terakhir saya, dan boot ke dalamnya?

Atau, akan lebih baik jika Grub hanya melakukan ini ketika saya reboot (tidak ketika saya pertama kali menyalakan komputer). Saya menyadari ini tidak mungkin, jadi saya akan senang dengan mengingat pilihan terakhir sederhana.

Matius
sumber

Jawaban:

20

Dalam Grub asli Anda akan melakukan ini dengan menetapkan, di /boot/grub/menu.lst , kata kunci default untuk "disimpan" dan kemudian menggunakan kata kunci yang disimpan di setiap entri menu boot.


Diperbarui :
Grub2 sedikit lebih rumit. Ini juga masih berevolusi, jadi meskipun Ubuntu 9.10 dan 10.04 keduanya menggunakan Grub2, ada cukup banyak perbedaan dalam hal hal-hal yang dikemas dan dikonfigurasi untuk membuat hal-hal menarik.

Berikut ini cara melakukan trik saveefault pada keduanya:

  • Ubuntu 10.04:
    Petunjuk 9.10 adalah tipuan; Lucid jauh lebih sederhana. Lihat bantuan Ubuntu untuk lebih banyak detail berdarah. Anda perlu membuat dua perubahan di / etc / default / grub :

    1. Ubah baris yang dibaca GRUB_DEFAULT=0menjadiGRUB_DEFAULT=saved

    2. Tambahkan baris dengan GRUB_SAVEDEFAULT=true

    Itu dia. Sebenarnya tidak seburuk itu, kan? Jangan lupa lari sudo update-grub.

  • Ubuntu 9.10:
    Ada beberapa peretasan di forum Ubuntu untuk membuatnya berfungsi; rupanya kata kunci diselamatkan kesalahan itu buggy di Grub v1.97. Posting ini di Forum Ubuntu menyediakan satu metode. Posting lain menyarankan metode yang sedikit lebih sederhana:

    1. Set GRUB_DEFAULT = disimpan di / etc / default / grub .

    2. Masukkan dua baris ini ke /etc/grub.d/40_custom (dekat bagian bawah, setelah baris "exec tail" ):

      saved_entry=${chosen}
      save_env saved_entry
      

    Saya telah menguji metode ini di Ubuntu 9.10 dan berhasil; boot berikutnya akan secara otomatis menyorot entri terakhir yang dipilih. Dikombinasikan dengan batas waktu, ini akan secara otomatis boot ke OS terakhir yang Anda boot.

Dan jangan lupa lari sudo update-grub. Setelah Anda selesai dengan perubahan Anda. Sangat penting dan mudah untuk dilupakan ....


Grub tidak memiliki cara untuk membedakan reboot dari cold boot , jadi Grub tidak dapat melakukan ini saat reboot dengan sendirinya. Namun, jika Anda boot ke Linux, Anda dapat menggunakan sudo grub-set-default N(di mana N adalah jumlah entri menu boot, mulai dari 0) untuk mengatur entri N untuk dipilih pada boot berikutnya (bukan entri apa pun yang disimpan).

Secara teori, Anda bisa meretas bersama sesuatu yang terhubung ke rutinitas shutdown ( skrip pemula , mungkin) yang menjalankan grub-set-default untuk Anda ketika Anda memberi tahu Linux untuk shutdown (tetapi tidak ketika Anda menyuruhnya untuk reboot). Anda tidak akan mendapatkan fungsionalitas yang sama ketika mematikan Windows.

Saya memang mendengar tentang teknik Grub4DOS atau Grub1 yang melibatkan pemasangan Grub ke FAT32 atau NTFS / partisi boot - yang memungkinkan Anda untuk juga menjalankan grub-set-default dari Windows, sehingga Anda dapat memanggilnya dari skrip logoff Windows. Terakhir kali saya melihat sesuatu tentang itu, ini tidak mungkin pada Grub2. Itu mungkin sudah berubah sekarang.

quack quixote
sumber
Solusi # 2 sepertinya tidak bekerja untuk saya. Saya mengedit / etc / default / grub, mengedit /etc/grub.d/40_custom, dan berlari sudo update-grub. Saya diuji dengan mem-boot ke Windows 7, mematikan, lalu menyalakan kembali komputer saya. Ubuntu 10,04 (default) masih dipilih. Saya juga mencoba meletakkan "Saved_entry" di / etc / default / grub, alih-alih "save" (tidak yakin bagaimana skrip konfigurasi grub bekerja), tetapi tidak membantu. Saya belum mencoba solusi # 1.
Matius
@Matthew: periksa kembali bahwa /etc/grub.d/40_custom dapat dieksekusi (sudo chmod + x jika tidak). tapi ya, saya baru saja mencoba di mesin Ubuntu 10,04 saya dan tidak berhasil di sana. memeriksa mengapa ...
quack quixote
@ Matthew: Oke, cari tahu. Maaf, saya seharusnya tahu Lucid dan Karmic akan berbeda. (oh. dan pastikan Anda berlari sudo update-grub.)
quack quixote
3

Posting ini mungkin akan berguna bagi Anda, itu cukup jelas. Perhatikan bahwa 10,04 dan 9,10 menggunakan versi GRUB yang sama, jadi semuanya harus persis sama untuk Anda.

marcusw
sumber