Saya menjalankan GRUB 2.00 di sistem Gentoo Linux.
Saya mengkompilasi kernel saya sendiri secara manual, dan kemudian saya menginstalnya /boot
dengan make install
. Saya memiliki kernel berikut di /boot
saat ini:
# ls -1 /boot/vmlinuz*
/boot/vmlinuz-3.7.4-gentoo-5
/boot/vmlinuz-3.7.4-gentoo-first
/boot/vmlinuz-3.7.4-gentoo-fourth
/boot/vmlinuz-3.7.4-gentoo-third
Menjalankan grub2-mkconfig
hasil dalam output berikut:
# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.7.4-gentoo-third
Found linux image: /boot/vmlinuz-3.7.4-gentoo-fourth
Found linux image: /boot/vmlinuz-3.7.4-gentoo-first
Found linux image: /boot/vmlinuz-3.7.4-gentoo-5
done
Jika saya sekarang membaca /boot/grub2/grub.cfg
file yang dihasilkan , saya perhatikan bahwa entri berikut telah dibuat:
- Entri default utama yang dimulai
vmlinuz-3.7.4-gentoo-third
- Submenu dengan semua entri lainnya (termasuk yang pemulihan), dalam urutan yang sama dengan
grub2-mkconfig
perintah
Masalahnya adalah bahwa pada saat boot saya ingin memuat secara default revisi kelima dari kernel saya ( vmlinuz-3.7.4-gentoo-5
), bukan yang ketiga ( vmlinuz-3.7.4-gentoo-third
). Saya juga memilih untuk tidak mengakses submenu karena memilih kernel yang tepat untuk dimuat.
Bagaimana saya bisa mengubah perilaku ini? Bagaimana saya bisa memberi tahu GRUB bahwa saya ingin menjalankan revisi kelima dari kernel saya secara default dan bukan revisi ketiga yang lebih lama? Secara umum, bagaimana saya bisa mengubah baris entri default agar sesuai dengan kernel yang saya inginkan dan bukan yang tampaknya dipilih secara acak oleh GRUB?
Saya juga mencoba meletakkan baris berikut di /etc/default/grub
:
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
Ini tidak memperbaiki masalah seperti yang saya inginkan. Tetapi setidaknya GRUB tampaknya mengingat kernel terbaru yang saya boot dari dan secara otomatis memilihnya dari submenu. Hanya saja saya tidak suka mengakses submenu.
-o /boot/grub2/grub.cfg
sebagai file output. Apakah direktori tersebut/boot/grub/
masih ada?Jawaban:
Untuk memilih entri menu di bawah sub-menu "Opsi lanjutan" atur GRUB_DEFAULT = "1> 3". Anda sekarang dapat menjalankan grub2-mkconfig untuk menghasilkan file konfigurasi grub. Pada reboot berikutnya vmlinuz-3.7.4-gentoo-5 seharusnya boot.
Catatan : Ini tidak akan mengubah entri default di menu grub, yaitu entri default masih akan menunjukkan entri yang sama seperti yang Anda miliki sekarang. Tetapi gambar yang akan di-boot secara default akan menjadi gambar ke-4 di bawah "Opsi lanjutan". Untuk menjadikan vmlinuz-3.7.4-gentoo-5 sebagai entri default di menu grub, urutan gambar harus sedemikian rupa sehingga vmlinuz-3.7.4-gentoo-5 harus menjadi gambar pertama ketika Anda menjalankan grub2-mkconfig .
sumber
Jika Anda memiliki submenu di grub.cfg, Anda harus menggunakan dua digit seperti ini:
Yang pertama adalah indeks menu, dan yang kedua adalah indeks submenu.
Misalnya, untuk mem-boot entri terakhir dari konfigurasi seperti ini:
kamu harus menggunakan:
dan reboot.
sumber
Anda mungkin juga menggunakan
GRUB_DEFAULT=saved
. Dalam hal ini yang akan Anda gunakanatau hanya untuk boot berikutnya:
sumber
Mencoba
Ini memindahkan semua kernel yang tidak digunakan ke direktori cadangan, sekarang:
Ini hanya menambah pilihan
r5
ke menu Anda. Setelah melakukannya, baca tautan ini dan ulang semua kernel di direktori cadangan selain vmlinuz jika Anda bersikeras untuk menyimpannyasumber
Dengan centos7 (atau RHEL7) dan grub2:
grub menggunakan entri 'Saved_entry' dari grubenv sebagai default untuk boot, sniplet dari /boot/grub2/grub.cfg:
untuk memeriksa apa yang 'diselamatkan' sekarang adalah build saya:
untuk mengubahnya misalnya ke build debug saya:
sumber
Apa yang saya lakukan untuk mencapai hasil yang diinginkan adalah:
atur
GRUB_DEFAULT=saved
seperti yang diuraikan dalamgrub-set-default
bantuangrub-set-default Menu entry not specified. Usage: grub-set-default [OPTION] MENU_ENTRY Set the default boot menu entry for GRUB. This requires setting GRUB_DEFAULT=saved in /etc/default/grub. -h, --help print this message and exit -V, --version print the version information and exit --boot-directory=DIR expect GRUB images under the directory DIR/grub instead of the /boot/grub directory MENU_ENTRY is a number, a menu item title or a menu item identifier.
Tetapkan nilai default
grub-set-default "1>2"
Itu menciptakan file baru di / boot / grub bernama grubenv dengan info yang diperlukan.
Setelah itu saya membuat ulang file konfigurasi
grub-mkconfig > /boot/grub/grub.cfg
Dan saya telah melihat bahwa konfigurasi diubah untuk menggunakan status tersimpan:
if [ "${next_entry}" ] ; then set default="${next_entry}" set next_entry= save_env next_entry set boot_once=true else set default="${saved_entry}" fi
sumber
Anda dapat mengatur pilihan default dengan nilai numerik. Jika Anda mengatur
di
/etc/default/grub
Anda akan menetapkan default ke entri gentoo-5.
GRUB_DEFAULT
adalah offset nol, sehingga 3 akan memilih entri keempat sesuai keinginan.sumber
GRUB_DEFAULT=3
seperti yang Anda katakan, lalu jalankan kembaligrub2-mkconfig
. Tetapi pada saat boot entri default masihvmlinuz-3.7.4-gentoo-third
.GRUB_SAVEDEFAULT=true
Seharusnya tidak masalah, tetapi tidak diperlukan dengan angka./etc/default/grub
file saya .Saya menduga bahwa
grub2-mkconfig
kernel diurutkan dalam urutan terbalik, dengan asumsi bahwa mereka terutama mengandung nomor versi yang meningkat secara monoton. Jadi mulailah memilih tag Anda agar sesuai dengan konvensi itu.sumber
mv file-file versi baru / tidak digunakan di / boot ke direktori cadangan misalnya / boot / kembali initrd.img-3.13.0-xx-generic
vmlinuz-3.13.0-xx-generic config-3.13.0-xx-generic System.map-3.13.0-xx-generic
reboot sistem ke mode penyelamatan, lalu pilih grub di dialog penyelamatan, maka semuanya akan beres.
itu metode yang paling cocok menurut saya. Saya menggunakan ubuntu 14.04.
sumber
di ubuntu:
grub-pc akan membiarkan Anda memilih menu mana.
lihat: /ubuntu/384388/how-to-select-option-in-configuration-grub-pc-menu
sumber