Cara menukar versi kernel Linux dengan selamat dalam GRUB2

Kemaskini terakhir: 31/03/2026
Pengarang Ishak
  • GRUB2 membolehkan anda memilih versi kernel yang hendak dibut secara lalai secara fleksibel, menggunakan indeks menu atau nama entri yang tepat.
  • Hidup dengan cabang generik linux, HWE dan edge memerlukan kawalan GRUB untuk mengelakkan ketidakstabilan semasa memasang kernel yang lebih baharu.
  • Mengedit /etc/default/grub dan menjana semula konfigurasi dengan update-grub adalah asas untuk membetulkan atau memulihkan kernel lalai.
  • Menyahpasang kernel yang bercanggah dan mengekalkan sekurang-kurangnya satu cabang yang stabil memastikan sistem kekal boleh di-boot dan selamat.

Menukar versi kernel Linux dalam GRUB2

Memilih versi kernel yang dibut secara lalai dalam Linux Ia bukan sekadar kebiasaan pentadbir yang teliti: dalam banyak kes, ia adalah perbezaan antara mempunyai sistem yang stabil dan mengalami ranap sistem, ketidakserasian dengan pemacu grafik atau kegagalan dalam perkakasan terkini. Ini terutamanya benar dalam Ubuntu dan pengedaran berasaskan Debian yang lain, di mana cabang generik, HWE dan pengedaran lain wujud bersama. versi eksperimenMengawal GRUB2 hampir wajib.

Apabila anda memasang berbilang teras secara selari, GRUB2 sentiasa cuba untuk boot kernel paling moden yang ada.Itu tidak mengapa pada kebanyakan masa, tetapi jika anda terpaksa kembali kepada versi sebelumnya disebabkan oleh pepijat atau pemacu yang rosak, anda perlu memberitahu GRUB entri mana yang hendak digunakan sebagai lalai. Dalam artikel ini, kita akan melihat secara terperinci dan tanpa bertele-tele cara melakukannya dengan selamat dan kekal, nuansa apa yang perlu anda ketahui dengan cabang HWE baharu, dan cara menggabungkannya dengan helah berguna lain yang berkaitan dengan GRUB2.

Versi kernel manakah yang disokong oleh Ubuntu dan mengapa anda berminat untuk mengubahnya?

Ubuntu mengekalkan beberapa baris kernel secara selaridireka untuk senario yang berbeza. Memahami apa yang telah anda pasang adalah langkah pertama sebelum menyentuh apa-apa dalam GRUB2, kerana ia akan menentukan entri mana yang anda lihat dalam menu but dan yang mana yang anda mahu gunakan sebagai tetapan lalai.

Di satu pihak terdapat cabang klasik generik linuxKernel ini biasanya diprapasang pada pelayan dan sistem yang mengutamakan kestabilan. Kernel ini tahan lama dan telah diuji secara menyeluruh, dan dalam versi LTS seperti Ubuntu 22.04, ia biasanya sepadan dengan siri seperti 5.15.x. Falsafahnya jelas: kurang kejutan, kurang kerosakan selepas kemas kini.

Komputer desktop Ubuntu juga menawarkan Kernel HWE (Pengaktifan Perkakasan)Cawangan-cawangan ini dipasang, contohnya, dengan arahan seperti sudo apt install linux-generik-hwe-22.04 dan mereka menyasarkan versi kernel yang lebih baharu, seperti siri 6.5.x dalam kes Ubuntu 22.04 LTS, dengan tujuan untuk menyokong perkakasan moden yang tidak wujud semasa LTS asal dikeluarkan.

Jika anda perlu melangkah lebih jauh, terdapat juga varian hwe-edge, direka sebagai cawangan "pelopor" o tepi berdarahIa dipasang dengan arahan seperti sudo apt install linux-generik-hwe-22.04-edge Ia selalunya merangkumi kernel yang lebih baharu (contohnya, 6.7.x dalam Ubuntu 22.04 itu sendiri). Ia menawarkan sokongan untuk perkakasan yang sangat terkini, tetapi dengan kos yang meningkatkan kemungkinan menghadapi pepijat, ketidakstabilan atau tingkah laku pelik.

