Atur kernel "lama" sebagai entri grub default


94

Saya memasang kernel arus utama untuk tujuan pengujian. Saya ingin mengatur grub untuk boot dari kernel lama secara default.

Saya tahu saya bisa mengatur GRUB_DEFAULT=0pengaturan untuk halaman pertama grub tetapi bagaimana cara mengaturnya untuk boot secara default dari satu kernel di halaman kedua (halaman Advanced)?

Saya lebih suka melakukan ini tanpa menginstal perangkat lunak lain (mis. Grub-customizer).

Pertanyaan Terkait:
Bagaimana cara mengatur Windows untuk boot sebagai default di boot loader?
Bagaimana cara mengubah urutan boot grub?


3
@ belacqua: Ini bukan duplikat. Pertanyaan ini adalah tentang menyetel kernel lama yang tidak ada di halaman pertama opsi grub sebagai default.
Untuk Dilakukan

Sepertinya kasus ini harus dibahas dalam pertanyaan sebelumnya, bahkan jika metode ini perlu diperbarui untuk 12.10, kernel yang lebih tua, dll.
belacqua

3
Kasus penggunaan pertanyaan berbeda, dan jawabannya sangat spesifik sehingga tidak berlaku untuk duplikat yang diklaim lainnya. Saya datang ke sini untuk menyelesaikan masalah khusus ini; tidak mengubah urutan boot; atau untuk mem-boot Windows. +1 untuk "bukan duplikat".
Robie Basak

Jawaban:


128

Pertama, buat salinan cadangan /etc/default/grub. Jika terjadi kesalahan, Anda dapat dengan mudah kembali ke salinan yang dikenal baik.

sudo cp /etc/default/grub /etc/default/grub.bak

Kemudian edit file menggunakan editor teks pilihan Anda (mis. Gedit, dll.).

sudo -H gedit /etc/default/grub

Temukan baris yang berisi GRUB_DEFAULT- inilah yang ingin Anda edit untuk mengatur default. Anda harus mengetahui nama lengkap kernel yang Anda inginkan - mis. Ubuntu, with Linux 3.13.0-53-generic- bersama dengan nama lengkap "menu lanjutan" - mis Advanced options for Ubuntu.

Anda kemudian menggabungkan kedua string dengan >dan mengaturnya GRUB_DEFAULTsebagai: GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic"(termasuk kutipan).

Simpan, lalu buat menu grub yang diperbarui.

sudo update-grub

Lihat juga: Manual GNU GRUB 2.02 atau lebih khusus, bagian 15.1.0 tentang pengaturan default .


Catatan: Ada metode yang menggunakan angka untuk mengakses kernel dan menu tetapi ini tidak disarankan karena tidak dapat diandalkan ketika pembaruan kernel terjadi.


24
Menggunakan nilai numerik dapat menjadi masalah saat pembaruan terjadi. Lebih baik menggunakan default teks, yaitu: GRUB_DEFAULT = "Versi Linux sebelumnya> Ubuntu, dengan Linux 3.2.0-18-generik"
Bealer

27
Orang dapat menggunakan sudo grub-mkconfig | lessuntuk melihat semua opsi yang mungkin
Nitz

9
Ini adalah solusi yang baik, tetapi yang lebih baik adalah dengan membuka /boot/grub/grub.cfgdan di sana Anda akan melihat semua manuentrydan semua submenus. Jika Anda mengeditnya, Anda dapat dengan mudah mengatur yang default, bahkan mengubah Judul opsi dalam daftar grub saat me-restart komputer.
Aleks

7
Pasti bermanfaat untuk memeriksa /boot/grub/grub.cfguntuk menentukan nama yang tepat untuk digunakan. Tetapi jangan ubah file ini karena akan dibuat ulang secara otomatis update-grub, termasuk pada pembaruan paket.
Robie Basak

