GNU/Linux >> Belajar Linux >  >> Linux

Tetapkan kernel default di GRUB

Setelah berjuang selama 2 jam, saya telah menemukan cara yang jauh lebih mudah untuk mencapainya. Saya hanya RTFM.;)

Tambahkan dua baris ke /etc/default/grub

GRUB_SAVEDEFAULT=true
GRUB_DEFAULT=saved

Lakukan sudo update-grub , reboot, masuk ke menu grub Anda dan pilih menu atau submenu mana saja yang Anda butuhkan. Pilihan akan disimpan setiap saat dan kemudian komputer Anda akan boot secara otomatis. Saat Anda memilih entri lain secara manual, itu menjadi default baru.


Saya pikir sebagian besar distribusi telah memindahkan kernel tambahan ke submenu opsi lanjutan pada saat ini, seperti yang ditemukan TomTom pada Arch-nya.

Saya tidak ingin mengubah struktur menu tingkat atas untuk memilih kernel sebelumnya sebagai default. Saya menemukan jawabannya di sini:

http://www.humans-enabled.com/2014/08/how-to-set-default-grub-kernel-boot.html

Untuk meringkas:

1) Temukan $menuentry_id_option untuk submenu:

$ grep submenu /boot/grub/grub.cfg
submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {

2) Temukan $menuentry_id_option untuk entri menu untuk kernel yang ingin Anda gunakan:

$ grep gnulinux /boot/grub/grub.cfg
menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
    menuentry 'Debian GNU/Linux, with Linux 4.18.0-0.bpo.1-rt-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-0.bpo.1-rt-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
    menuentry 'Debian GNU/Linux, with Linux 4.18.0-0.bpo.1-rt-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-0.bpo.1-rt-amd64-recovery-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
    menuentry 'Debian GNU/Linux, with Linux 4.18.0-0.bpo.1-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-0.bpo.1-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
    menuentry 'Debian GNU/Linux, with Linux 4.18.0-0.bpo.1-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-0.bpo.1-amd64-recovery-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
    menuentry 'Debian GNU/Linux, with Linux 4.17.0-0.bpo.1-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.17.0-0.bpo.1-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
    menuentry 'Debian GNU/Linux, with Linux 4.17.0-0.bpo.1-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.17.0-0.bpo.1-amd64-recovery-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
    menuentry 'Debian GNU/Linux, with Linux 4.9.0-8-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.9.0-8-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
    menuentry 'Debian GNU/Linux, with Linux 4.9.0-8-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.9.0-8-amd64-recovery-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {

3) Komentari grub default Anda saat ini di /etc/default/grub dan ganti dengan $menuentry_id_option sub-menu dari langkah pertama, dan $menuentry_id_option kernel yang dipilih dari langkah kedua dipisahkan oleh > .

Dalam kasus saya, GRUB_DEFAULT yang dimodifikasi adalah:

#GRUB_DEFAULT=0

GRUB_DEFAULT="gnulinux-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc>gnulinux-4.18.0-0.bpo.1-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc"

4) Perbarui grub untuk melakukan perubahan. Untuk Debian ini dilakukan seperti ini:

$ sudo update-grub

Selesai. Sekarang ketika Anda boot, menu lanjutan harus memiliki tanda bintang dan Anda harus boot ke kernel yang dipilih. Anda dapat mengonfirmasi ini dengan uname .

$ uname -a
Linux NAME 4.18.0-0.bpo.1-amd64 #1 SMP Debian 4.18.0-0 (2018-09-13) x86_64 GNU/Linux

Mengubah ini kembali ke kernel terbaru semudah mengomentari baris baru dan menghapus komentar #GRUB_DEFAULT=0 :

GRUB_DEFAULT=0

#GRUB_DEFAULT="gnulinux-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc>gnulinux-4.18.0-0.bpo.1-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc"

lalu jalankan kembali update-grub .


Seperti disebutkan dalam komentar, Anda dapat mengatur kernel default untuk boot menggunakan grub-set-default X perintah, di mana X adalah nomor kernel yang ingin Anda gunakan untuk boot. Di beberapa distribusi Anda juga dapat mengatur nomor ini dengan mengedit /etc/default/grub file dan pengaturan GRUB_DEFAULT=X , lalu menjalankan update-grub .

Nomornya adalah indeks ke array pengaturan kernel/kernel yang ditampilkan di menu GRUB selama boot, dengan 0 sebagai entri pertama (paling atas). Anda biasanya dapat menemukan nomor yang tepat dengan mencari menuentry baris di /boot/grub/grub.cfg , seperti ini:

grep menuentry /boot/grub/grub.cfg

Anda akan melihat setiap kernel terdaftar dengan nama yang ditampilkan di menu boot GRUB. Yang pertama adalah 0, yang kedua adalah 1, dan seterusnya.


Linux
  1. Bagaimana Mengubah Program "membaca" Default?

  2. Bagaimana Cara Mengatur Titik Mount Default??

  3. Penggunaan Sed Untuk Memperbarui File Grub?

  1. Tetapkan Mplayer Sebagai Aplikasi Default?

  2. Tidak dapat mengatur kata sandi GRUB pada sistem Raspberry Pi 3

  3. Pembuatan paralel:atur -j8 sebagai opsi default

  1. Membuat penyimpanan default berfungsi dengan GRUB2 ...?

  2. Bagaimana cara mengatur lingkungan desktop default saat sistem dimulai?

  3. Cara mengatur dua rute default di linux