Walaupun sistem hanya menjalankan satu kernel pada satu masa.Imej teras purba dipelihara di /boot Ia seperti polisi insurans hayat. Jika kemas kini menyebabkan komputer anda tidak boleh digunakan, keupayaan untuk boot ke versi lama boleh menyelamatkan keadaan. Masalahnya ialah sebaik sahaja anda memasang kernel yang lebih baharu, Ubuntu akan cenderung untuk boot ke dalamnya setiap kali, dan menyahpasangnya tanpa dapat boot ke kernel lain boleh menjadi sangat menyusahkan.

Pilihan Lanjutan GRUB2

Pilih kernel yang berbeza daripada menu GRUB2 buat sementara waktu

Sebelum kita mula mengedit fail, perlu diingat bahawa GRUB2 sudah membenarkan anda memilih kernel lain secara manual semasa boot.Jika anda mempunyai akses fizikal ke komputer dan papan kekunci yang disambungkan, anda selalunya tidak memerlukan apa-apa lagi untuk mencuba versi pratonton.

Di Ubuntu, semasa menghidupkan mesin, Anda boleh memaparkan menu GRUB2 dengan menekan kekunci Shift. semasa fasa but awal. Dalam sistem BIOS tradisional, ia berfungsi dengan baik; dalam UEFI biasanya GRUB cukup untuk memaparkan menu lalai, tetapi ideanya sama: untuk melihat senarai sistem dan pilihan.

Dalam menu itu, anda biasanya akan melihat entri pertama jenis Ubuntu, yang merupakan kernel yang but yang terakhir dipasang, diikuti oleh submenu yang dipanggil Pilihan lanjutan untuk Ubuntu (Pilihan lanjutan). Dalam submenu ini disenaraikan semua versi kernel yang tersedia, setiap satunya dengan mod biasa dan mod pemulihannya.

  Cara Menggunakan Komputer sebagai Penghala Windows 10: Mudah dan Mudah

Jika anda menghadapi masalah dengan kernel terkini, Perkara biasa yang perlu dilakukan ialah pergi ke "Pilihan lanjutan untuk Ubuntu" dan pilih versi yang lebih lama (contohnya, Ubuntu, with Linux 5.15.0-94-generic) dan bukannya 6.x terkini. Sebaik sahaja ia berjaya dibut dengan versi tersebut, anda boleh menyahpasang kernel yang bercanggah dan menjana semula konfigurasi dengan sudo update-grub.

Sudah tentu, penyelesaian manual ini mempunyai kekurangan: Ia hanya berfungsi jika anda boleh berinteraksi dengan GRUBPada pelayan tanpa papan kekunci, mesin jauh atau persekitaran di mana anda tidak melihat konsol but, anda memerlukan kaedah berterusan yang memberitahu GRUB input mana yang sentiasa digunakan, tanpa bertanya kepada anda pada setiap permulaan.

Senaraikan semua kernel yang diketahui oleh GRUB2

Untuk menetapkan kernel lalai dengan andal, Mula-mula anda perlu tahu entri menu yang sebenarnya telah dikonfigurasikan oleh GRUB2Tidak cukup hanya melihat pakej yang dipasang, kerana kedudukan dalam menu boleh berubah apabila kernel ditambah atau dialih keluar.

