- Binibigyang-daan ka ng GRUB2 na pumili nang may kakayahang umangkop kung aling bersyon ng kernel ang ibo-boot bilang default, gamit ang mga indeks ng menu o ang eksaktong pangalan ng entry.
- Ang paggamit ng mga linux-generic, HWE, at edge branch ay nangangailangan ng pagkontrol sa GRUB upang maiwasan ang mga instabilidad kapag nag-i-install ng mga mas bagong kernel.
- Ang pag-edit ng /etc/default/grub at muling pagbuo ng configuration gamit ang update-grub ang batayan para sa pag-aayos o pagpapanumbalik ng default na kernel.
- Ang pag-uninstall ng mga magkasalungat na kernel at pagpapanatili ng kahit isang matatag na sangay ay nagsisiguro na ang sistema ay mananatiling bootable at ligtas.

Pagpili kung aling bersyon ng kernel ang nagbo-boot bilang default sa Linux Hindi lamang ito isang kakaibang ugali ng mga maingat na administrador: sa maraming pagkakataon, ito ang pagkakaiba sa pagitan ng pagkakaroon ng isang matatag na sistema at pagdurusa sa mga pag-crash, hindi pagkakatugma sa mga graphics driver, o mga pagkabigo sa mga kamakailang hardware. Totoo ito lalo na sa Ubuntu at iba pang mga distribusyon na nakabase sa Debian, kung saan ang mga generic na branch, HWE, at iba pang mga distribusyon ay magkakasamang nabubuhay. mga bersyong pang-eksperimentoHalos sapilitan ang pagkontrol sa GRUB2.
Kapag nag-install ka ng maraming core nang sabay-sabay, Palaging sinusubukan ng GRUB2 na i-boot ang pinakamodernong kernel na magagamit.Ayos lang naman iyon kadalasan, ngunit kung napilitan kang bumalik sa nakaraang bersyon dahil sa isang bug o sirang driver, kakailanganin mong sabihin sa GRUB kung aling entry ang gagamitin bilang default. Sa artikulong ito, titingnan natin nang detalyado at nang hindi nagpapaligoy-ligoy kung paano ito gagawin nang ligtas at permanente, kung anong mga nuances ang dapat mong malaman tungkol sa mga bagong branch ng HWE, at kung paano ito pagsamahin sa iba pang kapaki-pakinabang na trick na may kaugnayan sa GRUB2.
Aling mga bersyon ng kernel ang sinusuportahan ng Ubuntu at bakit ka interesado na baguhin ang mga ito?
Ang Ubuntu ay nagpapanatili ng ilang mga linya ng kernel nang magkasabaydinisenyo para sa iba't ibang sitwasyon. Ang pag-unawa sa iyong na-install ang unang hakbang bago hawakan ang anumang bagay sa GRUB2, dahil ito ang magtatakda kung aling mga entry ang makikita mo sa boot menu at alin ang gusto mong gamitin bilang mga default.
Sa isang banda, naroon ang klasikal na sangay linux-genericIto ang kernel na karaniwang naka-pre-install sa mga server at system kung saan mahalaga ang katatagan. Ito ay mga kernel na pangmatagalan, lubusang nasubukan, at sa mga bersyon ng LTS tulad ng Ubuntu 22.04, kadalasan itong tumutugma sa mga serye tulad ng 5.15.x. Malinaw ang kanilang pilosopiya: mas kaunting sorpresa, mas kaunting pagkasira pagkatapos ng isang update.
Nag-aalok din ang mga desktop computer na Ubuntu ng Mga kernel ng HWE (Hardware Enablement)Ang mga sangay na ito ay naka-install, halimbawa, gamit ang mga utos tulad ng sudo apt install linux-generic-hwe-22.04 at tinatarget nila ang mga mas bagong bersyon ng kernel, tulad ng seryeng 6.5.x sa kaso ng Ubuntu 22.04 LTS, na may layuning suportahan ang mga modernong hardware na wala noong inilabas ang orihinal na LTS.
Kung kailangan mong gumawa ng mas malalim na hakbang, mayroon ding variant hwe-edge, dinisenyo bilang sangay ng "tandig" o dumudugo gilidIto ay naka-install gamit ang mga utos tulad ng sudo apt install linux-generic-hwe-22.04-edge Kadalasan, kasama rito ang mga mas bagong kernel (halimbawa, ang 6.7.x sa Ubuntu 22.04 mismo). Nag-aalok ito ng suporta para sa mga pinakabagong hardware, ngunit kapalit nito ay ang pagtaas ng posibilidad na makatagpo ng mga bug, instabilidad, o kakaibang pag-uugali.
Bagama't isang kernel lamang ang pinapatakbo ng sistema sa isang pagkakataon.Ang mga larawan ng mga sinaunang core ay napanatili sa /boot Parang life insurance policy. Kung sakaling hindi magamit ang computer mo dahil sa update, makakatipid ka sa problema kung makakapag-boot ka sa mas lumang bersyon. Ang problema, kapag nag-install ka ng mas bagong kernel, madalas itong i-boot dito sa bawat pagkakataon, at ang pag-uninstall nito nang hindi nakakapag-boot sa ibang kernel ay maaaring maging isang malaking problema.
Pansamantalang pumili ng ibang kernel mula sa menu ng GRUB2
Bago tayo magsimulang mag-edit ng mga file, mahalagang tandaan na Pinapayagan ka na ng GRUB2 na manu-manong pumili ng isa pang kernel habang nagbo-boot.Kung mayroon kang pisikal na access sa computer at nakakonektang keyboard, kadalasan ay hindi mo na kailangan ng iba pang bagay para subukan ang isang preview na bersyon.
Sa Ubuntu, kapag binubuksan ang makina, Maaari mong ipakita ang menu ng GRUB2 sa pamamagitan ng pagpindot nang matagal sa Shift key. sa unang yugto ng pag-boot. Sa mga tradisyunal na sistema ng BIOS, gumagana ito nang maayos; sa UEFI, kadalasan ay sapat na para sa GRUB na ipakita ang default na menu, ngunit pareho lang ang ideya: ang makita ang listahan ng mga sistema at opsyon.
Sa menu na iyon, karaniwan mong makikita ang unang entry na may ganitong uri Ubuntu, na siyang nagbo-boot ng huling naka-install na kernel, na sinusundan ng isang submenu na tinatawag na Mga advanced na opsyon para sa Ubuntu (Mga advanced na opsyon). Sa loob ng submenu na ito ay nakalista ang lahat ng magagamit na bersyon ng kernel, bawat isa ay may normal na mode at recovery mode.
Kung nagkakaproblema ka sa pinakabagong kernel, Ang karaniwang dapat gawin ay pumunta sa "Advanced options for Ubuntu" at pumili ng mas lumang bersyon (halimbawa, Ubuntu, with Linux 5.15.0-94-generic) sa halip na ang pinakabagong 6.x. Kapag matagumpay na itong nakapag-boot gamit ang bersyong iyon, maaari mong i-uninstall ang mga magkasalungat na kernel at muling buuin ang configuration gamit ang sudo update-grub.
Siyempre, ang manu-manong solusyon na ito ay may problema: Gumagana lamang ito kung maaari kang makipag-ugnayan sa GRUBSa mga server na walang keyboard, mga remote machine, o mga kapaligiran kung saan hindi mo nakikita ang boot console, kailangan mo ng isang persistent method na magsasabi sa GRUB kung aling input ang palaging gagamitin, nang hindi ka tinatanong sa bawat startup.
Ilista ang lahat ng kernel na alam ng GRUB2
Para sa maaasahang pagtatakda ng default na kernel, Una, kailangan mong malaman kung aling mga entry sa menu ang aktwal na na-configure ng GRUB2Hindi sapat ang basta pagtingin lang sa mga naka-install na pakete, dahil maaaring magbago ang mga posisyon sa menu kapag may idinagdag o inalis na mga kernel.
Binubuo ng GRUB2 ang pangunahing menu nito sa file /boot/grub/grub.cfgBagama't hindi inirerekomenda na manu-manong i-edit ito (napapatungan ito kapag pinatakbo mo update-grubOo, maaari mo itong basahin upang kumuha ng impormasyon. Isang napaka-praktikal na utos upang ilista ang mga entry ay:
grep -Ei 'submenu|menuentry ' /boot/grub/grub.cfg | sed -re «s/(.? )'(+)'.*/\1 \2/»
Utos na ito Magbabalik ito ng isang listahan ng lahat ng mga entry at submenu. na lumalabas sa pagsisimula, katulad ng:
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)
Ang unang entry ay karaniwang "Ubuntu" na may pinakamodernong kernelAt sa loob ng submenu na "Advanced options", lilitaw ang lahat ng naka-install na bersyon, nakaayos mula pinakabago hanggang sa pinakaluma. Sa ating halimbawa, kung gusto mong palaging mag-boot gamit ang Ubuntu, with Linux 5.15.0-94-genericAng entry na iyon ay nasa advanced submenu, hindi sa main menu.
Magtakda ng isang partikular na kernel ayon sa posisyon sa menu (mga index ng GRUB_DEFAULT)
Isang klasikong anyo ng tukuyin kung aling kernel GRUB2 ang gustong mag-boot bilang default Kabilang dito ang pagpapahiwatig ng index (posisyon) ng entry, o kahit isang kombinasyon ng "submenu > entry" kapag ang nais na bersyon ay nasa loob ng "Advanced options for Ubuntu".
Ang file na kumokontrol dito ay / etc / default / grubBago gumawa ng anumang pagbabago, lubos na inirerekomenda na gumawa ng mabilisang backup kung sakaling kailangan mong madaling bumalik sa dating estado. Magagawa mo ito gamit ang:
sudo cp / etc / default / grub /etc/default/grub.bak
Susunod, i-edit ito gamit ang iyong paboritong editor, halimbawa gamit ang Nano:
sudo nano / etc / default / grub
Sa loob ay makikita mo ang isang linya na tulad nito GRUB_DEFAULT=0, na nagpapahiwatig na ang unang entry sa pangunahing menu (index zero) ang gagamitin. Kung ang iyong ninanais na kernel ay nasa loob ng submenu na "Advanced options"Maaari mong sabihin sa GRUB na pumasok sa submenu na iyon at pumili ng isang partikular na posisyon gamit ang notasyon submenú>entrada.
Kasunod ng nakaraang halimbawa, kung ang "Advanced options for Ubuntu" ay opsyon 1 sa pangunahing menu at sa loob ng submenu na iyon na "Ubuntu, with Linux 5.15.0-94-generic" ay ang ikatlong opsyon (pagbibilang mula sa zero at paglaktaw sa mga recovery mode), maaari kang sumulat ng ganito:
GRUB_DEFAULT="1>3"
Simple lang ang lohika, ngunit kailangan mong bigyang-pansin ang mga indeks.Ang unang antas ay tumutukoy sa posisyon ng submenu sa pangunahing menu, at ang pangalawa ay tumutukoy sa posisyon ng entry sa loob ng submenu na iyon. Gayundin, tandaan na ang mga entry sa "recovery mode" ay karaniwang staggered, kaya ang mga normal na opsyon ay gumagamit ng mga odd na numero at ang mga opsyon sa pagbawi ay gumagamit ng mga even na numero.
Kapag nagbago ka na GRUB_DEFAULT, i-save ang file (sa Nano, Ctrl + O at pagkatapos ay Ctrl + X) at ilalapat ang mga pagbabago sa pamamagitan ng muling pagbuo ng configuration ng GRUB gamit ang:
sudo update-grub
Sa likod nito, i-restart ang sistema gamit ang sudo reboot at, kapag nag-boot na ito, sinusuri nito kung aling kernel ang na-load:
uname -a
Dapat ipakita sa iyo ng resulta, halimbawa, Linux ... 5.15.0-94-generic ... na nagpapahiwatig na ginagamit mo na ngayon ang bersyong itinakda mo gamit ang mga index sa GRUB_DEFAULT.
Gamitin ang pangalan ng entry sa menu sa halip na mga index ("saved" mode)
Ang pamamaraan ng indeks ay may malaking problema: Nagbabago ang mga posisyon kapag nag-install o nag-uninstall ka ng mga kernelNangangahulugan ito na ang isang pag-update ng kernel ay maaaring gumawa ng iyong 1>3 Itigil ang pag-target sa tamang kernel, na siyang eksaktong dapat mong iwasan kung naghahanap ka ng pangmatagalang katatagan.
Nag-aalok ang GRUB2 ng mas matibay na alternatibo: Gamitin ang eksaktong pangalan ng entry sa menu bilang default na itemSa ganitong paraan, hangga't umiiral ang entry na iyon sa grub.cfgPatuloy itong mapipili kahit na may mga bagong bersyon na idadagdag sa itaas o sa ibaba nito sa listahan.
Ang pangkalahatang ideya ay ito: una Hanapin mo ang buong pangalan ng item sa menu na gusto mo, gaya ng lumalabas sa /boot/grub/grub.cfg (halimbawa Ubuntu, with Linux 6.8.0-60-generic), at pagkatapos ay i-configure mo ang GRUB para gamitin ito bilang naka-save na entry default.
Para mahanap ang eksaktong pangalan, maaari mong buksan ang configuration file gamit ang isang editor o viewer, halimbawa:
sudo nano /boot/grub/grub.cfg
Kapag nasa loob na, Gamitin ang Ctrl+W sa Nano upang hanapin ang string na naaayon sa bersyon ng kernel na interesado ka (halimbawa, "6.8.0-60-generic"). Katulad ng menuentry Makikita mo ang buong pamagat, parang ganito:
menuentry 'Ubuntu, with Linux 6.8.0-60-generic' ...
Ngayon, sa halip na maglaro gamit ang mga indeks, Maaari mong sabihin sa GRUB na gamitin ang pangalang iyon bilang naka-save na seleksyon.Ang karaniwang pamamaraan ay kinabibilangan ng pagpapatupad ng mga utos tulad ng mga sumusunod:
sudo grub-set-default «Ubuntu, na may Linux 6.8.0-60-generic»
Tinutukoy ng utos na ito ang tinukoy na entry bilang ang ituturing na "naka-save na default". Para kumpirmahin na nailapat ito nang tama, maaari mong suriin ang GRUB environment file:
listahan ng sudo grub-editenv
Dapat mong makita ang isang linya na tulad nito:
saved_entry=Ubuntu, with Linux 6.8.0-60-generic
Posible rin na, depende sa nakaraang configuration, Ginagamit ang opsyong GRUB_DEFAULT=saved en /etc/default/grubna nagsasabi sa GRUB na palaging gamitin ang huli naka-save na entry itinatag. Sa anumang kaso, habang ang saved_entry Kung tumutugma ito sa iyong ninanais na kernel, awtomatiko mong ibo-boot ang bersyong iyon.
Pagkatapos ilapat ang mga pagbabagong ito, buuin muli ang configuration file gamit ang sudo update-grubI-restart ang sistema at kumpirmahin muli gamit ang uname -a na nagsimula ka sa bersyong tinukoy bilang default.
Pagpapalit ng kernel sa Ubuntu sa isang partikular na bersyon (pag-install at pag-downgrade)
Sa maraming pagkakataon, hindi mo lang gugustuhing pumili ng naka-install nang kernel, kundi lumipat mula sa iyong kasalukuyang bersyon patungo sa isang partikular na bersyonIto ay maaaring dahil kinakailangan ito ng iyong aplikasyon, dahil sinusuportahan lamang ng isang driver ang isang partikular na serye, o dahil nasira ng isang kamakailang update ang kalahati ng iyong sistema.
Ang unang hakbang ay dapat palaging alamin kung aling kernel ang kasalukuyan mong pinapatakboPara gawin ito, maaari mong gamitin ang mga utos tulad ng:
uname-R
O well:
uname -a
na magbabalik ng ganito:
Linux web 6.8.0-85-generic #85~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC ... x86_64 GNU/Linux
Kapag alam mo na kung nasaan ka, ang susunod na hakbang ay tingnan kung aling mga kernel ang magagamit sa mga repositoryoSa mga kapaligirang Ubuntu/Debian, karaniwang ginagawa ito sa pamamagitan ng pag-query sa mga pakete linux-image mula sa repository, sinasala ayon sa bersyong gusto mo. Kapag nahanap mo na ang partikular na bersyon, maaari mo itong i-install nang direkta gamit ang apt o i-compile ito mismo (tingnan ang Paano maghanap ng mga configuration sa `make menuconfig`), ayon sa gusto mo.
Halimbawa, kung gusto mong bumaba mula sa 6.8.0-85-generic a 6.8.0-60-genericI-install mo ang kaukulang pakete gamit ang naaangkop na utos, na kinukumpirma gamit ang "S" kapag malamang Tatanungin ka nito kung gusto mong ipagpatuloy ang pag-install. Pagkatapos makumpleto ang proseso, Pagkatapos ay magkakaroon ka ng bersyon ng kernel na magagamit para sa pag-bootGayunpaman, patuloy na pipiliin ng GRUB ang pinakabago hanggang sa baguhin mo ang mga setting gaya ng ipinaliwanag.
Pagkatapos i-install ang nais na kernel, i-restart ang computer para maitalaga ito bilang default gamit ang isa sa mga pamamaraan sa itaas (ayon sa index o ayon sa pangalan), alinman ang mas maginhawa at matatag para sa iyong kaso.
Magtakda ng isang partikular na kernel mula sa submenu na "Advanced options" bilang default
Sa mga distribusyon tulad ng Ubuntu 22 at 24, kapag idinagdag ang isang bersyon ng kernel na mas mababa kaysa sa kasalukuyan, Ang bersyong iyan ay hindi nakatakda bilang pangunahing entry.ngunit idinaragdag sa submenu Mga advanced na opsyon para sa UbuntuSamakatuwid, kahit na mag-install ka ng bersyon 6.8.0-60 na mas mababa sa 6.8.0-85, sa pag-restart ay magbo-boot ka pa rin gamit ang bersyon 85.
Kaya nga Awtomatikong pinipili ng GRUB2 ang bersyong gusto mo mula sa submenuKailangan mong malaman ang eksaktong posisyon nito. Muli, ang utos na naglilista ng menuentry y submenu Nakakatulong ito sa iyo na makita ang istruktura at numerikal na pagkakasunud-sunod na gagamitin ng GRUB.
Isipin na pagkatapos patakbuhin ang listing command, matutuklasan mo na ang iyong target na kernel (halimbawa, "Ubuntu, with Linux 6.8.0-60-generic") ay lumalabas sa pang-apat na posisyon ng submenu na "Advanced options", at ang submenu na ito ang una pagkatapos ng pangunahing entry. Sa ganitong kaso, ang kombinasyon ng index, simula sa zero, ay magiging 1> 2 (submenu sa posisyon 1, entry sa posisyon 2 sa loob ng submenu na iyon).
Sa File /etc/default/grubPagkatapos ay babaguhin mo ang linya:
GRUB_DEFAULT=0
sa pamamagitan ng:
GRUB_DEFAULT="1>2"
Pagkatapos i-save ang mga pagbabago at patakbuhin sudo update-grub, Sa susunod na mag-boot ka, awtomatikong mapipili ang partikular na kernel na iyon. sa loob ng "Mga advanced na opsyon", nang hindi kinakailangang manu-manong pumasok sa submenu sa bawat pagkakataon.
Pagkatapos ng pag-restart, maaari mong tiyakin na maayos ang lahat uname-R o uname -a, na bineberipika na ang aktibong bersyon ng kernel ay ang iyong itinakda GRUB_DEFAULT.
I-uninstall ang HWE at edge kernels at bumalik sa stable branch
Kapag nakuha mo na i-boot ang system gamit ang isang stable kernel mula sa linux-generic branch (halimbawa, isang seryeng 5.15.x sa Ubuntu 22.04 LTS), ang susunod na lohikal na hakbang kung ang HWE o mga edge kernel ay nagbigay sa iyo ng mga problema ay ang paglilinis ng mga sangang iyon ng sistema.
Para i-uninstall ang mga metapackage ng HWE, maaari mong gamitin ang angkop na paglilinis na may wildcard na sumasaklaw sa buong branch, tulad ng:
sudo apt purge linux-generic-hwe-22.04*
Pagkatapos tanggalin ang mga metapackage na iyon, malamang na gugustuhin mong Burahin din ang mga larawan ng mga modernong kernel na hindi mo na kailangan.Halimbawa, kung gusto mong tanggalin ang lahat ng kernel na mas mataas sa 6.x at gamitin ang 5.x series, maaari mong gamitin ang command na tulad nito:
sudo apt purge linux-image-6*
Ang ganitong uri ng paglilinis ay nag-aalis ng mga kernel image package na ang pangalan ay nagsisimula sa "linux-image-6", kaya ipinapayong maingat na suriin kung ano ang iyong ia-uninstall bago kumpirmahin. Huwag kalimutan na Dapat kang magpanatili ng kahit isang matatag at gumaganang sangay, kadalasan linux-genericdahil kung wala ito, maaaring maubusan ng mga bootable kernel ang sistema.
Pagkatapos ng anumang paglilinis ng kernel, mahalaga I-update ang configuration ng GRUB para ihinto ang pagtukoy sa mga entry na wala na.Kung hindi, maaaring makakita ka ng mga opsyon sa menu na tumuturo sa mga tinanggal na kernel. Para muling buuin ang configuration file, gamitin ang:
sudo update-grub
Kung gusto mong siguraduhing mananatiling naka-install ang generic branch, maaari mong pilitin ang pag-install nito gamit ang:
sudo apt install linux-generic
Sa karamihan ng mga kaso, sasabihin nito sa iyo na naka-install na ito, ngunit sa ganitong paraan, mapapatunayan mo na umiiral ang metapackage at patuloy kang makakatanggap ng mga update sa seguridad at mga pag-aayos sa stable series na iyon.
Bilang pangwakas na hakbang, kung nagbago ka na GRUB_DEFAULT sa isang index o isang partikular na pangalan upang malampasan ang mga problema sa HWE/edge, Maaari mo itong ibalik sa default na halaga nito (kadalasan 0) muling pag-eedit /etc/default/grub:
sudo nano / etc / default / grub
At iniiwan ang linya bilang:
GRUB_DEFAULT="0"
Pagkatapos ay i-save, patakbuhin sudo update-grub at i-restart gamit ang sudo reboot upang ang sistema ay mag-boot nang normal gamit ang pinakabagong kernel mula sa sangay linux-generic na na-install mo.
Sa huli, ang pagkontrol kung aling kernel ang magbo-boot gamit ang GRUB2 ay nagiging isang pangunahing kagamitan para sa sinumang gumagamit ng Ubuntu, Debian, o derivative na ayaw mapasailalim sa awa ng pinakabagong update. Sa pamamagitan ng pagsasama-sama ng pag-install ng mga partikular na bersyon, ang paggamit ng "Mga Advanced na Opsyon", pagpili ayon sa index o pangalan ng menu, at paglilinis ng mga may problemang sangayMaaari mong iakma ang core ng system sa iyong mga totoong pangangailangan: matibay na katatagan sa mga server, pinakamataas na compatibility sa mga modernong kagamitan, o isang kalkuladong halo ng pareho sa mga desktop environment kung saan ayaw mong ipagsapalaran ang iyong pang-araw-araw na paggamit sa isang experimental kernel.
Masigasig na manunulat tungkol sa mundo ng mga byte at teknolohiya sa pangkalahatan. Gustung-gusto kong ibahagi ang aking kaalaman sa pamamagitan ng pagsusulat, at iyon ang gagawin ko sa blog na ito, ipakita sa iyo ang lahat ng mga pinaka-kagiliw-giliw na bagay tungkol sa mga gadget, software, hardware, teknolohikal na uso, at higit pa. Ang layunin ko ay tulungan kang mag-navigate sa digital na mundo sa simple at nakakaaliw na paraan.




