GRUB2: bagaimana mengingat grub pilihan terakhir

11

Saat ini saya sedang mencoba berbagai distro jadi ketika saya boot laptop saya, saya memiliki beberapa OS untuk dipilih. Biasanya, semua distro menginstal grub2dan menempatkan diri di bagian atas daftar sehingga mereka yang default untuk boot setelah instalasi selesai.

Tetapi Manjaro melakukan sesuatu yang berbeda. Itu menginstal beberapa versi grub2yang akan ingat distro mana yang saya boot terakhir kali dan terus boot yang satu itu (setelah restart) sampai saya memilih yang lain (dan kemudian akan boot yang satu dan seterusnya).

Apakah saya membayangkan ini? Apakah Manjaro benar-benar melakukan itu? Jika demikian, bagaimana saya dapat menginstal versi dari grubsistem saya? Bersulang.


Ini /etc/grub.d/40_customfile saya :

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

dan ini /etc/default/grubfile saya :

# 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"
Gabriel
sumber
Saya mengikuti arahan dalam pertanyaan itu (terutama menambahkan dua baris ke saya grub) tetapi tidak berhasil. Distro top boot setelah restart meskipun saya telah memilih yang lain sebelumnya.
Gabriel
Saya mengikuti arahan dalam jawaban yang diterima. Saya diedit /etc/default/grubdan saya mengubah baris GRUB_DEFAULT=0ke GRUB_DEFAULT=saveddan menambahkan baris GRUB_SAVEDEFAULT=trueyang wan't ada. Lalu saya sudo update-grub. Reboot dan pilih distro untuk boot, berbeda dari yang atas. Boot ulang lagi dan distro atas (bukan yang saya pilih sebelumnya) dipilih secara default dan di-boot.
Gabriel
Saya memperbarui pertanyaan saya dengan apa yang ada di dalam dua file itu. Apa perubahan yang harus saya lakukan?
Gabriel
mari kita lanjutkan diskusi ini dalam obrolan
don_crissti

Jawaban:

11

Sesuai dengan manual GRUB :

'GRUB_DEFAULT'

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

Jika Anda mengatur ini ke 'disimpan', maka entri menu default adalah yang disimpan oleh 'GRUB_SAVEDEFAULT', grub-set-default, atau grub-reboot.


'GRUB_SAVEDEFAULT'

Jika opsi ini disetel ke 'true', maka, ketika sebuah entri dipilih, simpan sebagai entri default baru untuk digunakan oleh GRUB yang akan dijalankan di masa mendatang. Ini hanya berguna jika 'GRUB_DEFAULT = disimpan'; itu adalah opsi terpisah karena 'GRUB_DEFAULT = save' berguna tanpa opsi ini, bersama dengan grub-set-default atau grub-reboot. Tidak disetel secara default. Opsi ini bergantung pada blok lingkungan, yang mungkin tidak tersedia di semua situasi (lihat blok Lingkungan).

Anda harus menambahkan:

GRUB_DEFAULT=saved

dan

GRUB_SAVEDEFAULT=true

untuk Anda /etc/default/grub. Juga, jika Anda menggunakan file menu kustom seperti /etc/grub.d/40_customAnda harus menambahkan opsi

savedefault

ke entri menu / entri menu dalam file itu. Setelah itu perbarui GRUB:

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

atau

update-grub

Jika Anda memiliki beberapa distro yang diinstal, pastikan Anda mengonfigurasi dan memperbarui GRUB yang aktif .

don_crissti
sumber
1

Saya mengalami masalah dengan ini menggunakan Arch sebagai tamu VirtualBox. Masalahnya ternyata adalah penggunaan LVM saya.

Sekali lagi, dari Manual GRUB :

13.2 Blok lingkungan GRUB

Seringkali berguna untuk mengingat sejumlah kecil informasi dari satu boot ke boot berikutnya. Misalnya, Anda mungkin ingin mengatur entri menu default berdasarkan apa yang dipilih terakhir kali. GRUB sengaja tidak menerapkan dukungan untuk menulis file untuk meminimalkan kemungkinan bootloader bertanggung jawab atas kerusakan sistem file, sehingga file konfigurasi GRUB tidak bisa hanya membuat file dengan cara biasa. Namun, GRUB menyediakan "blok lingkungan" yang dapat digunakan untuk menghemat sejumlah kecil negara.

Blok lingkungan adalah file 1024 byte yang telah dialokasikan sebelumnya, yang biasanya hidup di / boot / grub / grubenv (walaupun Anda seharusnya tidak menganggap ini). Pada saat boot, perintah load_env (lihat load_env) memuat variabel lingkungan darinya, dan perintah save_env (lihat save_env) menyimpan variabel lingkungan ke dalamnya. Dari sistem yang berjalan, utilitas grub-editenv dapat digunakan untuk mengedit blok lingkungan.

Untuk alasan keamanan, penyimpanan ini hanya tersedia ketika diinstal pada disk biasa (tanpa LVM atau RAID) , menggunakan sistem file non-checksumming (tanpa ZFS), dan menggunakan fungsi BIOS atau EFI (tanpa ATA, USB atau IEEE1275).

grub-mkconfig menggunakan fasilitas ini untuk mengimplementasikan 'GRUB_SAVEDEFAULT' (lihat Konfigurasi sederhana).

Matteus Blanc
sumber