GRUB2 menjana menu utamanya dalam fail /boot/grub/grub.cfgWalaupun tidak digalakkan untuk mengeditnya secara manual (ia akan ditulis ganti apabila anda menjalankan kemas kini-grubYa, anda boleh membacanya untuk mendapatkan maklumat. Arahan yang sangat praktikal untuk menyenaraikan entri ialah:

grep -Ei 'submenu|menuentry ' /boot/grub/grub.cfg | sed -re «s/(.? )'(+)'.*/\1 \2/»

Perintah ini Ia akan mengembalikan senarai semua entri dan submenu. yang muncul semasa permulaan, sesuatu yang serupa dengan:

menuentry Ubuntu
submenu Advanced options for Ubuntu
menuentry Ubuntu, with Linux 6.7.0-15-generic
menuentry Ubuntu, with Linux 6.7.0-15-generic (recovery mode)
menuentry Ubuntu, with Linux 5.15.0-94-generic
menuentry Ubuntu, with Linux 5.15.0-94-generic (recovery mode)
menuentry Ubuntu, with Linux 5.15.0-92-generic
menuentry Ubuntu, with Linux 5.15.0-92-generic (recovery mode)
menuentry Memory test (memtest86+.elf)
menuentry Memory test (memtest86+.bin, serial console)
menuentry MS-DOS 5.x/6.x/Win3.1 (on /dev/sdf1)

Entri pertama biasanya "Ubuntu" dengan kernel paling modenDan dalam submenu "Pilihan lanjutan", semua versi yang dipasang akan muncul, disusun dari yang terbaru hingga yang terlama. Dalam contoh kami, jika anda ingin sentiasa but dengan Ubuntu, with Linux 5.15.0-94-genericEntri itu akan berada dalam submenu lanjutan, bukan menu utama.

Senarai entri GRUB2

Tetapkan kernel tertentu mengikut kedudukan dalam menu (indeks GRUB_DEFAULT)

Satu bentuk klasik bagi nyatakan kernel GRUB2 yang ingin dibut secara lalai Ia melibatkan penunjukan indeks (kedudukan) entri, atau gabungan "submenu > entri" apabila versi yang dikehendaki berada dalam "Pilihan lanjutan untuk Ubuntu".

Fail yang mengawal perkara ini ialah / etc / default / grubSebelum membuat sebarang perubahan, sangat disyorkan untuk membuat sandaran pantas sekiranya anda perlu kembali ke keadaan sebelumnya dengan mudah. ​​Anda boleh melakukannya dengan:

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

Seterusnya, editnya dengan editor kegemaran anda, contohnya dengan Nano:

sudo nano / etc / default / grub

Di dalamnya anda akan melihat garisan seperti ini GRUB_DEFAULT=0, yang menunjukkan bahawa entri pertama dalam menu utama (indeks sifar) akan digunakan. Jika kernel yang anda inginkan berada dalam submenu "Pilihan lanjutan"Anda boleh memberitahu GRUB untuk memasuki submenu tersebut dan memilih kedudukan tertentu menggunakan notasi submenú>entrada.

Mengikuti contoh sebelumnya, jika "Pilihan lanjutan untuk Ubuntu" adalah pilihan 1 dalam menu utama dan dalam submenu itu "Ubuntu, dengan Linux 5.15.0-94-generik" adalah pilihan ketiga (mengira dari sifar dan melangkau mod pemulihan), anda boleh menulis sesuatu seperti:

GRUB_DEFAULT="1>3"

Logiknya mudah, tetapi anda perlu memberi perhatian kepada indeks.Aras pertama merujuk kepada kedudukan submenu dalam menu utama, dan aras kedua merujuk kepada kedudukan entri dalam submenu tersebut. Selain itu, ingat bahawa entri "mod pemulihan" biasanya berperingkat, jadi pilihan biasa menggunakan nombor ganjil dan pilihan pemulihan menggunakan nombor genap.

Sebaik sahaja anda telah berubah GRUB_DEFAULT, simpan fail (dalam Nano, Ctrl + O dan kemudian Ctrl + X) dan menggunakan perubahan dengan menjana semula konfigurasi GRUB dengan:

sudo update-grub

Di sebalik ini, mulakan semula sistem dengan sudo reboot dan, sebaik sahaja ia boot, ia akan menyemak kernel yang telah dimuatkan dengan:

uname -a

Hasilnya sepatutnya menunjukkan kepada anda, sebagai contoh, Linux ... 5.15.0-94-generic ... menunjukkan bahawa anda kini menggunakan versi yang anda tetapkan menggunakan indeks dalam GRUB_DEFAULT.

Gunakan nama entri menu dan bukannya indeks (mod "disimpan")

Kaedah indeks mempunyai masalah utama: Kedudukan berubah apabila anda memasang atau menyahpasang kernelIni bermakna kemas kini kernel boleh menjadikan anda 1>3 Berhenti menyasarkan kernel yang betul, yang sebenarnya anda ingin elakkan jika anda mencari kestabilan jangka panjang.

  PikaOS, pengedaran Linux yang memudahkan permainan

GRUB2 menawarkan alternatif yang lebih mantap: Gunakan nama tepat entri menu sebagai item lalaiDengan cara ini, selagi entri itu wujud dalam grub.cfgIa akan terus dipilih walaupun versi baharu ditambah di atas atau di bawahnya dalam senarai.

Idea umum ialah: pertama Anda mencari nama penuh item menu yang anda inginkan, seperti yang tertera dalam /boot/grub/grub.cfg (contohnya Ubuntu, with Linux 6.8.0-60-generic), dan kemudian anda mengkonfigurasi GRUB untuk menggunakannya sebagai entri_disimpan lalai.

Untuk mencari nama yang tepat, anda boleh membuka fail konfigurasi dengan editor atau pemapar, contohnya:

sudo nano /boot/grub/grub.cfg

Sebaik sahaja masuk, Gunakan Ctrl+W dalam Nano untuk mencari rentetan yang sepadan dengan versi kernel yang menarik minat anda (contohnya, "6.8.0-60-generik"). Sejajar dengan menuentry Anda akan melihat tajuk penuh, seperti:

menuentry 'Ubuntu, with Linux 6.8.0-60-generic' ...

Kini, daripada bermain dengan indeks, Anda boleh memberitahu GRUB untuk menggunakan nama itu sebagai pilihan yang disimpan.Prosedur biasa melibatkan pelaksanaan arahan seperti berikut:

sudo grub-set-default «Ubuntu, dengan Linux 6.8.0-60-generik»

Arahan ini mentakrifkan entri yang ditentukan sebagai entri yang akan dianggap sebagai "lalai yang disimpan". Untuk mengesahkan bahawa ia telah digunakan dengan betul, anda boleh menyemak fail persekitaran GRUB:

senarai sudo grub-editenv

Anda sepatutnya melihat baris seperti ini:

saved_entry=Ubuntu, with Linux 6.8.0-60-generic

Ada kemungkinan juga, bergantung pada konfigurasi sebelumnya, pilihan GRUB_DEFAULT=saved sedang digunakan en /etc/default/grubyang memberitahu GRUB untuk sentiasa menggunakan yang terakhir entri_disimpan ditubuhkan. Walau apa pun, sementara saved_entry Jika ia sepadan dengan kernel yang anda inginkan, anda akan terus boot versi tersebut secara automatik.

Selepas menggunakan perubahan ini, jana semula fail konfigurasi dengan sudo update-grubMulakan semula sistem dan sahkan sekali lagi dengan uname -a yang anda mulakan dengan versi yang ditakrifkan sebagai lalai.

Konfigurasikan GRUB2 dengan kernel yang disimpan

Menukar kernel dalam Ubuntu kepada versi tertentu (memasang dan menurunkan taraf)

Dalam banyak kes, anda bukan sahaja mahu memilih kernel yang telah dipasang sebelumnya, tetapi bertukar daripada versi semasa anda kepada versi tertentuIni sama ada kerana aplikasi anda memerlukannya, kerana pemacu hanya menyokong siri tertentu, atau kerana kemas kini baru-baru ini telah merosakkan separuh sistem anda.

Langkah pertama hendaklah sentiasa ketahui kernel yang sedang anda jalankanUntuk melakukan ini, anda boleh menggunakan arahan seperti:

uname-R

Wahai:

uname -a

yang akan mengembalikan sesuatu seperti ini:

Linux web 6.8.0-85-generic #85~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC ... x86_64 GNU/Linux

Sebaik sahaja anda tahu di mana anda berada, langkah seterusnya ialah lihat kernel mana yang tersedia dalam repositoriDalam persekitaran Ubuntu/Debian, ini biasanya dilakukan dengan menanyakan pakej linux-image daripada repositori, menapis mengikut versi yang anda minati. Sebaik sahaja anda menemui versi tertentu, anda boleh memasangnya terus dengan apt atau mengkompilnya sendiri (lihat Bagaimana untuk mencari konfigurasi dalam `make menuconfig`), seperti yang anda suka.

Contohnya, jika anda ingin turun dari 6.8.0-85-generik a 6.8.0-60-generikAnda akan memasang pakej yang sepadan dengan arahan yang sesuai, mengesahkan dengan "S" apabila apt Ia akan bertanya sama ada anda ingin meneruskan pemasangan. Selepas proses selesai, Anda kemudian akan mempunyai versi kernel yang tersedia untuk bootWalau bagaimanapun, GRUB akan terus memilih yang terbaru sehingga anda menukar tetapan seperti yang dijelaskan.

Selepas memasang kernel yang dikehendaki, mulakan semula komputer untuk dapat menetapkannya sebagai lalai menggunakan salah satu kaedah di atas (mengikut indeks atau mengikut nama), yang mana lebih mudah dan mantap untuk kes anda.

Tetapkan kernel tertentu daripada submenu "Pilihan lanjutan" sebagai lalai

Dalam pengedaran seperti Ubuntu 22 dan 24, apabila versi kernel yang lebih rendah daripada yang semasa ditambah, Versi itu tidak ditetapkan sebagai entri utama.tetapi ditambah ke submenu Pilihan lanjutan untuk UbuntuOleh itu, walaupun anda memasang versi 6.8.0-60 di bawah 6.8.0-85, setelah dimulakan semula, anda masih akan but dengan versi 85.

Untuk apa GRUB2 secara automatik memilih versi yang anda inginkan daripada submenuAnda perlu tahu kedudukannya yang tepat. Sekali lagi, arahan yang menyenaraikan menuentry y submenu Ia membantu anda melihat struktur dan susunan berangka yang akan digunakan oleh GRUB.

  Bahagian Pasaran Semasa Windows, macOS dan Linux: Analisis dan Trend

Bayangkan selepas menjalankan arahan penyenaraian, anda mendapati bahawa kernel sasaran anda (contohnya, "Ubuntu, dengan Linux 6.8.0-60-generik") muncul di kedudukan keempat submenu "Pilihan lanjutan", dan submenu ini adalah yang pertama selepas entri utama. Dalam kes itu, kombinasi indeks, bermula dari sifar, akan menjadi 1> 2 (submenu dalam kedudukan 1, entri dalam kedudukan 2 dalam submenu tersebut).

Dalam Fail /etc/default/grubAnda kemudian akan menukar baris tersebut:

GRUB_DEFAULT=0

oleh:

GRUB_DEFAULT="1>2"

Selepas menyimpan perubahan dan menjalankan sudo update-grub, Pada kali seterusnya anda boot, kernel tertentu itu akan dipilih secara automatik. dalam "Pilihan lanjutan", tanpa perlu memasukkan submenu secara manual setiap kali.

Selepas permulaan semula, anda boleh mengesahkan bahawa semuanya berjalan lancar uname-R o uname -a, mengesahkan bahawa versi kernel aktif adalah yang telah anda tetapkan GRUB_DEFAULT.

Pengeditan konfigurasi GRUB2

Nyahpasang HWE dan kernel tepi dan kembali ke cawangan stabil

Apabila anda telah mencapai but sistem dengan kernel yang stabil dari cabang generik linux (contohnya, siri 5.15.x pada Ubuntu 22.04 LTS), langkah logik seterusnya jika HWE atau kernel tepi telah memberi anda masalah adalah membersihkan cabang sistem tersebut.

Untuk menyahpasang pakej meta HWE, anda boleh menggunakannya membersihkan diri dengan kad bebas yang merangkumi seluruh cabang, seperti:

sudo apt purge linux-generik-hwe-22.04*

Selepas mengalih keluar metapackages tersebut, anda mungkin mahu Padamkan juga imej kernel moden yang anda tidak lagi perlukan.Jika, sebagai contoh, anda ingin menyingkirkan semua kernel yang lebih tinggi daripada 6.x dan memilih siri 5.x, anda boleh menggunakan arahan seperti ini:

sudo apt purge linux-image-6*

Jenis pembersihan ini mengalih keluar pakej imej kernel yang namanya bermula dengan "linux-image-6", jadi adalah dinasihatkan untuk menyemak dengan teliti apa yang akan anda nyahpasang sebelum mengesahkannya. Jangan lupa bahawa Anda mesti mengekalkan sekurang-kurangnya satu cabang yang stabil dan berfungsi, biasanya generik linuxkerana tanpanya sistem boleh kehabisan kernel yang boleh di-boot.

Selepas sebarang pembersihan kernel, adalah penting Kemas kini konfigurasi GRUB untuk menghentikan rujukan entri yang tidak lagi wujud.Jika tidak, anda mungkin menemui pilihan menu yang menunjukkan kernel yang dipadam. Untuk menjana semula fail konfigurasi, gunakan:

sudo update-grub

Jika anda ingin memastikan cawangan generik kekal dipasang, anda boleh memaksa pemasangannya dengan:

sudo apt install linux-generik

Dalam kebanyakan kes, ia akan memberitahu anda bahawa ia telah dipasang, tetapi dengan cara ini anda mengesahkan bahawa metapackage wujud dan anda akan terus menerima kemas kini dan pembetulan keselamatan pada siri stabil tersebut.

Sebagai langkah terakhir, jika anda telah berubah GRUB_DEFAULT kepada indeks atau nama tertentu untuk mengatasi masalah dengan HWE/edge, Anda boleh mengembalikannya kepada nilai lalainya (biasanya 0) mengedit semula /etc/default/grub:

sudo nano / etc / default / grub

Dan meninggalkan baris sebagai:

GRUB_DEFAULT="0"

Kemudian simpan, jalankan sudo update-grub dan mulakan semula dengan sudo reboot supaya sistem but secara normal dengan kernel terkini daripada cawangan generik linux yang telah anda pasang.

Akhirnya, mengawal kernel yang but menggunakan GRUB2 menjadi alat asas bagi mana-mana pengguna Ubuntu, Debian atau derivatif yang tidak mahu bergantung pada kemas kini terkini. Dengan menggabungkan pemasangan versi tertentu, penggunaan "Pilihan lanjutan", pemilihan mengikut indeks atau mengikut nama menu, dan pembersihan cawangan yang bermasalahAnda boleh menyesuaikan teras sistem dengan keperluan sebenar anda: kestabilan yang kukuh pada pelayan, keserasian maksimum pada peralatan moden atau gabungan kedua-duanya yang dikira dalam persekitaran desktop di mana anda tidak mahu mengambil risiko penggunaan harian anda pada kernel eksperimen.

tidak menunjukkan menu GRUB apabila menukar GRUB_TIMEOUT=
artikel berkaitan:
GRUB tidak memaparkan menu selepas menukar GRUB_TIMEOUT: punca dan penyelesaian muktamad