18
Pemformatan untuk GRUB_DEFAULT sedikit usang (karena setidaknya Ubuntu 14.04.2). Berjalan update-grubSaya mengalami peringatan: Tolong jangan gunakan judul lama Previous Linux versions>Ubuntu, with Linux 3.13.0-53-genericuntuk GRUB_DEFAULT, gunakan Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic(untuk versi sebelum 2.00) atau gnulinux-advanced-b0ce60c3-184c-453b-af59-419b56a2584f>gnulinux-3.13.0-53-generic-advanced-b0ce60c3-184c-453b-af59-419b56a2584f(untuk 2.00 atau lebih baru)
Wumms

22

Solusi terbaik bagi saya adalah mengatur /etc/default/grub:

 GRUB_DEFAULT=saved
 GRUB_SAVEDEFAULT=true

Dengan pengaturan ini, nilai yang dipilih terakhir disimpan untuk boot berikutnya. Jika Anda memiliki kernel baru, Anda tidak perlu mengedit konfigurasi Anda.

Jangan lupa untuk menjalankan kembali sudo update-grub

Solusinya dari membaca: info grub-mkconfig


4
Ini luar biasa
Mephisto

Anda yakin dengan tanda titik koma ( ;) di akhir baris?!?
DJCrashdummy

Saya tidak bisa melihat ke komputer saya di mana saya menggunakannya saat ini, tetapi Anda benar ";" tampaknya salah atau tidak perlu!
Martin T.

21

Sekarang sebuah Advancedmenu adalah default di Ubuntu, Anda harus memilihnya sebelum kernel yang Anda inginkan menggunakan >karakter.

Tetapkan misalnya:

GRUB_DEFAULT="1>7"

masuk /etc/default/grubdan jalankan kembali sudo update-grub.

Penting untuk dicatat bahwa penomoran entri menu GRUB dimulai dengan 0. Karena itu 1poin di atas menunjuk ke Advancedmenu. Sebagai tindakan pencegahan, Anda mungkin ingin mengatur awalnya GRUB_TIMEOUT=5. Beberapa mungkin tidak dapat mengakses GRUB dengan menekan kunci pada saat boot. Ini adalah jaring pengaman jika Anda secara tidak sengaja menunjuk ke sesuatu seperti itu Memory test. Penting juga untuk memasukkan angka-angka di atas dalam tanda kutip. Itu tidak akan bekerja sebaliknya.

Saya menguji pada 16,04 LTS.


Bekerja di Debian juga.
Lawrence D'Oliveiro

Saya menemukan jawaban ini sangat berguna, karena setelah pembaruan kernel masih menunjuk ke kernel terbaru. dalam setup saya misalnya itu 1> 0, artinya: daftar advanced-first (selalu kernel terbaru). sistem saya kadang-kadang berhenti untuk secara otomatis memperbarui entri 0 grub dengan kernel terbaru, jadi saya menggunakan metode ini.
Peter Fleix

9

Untuk dapat mengatur opsi boot mana yang akan digunakan sebagai default, Anda perlu tahu apa yang ada ... jadi:

Untuk menampilkan entri menu tanpa benar-benar mem-boot , coba sesuatu seperti:

$ lsb_release -s -rdc
Ubuntu 16.04.4 LTS
16.04
xenial

$ update-grub --version
grub-mkconfig (GRUB) 2.02 ~ beta2-36ubuntu3.17

$ grep -Ei 'submenu | menuentry' /boot/grub/grub.cfg | sed -re "s / (.?) '([^'] +) '. * / \ 1 \ 2 /"
Ubuntu menuentry
submenu Opsi lanjutan untuk Ubuntu
    menuentry Ubuntu, dengan Linux 4.4.0-34-generic
    menuentry Ubuntu, dengan Linux 4.4.0-34-generic (pemula)
    menuentry Ubuntu, dengan Linux 4.4.0-34-generic (mode pemulihan)
menuentry Pengaturan sistem

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.