I-download, i-configure, i-compile, at i-install ang Linux kernel nang paunti-unti

Huling pag-update: 17/12/2025
May-akda: Isaac
  • Ang pag-compile ng sarili mong kernel ay nagbibigay-daan sa iyong i-optimize ang performance, security, at support. hardware pagsasaayos ng mga module, file system, at mga partikular na opsyon.
  • Kasama sa karaniwang proseso ang pag-install ng mga dependency, pag-download ng mga source mula sa kernel.org, muling paggamit ng kasalukuyang configuration, at pag-configure gamit ang make menuconfig o xconfig.
  • Mahalagang i-compile at i-install ang kernel at mga module, wastong bumuo ng initramfs, at i-integrate ang bagong kernel sa GRUB upang matiyak ang boot nalinis.
  • Ang pagpapanatili ng mga lumang kernel at pag-alam kung paano i-roll back o alisin ang isang problemang kernel ay susi sa ligtas na pag-eksperimento sa anumang distro.

Gabay sa pag-download, pag-compile at pag-install ng Linux kernel

I-compile ang kernel ng Linux Isa ito sa mga gawaing naghihiwalay sa mausisang gumagamit mula sa taong gusto upang sumisid nang malalim sa operating systemHindi ito sapilitan para sa paggamit ng GNU/Linux araw-araw, ngunit ito ay isang mahusay na paraan upang mas maunawaan kung paano gumagana ang iyong makina, masulit ang hardware, at pinuhin ang sistema ayon sa iyong kagustuhan.

Sa gabay na ito makikita mo, hakbang-hakbang, kung paano Mag-download, mag-configure, mag-compile, at mag-install ng Linux kernel mula sa simula. Tatalakayin natin ang mga distribusyon na nakabase sa Debian (Debian, Ubuntu, Mint, at mga derivatives), pati na rin ang mga pangkalahatang konsepto na naaangkop sa iba pang mga pamilya tulad ng Fedora o CentOS. Susuriin din natin kung bakit mo maaaring gustong gawin ito, kung anong mga tool ang kakailanganin mo, kung paano muling gamitin ang iyong kasalukuyang configuration ng kernel, kung paano isaayos ang mga opsyon para sa Docker o partikular na hardware, at kung paano ibalik kung may magkamali.

Bakit maaaring interesado kang i-compile ang sarili mong kernel

Bago hawakan ang kahit ano, mahalagang maging malinaw sa kung ano ang gusto mo: Hindi laging kinakailangan ang pag-compile ng kernelNgunit may ilang mga nakakahimok na dahilan para gawin ito.

  • pagganap at kahusayanAng pag-alis ng mga driver at feature na hindi mo ginagamit ay maaaring magpabilis sa pag-boot ng iyong system, makakonsumo ng mas kaunting RAM, at makabawas sa latency sa ilalim ng ilang partikular na workload.
  • KatiwasayanAng pag-disable ng mga feature o module na hindi mo kailangan ay nakakabawas sa posibilidad ng pag-atake. Ang mas minimalistang kernel ay, sa maraming konteksto, isang mas ligtas na kernel.
  • Suporta para sa mga partikular na hardwareMinsan, hindi pa kasama sa iyong distribution ang driver na kailangan mo, o kaya naman ay naka-disable ito; sa pamamagitan ng pag-compile ng sarili mong kernel, magagawa mo... i-activate ang suporta para sa iyong hardware (mga network card, RAID, mga device ng imbakan hindi pangkaraniwan, atbp.).
  • Mga espesyal na pag-andarMaaari mong subukan ang isang bagong task scheduler, mga partikular na feature para sa virtualization, Docker, mga container, BPF, io_uring, o anumang iba pang advanced na feature na hindi naka-enable bilang default.
  • Pagkatuto at eksperimentoAng pag-compile ng kernel ay isang napakadaling paraan upang Alamin kung paano inorganisa ang isang sistemang GNU/Linux sa loob ng kumpanya, kung paano inisisimulan ang hardware at kung paano isinasama ang mga module.

Gayunpaman, para sa isang gumagamit sa bahay na gusto lang buksan ang computer, mag-browse sa internet, at wala nang iba pa, Ang pag-compile ng kernel gamit ang kamay ay parang paggamit ng kanyon para pumatay ng mga langaw.Ito ay isang mahaba at maselang proseso, at normal lang na kumain ng kaunting pagkain habang ginagawa ito. kernel panic Bago ito i-fine-tune. Kung mahilig ka sa pag-aayos, sige lang; kung hindi, mas mainam na manatili sa mga opisyal na pakete para sa iyong distro.

Ano nga ba ang Linux kernel?

Ang Linux kernel ang pangunahing bahagi ng sistema: ang software na nasa pagitan ng hardware at ng iba pang mga programaIto ay responsable para sa pamamahala ng memorya, mga proseso, mga file system, mga input/output device, network, seguridad, at marami pang iba.

Nagsimula ang Linux noong 1991 bilang isang personal na proyekto ni Linus Torvalds para lumikha ng isang libreng kernel. Simula noon ay lumago ito nang husto: ngayon ay pinag-uusapan natin ang sampu-sampung milyong linya ng code, na pinapanatili ng libu-libong developer sa ilalim ng lisensya GPLv2Ang sistemang karaniwan nating tinatawag na "Linux" ay talagang kombinasyon ng Linux kernel + mga kagamitang GNU at iba pang mga bahagi na siyang nagtitipon ng pamamahagi.

Kapag nag-compile ka ng custom kernel, ang ginagawa mo ay bumuo ng binary (karaniwan ay /boot/vmlinuz-version) kasama ang isang hanay ng mga modyul sa /lib/mga modyul/bersyon, kasama ang mga file tulad ng System.mapa, Ang config kasama ang ginamit na configuration at ang inisyal na boot image (initrd o initramfs).

Mga pangunahing kagamitang kailangan para sa pag-compile ng kernel

Para makapag-compile ng Linux kernel mula sa source, kailangan mo ng kumpletong development environment. Sa mga sistemang Debian, Ubuntu, at Mint, karaniwang kinabibilangan ito ng pag-install build-essential at ilang karagdagang mga library at utility.

Maraming klasikong gabay ang nagrerekomenda ng mga set tulad ng sumusunod (Maaari mong iakma ang mga ito ayon sa iyong layout.):

  • Minimal na set sa Debian/Ubuntu para sa isang medyo modernong kernel:sudo apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev libudev-dev libpci-dev libiberty-dev dkms openssl bc autoconf
  • Kapaligiran sa packaging ng Debian para bumuo ng mga pakete ng kernel .deb:sudo apt install autoconf automake autotools-dev bison build-essential dh-make debhelper debmake devscripts dpkg fakeroot file gfortran git gnupg fp-compiler lintian patch pbuilder perl quilt xutils-dev

Sa Fedora, CentOS at mga derivativesBahagyang nagbabago ang pamamaraan, ngunit ang ideya ay nananatiling pareho: mag-install ng isang hanay ng mga tool sa pag-unlad at mga library para sa mga configuration interface (teksto at grapiko). Halimbawa, ang mga sumusunod ay karaniwang ginagamit comandos ng estilo:

su -c 'yum groupinstall "Development Tools"'
su -c 'yum install ncurses-devel qt-devel unifdef'

Kung wala ang mga dependency na ito, mabilis na mabibigo ang compilation, kaya ito ay Mahalagang ihanda ang kapaligiran bago i-download ang source code.

Saan ida-download ang source code ng Linux kernel

Ang opisyal na mapagkukunan para sa pagkuha ng kernel code ay kernel.orgMula roon, maaari kang pumili sa pagitan ng mga pangunahing bersyon, matatag, at pangmatagalang suporta (LTS). Ang bawat isa ay may sariling folder at isang link sa isang tarball naka-compress.

  Mga Keyboard Shortcut para Ayusin ang Frozen Laptop

Ilang halimbawa ng descargas na madalas makita Ang mga tutorial ay:

  • Matatag na kernel 6.6 para sa kamakailang pagsubok:
    wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.tar.xz
  • Kernel 6.0.11 (sangay ng v6.x):
    wget https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-6.0.11.tar.xz
  • Kernel 5.10.13 (sangay ng v5.x):
    wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.13.tar.xz

Maaari mo ring i-download ang mga font mula sa mga imbakan ng iyong distribusyonSa Debian/Ubuntu, halimbawa, nariyan ang pakete linux-source:

sudo apt-get install linux-source

Nag-iiwan ito ng isang file na may uri linux-source-xxxtar.bz2 en / usr / srcna maaari mong i-decompress sa katulad na paraan ng kernel.org tarball.

Ihanda ang source tree at disk space

Kapag na-download mo na ang kernel tarball, kailangan mo itong i-extract sa lokasyon kung saan mayroon ka nito sapat na espasyo at mga pahintulot sa pagsulatHindi ka obligado na gamitin ang /usr/src, bagama't ito ay isang klasiko. Maaari kang lumikha, halimbawa, ng isang direktoryo tulad ng ~/Mga Download/my-kernels.

Tandaan na, kapag hindi na-compress, ang source tree ay maaaring nasa paligid 1,5 GBat habang binubuo, madaling lumalampas ang mga bagay sa 7 GBKaya mag-iwan ng sapat na espasyo para sa pagkakamali.

Ilan mga tipikal na halimbawa ng dekompresyon tunog:

  • Gamit ang tar.xz:
    tar avxf linux-6.6.tar.xz
  • Gamit ang tar.bz2:
    tar jxvf linux-2.6.36.tar.bz2 -C /usr/src
  • Gamit ang tar.gz:
    tar zxvf linux-x.x.x.x.tar.gz -C /usr/src

Pagkatapos i-unzip, magkakaroon ka ng direktoryo tulad ng linux-6.6 o linux-5.10.13Maaari kang lumikha ng isang pangkalahatang simbolikong link na tinatawag na linux para maiwasan ang pagiging mabaliw sa mga ruta:

cd /usr/src
sudo ln -s linux-6.0.11 linux

Hindi sapilitan na ilagay ang mga pinagkukunan sa / usr / src, bagama't maraming gabay ang gumagawa nito nang dahil sa tradisyon. Ang compilation at installation ay gagana nang pareho kung gagawin mo ito sa iyong user folder.basta't mayroon kang espasyo at naaangkop na mga permit.

Gamitin muli ang kasalukuyang configuration ng kernel

Ang pag-configure ng kernel mula sa simula, opsyon por opsyon, ay isang walang katapusang gawain kahit para sa mga taong may karanasan. Ang karaniwang gawain ay gamitin muli ang configuration ng kernel na ginagamit mo na bilang panimulang punto.

Para magawa ito, kailangan munang malaman anong kernel ang na-load mo? ngayon na:

uname -r

Ang resulta ay magiging katulad ng 6.1.0-13-amd64 o 4.19.0-6-amd64Gamit ang impormasyong iyon, maaari mong kopyahin ang kasalukuyang configuration mula sa / boot sa direktoryo ng mga bagong decompress na mapagkukunan:

cd linux-6.6
cp /boot/config-$(uname -r) .config

Ang file na iyon .config Ito ang gagamitin ng kernel build system bilang base. Sa mga mas bagong bersyon, kapag pinapatakbo ang mga configuration tool, hihilingin lamang sa iyo ang mga opsyon na wala sa iyong nakaraang kernelna nakakatipid ng malaking oras.

Paano isaayos ang mga setting sa aktwal na hardware

Bukod sa muling paggamit ng kasalukuyang .config file, maaari mo pa itong ayusin nang mas maayos gamit ang mga tool na ibinigay mismo ng kernel tree. Ang isang partikular na kapaki-pakinabang na tool ay gumawa ng localmodconfig, na sumusubok na bumuo ng isang configuration na iniangkop sa mga module na iyong na-load sa sandaling iyon.

Sa loob ng direktoryo ng pinagmulan, patakbuhin lamang ang:

make localmodconfig

Sinusuri ng utos na ito ang mga aktibong modyul at Hindi nito pinapagana ang maraming bagay na hindi ginagamit ng iyong system.Ito ay mainam kung ikaw ay nagko-configure ng kernel para sa partikular na makinang iyon. Kung balak mong mag-compile ng generic na kernel para sa ibang mga makina o server, kakailanganin mong maingat na suriin ito pagkatapos upang matiyak na hindi mo maiiwan ang hardware na wala sa system kung saan ka nagko-compile.

Mga mode ng pag-configure ng kernel: mga kapaligirang teksto at grapiko

Ang pag-configure ng kernel ay maaaring gawin sa maraming paraan. Lahat ng mga ito ay humahantong sa pagbuo o pagbabago ng file. .configNgunit ang karanasan ay ibang-iba depende sa mode:

  • gumawa ng configIsang palatanungan na purong nakabatay sa teksto, tanong por tanong. Sa kasalukuyan, itinuturing na itong praktikal para lamang sa mga partikular na kaso; ito ay mabagal, nakakapagod, at madaling magkamali.
  • gumawa ng menuconfigInterface ng menu na nakabatay sa teksto (ncurses), karaniwan sa mga server o kapag wala kang graphical na kapaligiran. Nag-navigate ka gamit ang mga arrow key, tab, at spacebar.
  • gumawa ng xconfigIsang Qt-based graphical interface, komportable para sa paggamit ng mouse. Mainam kapag nagtatrabaho mula sa isang buong desktop.
  • gumawa ng gconfig: Graphical interface na nakabatay sa GTK, na idinisenyo para sa mga kapaligirang uri-Gnome.

Sa pagsasagawa, gumawa ng menuconfig Ito ang bida sa halos lahat ng gabay dahil gumagana ito sa halos anumang konteksto. Simula sa iyong kinopyang .config file, ang kailangan mo lang gawin ay:

make menuconfig

Makakakita ka ng pangunahing menu na may mga kategorya tulad ng "Uri at mga tampok ng processor," "Mga Driver ng Device," "Mga sistema ng file," "Suporta sa networking," "Virtualization," atbp. Sa loob ng bawat isa, magagawa mong i-activate, i-deactivate o markahan bilang module Ang iba't ibang mga opsyon. Karaniwan:

  • [*] Ang ibig sabihin nito ay "built-in".
  • [M] Ipinapahiwatig nito na "ito ay pinagsama-sama bilang isang loadable module."
  • [] Ito ay "naka-deactivate".

Ang ideya ay isama sa kernel ang kinakailangan upang i-boot ang system (halimbawa, suporta sa root disk), at gumamit ng mga module para sa mga hindi gaanong kritikal na tampok o mga tampok na hindi palaging ginagamitpara mas magaan ang pangunahing butil.

Ang bawat item sa menu ay karaniwang may opsyon na Tulong Ipinapaliwanag nito nang eksakto kung ano ang ginagawa nito at kung minsan ay nagbibigay ng default na rekomendasyon. Kung hindi ka sigurado tungkol sa isang bagay na napaka-espesipiko, pinakamahusay na manatili sa inirerekomendang halaga o sa isa na pinagana na sa nakaraang configuration.

Mga kapaki-pakinabang na setting: mga file system, virtualization, at Docker

Ang isang mahalagang bahagi ng pagpapasadya ng kernel ay ang mahusay na pagpili Anong mga file system, mekanismo ng container, at mga opsyon sa network? Kakailanganin mo ito. Halimbawa, kung plano mong gumamit ng mga partisyon NTFS Sa pagsusulat, kakailanganin mong i-activate ang kaukulang suporta (karaniwang matatagpuan sa "Mga sistema ng file → Mga sistema ng file ng DOS/FAT/EXFAT/NT").

  Kumpletong gabay sa pagkuha ng lisensya ng Windows 10 mula sa BIOS

Kung plano mong gumamit ng virtualization o mga container, may mga bloke ng opsyon na mahalagang suriin. Halimbawa, para sa Docker at Docker Swarm, mayroong ilang mga tungkulin ng mga namespace, cgroup at network na dapat ay aktibo:

  • hirarkiya ng cgroup.
  • CONFIG_NAMESPACES, CONFIG_NET_NS, CONFIG_PID_NS, CONFIG_IPC_NS, CONFIG_UTS_NS.
  • CONFIG_CGROUPS at mga sub-opsyon tulad ng CONFIG_CGROUP_CPUACCT, CONFIG_CGROUP_DEVICE, CONFIG_CGROUP_FREEZER, CONFIG_CGROUP_SCHED, CONFIG_CPUSETS, CONFIG_MEMCG.
  • Pangunahing suporta (CONFIG_KEYS).
  • Mga opsyon sa network tulad ng CONFIG_VETH, CONFIG_BRIDGE, CONFIG_BRIDGE_NETFILTER, CONFIG_NF_NAT_IPV4, CONFIG_IP_NF_FILTER, CONFIG_IP_NF_TARGET_MASQUERADE, CONFIG_NETFILTER_XT_MATCH_ADDRTYPE, CONFIG_NETFILTER_XT_MATCH_CONNTRACK, CONFIG_NETFILTER_XT_MATCH_IPVS, CONFIG_IP_NF_NAT, CONFIG_NF_NAT, CONFIG_NF_NAT_NEEDED.
  • Suporta sa pila ng POSIX (CONFIG_POSIX_MQUEUE).
  • Mga pagpipilian tulad ng CONFIG_IPVLAN para sa ilang partikular na configuration ng network na ginagamit ng Docker.

Karamihan sa mga functionality na ito ay maaaring i-compile bilang isang module nang walang anumang problema, ngunit Maipapayo na suriin ang dokumentasyon ng Docker o gumamit ng mga testing scriptMay mga utility tulad ng check-config.sh na sumusuri sa .config file ng kernel at nagsasabi sa iyo kung ano ang kulang para sa ganap na compatibility ng container.

Ang mga pangunahing mekanika ay magiging:

chmod +x check-config.sh
./check-config.sh .config

Ipapakita sa iyo ng output kung aling mga opsyon ang OK, alin ang nawawala, o alin ang mali ang pagkaka-configure. Kung may makita kang anumang kritikal na hindi pinagana, maaari mo itong patakbuhin muli. gumawa ng menuconfig o gumawa ng xconfig, itama ito, i-save at ulitin ang beripikasyon.

Mga kawili-wiling pagpapabuti sa mga kamakailang bersyon ng kernel

Bukod sa pagpapasadya, maraming tao ang nagko-compile ng mga bagong bersyon ng kernel upang Samantalahin ang mga pagpapabuti sa pagganap at mga bagong tampok na mangangailangan pa rin ng ilang oras bago makarating sa mga pakete ng iyong distribusyon.

Halimbawa, sa drama 6.6 Nabanggit ang mga pagpapabuti tulad ng:

  • Kapansin-pansing pagtaas ng pagganap sa EXT4, na may mga pagtaas na hanggang 34% sa ilang sabay-sabay na write load.
  • Mga pagpapabuti sa suporta ng GPU NVIDIA gamit ang libreng driver Nouveau, inihahanda ang lupa para sa driver ng NVK (Vulkan).
  • Mga pagpipilian para sa i-configure ang mga aspeto ng BIOS mula sa kagamitan ng HP nang direkta mula sa Linux.
  • Mga setting ng pag-iiskedyul ng cluster para sa mga hybrid processor Intel (Lawa ng Alder, Lawa ng Raptor at mas huli).
  • Pag-optimize ng direktang asynchronous I/O gamit ang io_uring, na may pagtaas ng pagganap na humigit-kumulang 37% sa ilang partikular na pagsubok.
  • Isang bagong tagaplano ng gawain, EEVDF (Earliest Eligible Virtual Deadline Una), na nagpapabuti sa alokasyon ng CPU sa pagitan ng mga proseso.

Ang lahat ng ito ay "galing agad" sa mga modernong bersyon, ngunit ang iyong distribusyon ay maaaring matagalan bago ito maimpake o mapagana, kaya naman maraming tao ang gumagamit nito mano-manong i-compile ang isang mas bagong kernel.

Pag-compile ng kernel: paggawa, mga module, at mga thread ng compilation

Kapag naayos mo na ang gusto mong configuration, oras na para paganahin ang CPU. Dito papasok ang mga utos. gumawa Klasikong compilation ng kernel. Ang compilation ay maaaring tumagal kahit saan mula ilang minuto hanggang mahigit isang oras, depende sa hardware at kung gaano karaming mga module ang iyong binubuo.

Sa esensya, ang pangunahing daloy Sa Debian/Ubuntu (o iba pang distro) kadalasan ay:

  • I-compile ang kernel (pangunahing larawan):
    make -j$(nproc)
    O, kung gusto mo itong gumamit lamang ng isang core:
    make
  • I-compile at i-install ang mga module:
    sudo make modules_install

Ang pagpipilian -j$(nproc) Sinasabi nito sa make na gumamit ng kahit gaano karaming parallel processes gaya ng mga core ng iyong CPU, na nakakatipid ng maraming oras sa mga modernong makina. Kung makakita ka ng mga error habang nagko-compile, kakailanganin mong suriin ang mga ito sa punto kung saan sila nabigo; maaaring dahil ito sa nawawalang mga dependency, magkasalungat na mga configuration, o mga partikular na bug sa bersyong iyon ng kernel.

Ang ilang mas advanced na mga recipe ay gumagamit ng Debian tool make-kpkg at ang pakete kernel-package para i-package ang kernel sa mga .deb file. Pagkatapos, magbibigay-daan ito sa iyong i-install at i-uninstall ang custom na kernel na parang isa lamang itong ibang package, na may katulad na:

fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
cd /usr/src
sudo dpkg -i *.deb

Sa sitwasyong iyon, karaniwan din na makaranas ng mga error na may kaugnayan sa mga sertipiko ng kernelMaraming gabay ang lumulutas ng mga partikular na problema sa pamamagitan ng pag-disable ng mga trusted key sa .config file na may linyang tulad nito:

sed -i '/CONFIG_SYSTEM_TRUSTED_KEYS/s/^/#/g' .config

I-install ang bagong na-compile na kernel at i-update ang bootloader

Kung hindi ka gumagamit ng .deb packaging at "bareback" ka lang gamit ang mga karaniwang kernel tree tool, ang Ang pag-install ay direktang ginagawa mula sa direktoryo ng pinagmulanAng pinakakaraniwang pagkakasunod-sunod pagkatapos ng compilation ay:

  • I-install ang mga module (kung hindi mo pa nagagawa):
    sudo make modules_install
  • I-install ang kernel:
    sudo make install

Kokopyahin ng sariling scripting system ng kernel ang binary bzLarawan nabubuo sa /boot, kasama ang System.map at ang configuration file. Sa Debian/Ubuntu, ang mga script ay karaniwang nati-trigger sa /etc/kernel/postinst.d na bumubuo ng initramfs at awtomatikong i-update ang boot manager (GRUB).

Gayunpaman, hindi kailanman masakit na tahasang isagawa:

sudo update-initramfs -u
sudo update-grub
sudo update-grub2

Gamit ito Sisiguraduhin mong ang unang boot image ay na-regenerate nang tama. para sa bagong bersyon ng kernel, at isinasaalang-alang ito ng GRUB sa menu nito. Sa iba pang mga distribusyon, tulad ng ilan na nakabatay sa Red Hat, maaari itong gamitin mkinitrd o dracut sa halip na update-initramfs, ngunit ang layunin ay pareho: lumikha ng isang initrd/initramfs na imahe na angkop para sa bagong kernel.

Ang papel ng initrd/initramfs at mga potensyal na problema

Ang initrd o initramfs ay isang imahe ng file system na nilo-load sa memorya nang napakaaga sa proseso ng pag-bootNaglalaman ito ng mga minimum na driver na kinakailangan upang mai-mount ang aktwal na root file system (halimbawa, suporta para sa SATA o NVMe controller kung saan matatagpuan ang iyong / partition).

  Ano ang maaari kong gawin upang harangan ang pag-access sa Facebook? Paano tanggalin ang restricted access sa Facebook?

Kung ang iyong initrd ay hindi tama ang pagkakagawa o hindi naglalaman ng mga kinakailangang module, ang kernel ay magbo-boot ngunit hindi makaka-mount / at magtatapos ka sa isang kernel panic nagrereklamo na hindi niya mahanap ang ugat filesystem. Ito ay isang tipikal na error kapag ang mga kritikal na opsyon sa kernel ay hindi pinagana o ang initramfs ay nakakalimutan pagkatapos baguhin ang mga bersyon.

Sa Debian/Ubuntu, ang utos na sanggunian ngayon ay update-initramfs:

sudo update-initramfs -c -k x.x.x

Parameter -c lumilikha ng isang bagong imahe, at -k ay nagpapahiwatig ng eksaktong bersyon ng kernel. Sa mga mas lumang distribusyon (o gamit ang iba't ibang mga tool) ginamit ito mkinitrd na may katulad na sintaks:

cd /boot
mkinitrd -o initrd.img-2.6.36 2.6.36

Sa anumang kaso, kung pagkatapos i-install ang iyong custom na kernel ay makakita ka ng mga error na may kaugnayan sa /lib/modules o sa pag-mount ng root, Una, tingnan ang initramfs/initrd at ang configuration ng GRUB. bago hawakan ang anumang bagay.

Tiyaking gumagana nang tama ang bagong kernel

Kapag naka-install na ang lahat at na-update na ang boot manager, oras na para mag-reboot para subukan ang system. Habang nagsisimula, subaybayan ang mga mensahe sa pag-boot ng GRUB at kernel kung sakaling lumitaw ang mga error mula sa mga module, file system o device na hindi nakikilala.

Kapag nasa loob na ng sistema, maaari mong suriin kung aling bersyon ng kernel ang iyong ginagamit:

uname -a

Dapat ipakita ng output ang bagong pinagsamang bersyonMula roon, kailangan mong subukan ang iyong mga karaniwang serbisyo: web server, mga database, Docker, virtual machinemga programa sa desktop, atbp. Kung gumagana nang tama ang lahat, maaari mong iwanan ang kernel na iyon bilang pangunahing kernel at panatilihin ang mga lumang bersyon bilang mga backup.

Paano bumalik sa dating kernel at i-uninstall ang bago

Kung may magkamali (na maaaring mangyari, lalo na sa mga unang pagkakataon), ang mahalaga ay Huwag mag-panicHangga't nakalista sa iyong GRUB ang iba pang gumaganang kernel, maaari mong i-recover ang system nang walang masyadong abala.

Ang proseso tipikal ay:

  1. I-restart ang system.
  2. Sa screen ng GRUB, igalaw gamit ang mga arrow at pumasok sa seksyong uri "Mga advanced na opsyon para sa…".
  3. Pumili ng mas lumang bersyon ng kernel na alam mong gumana nang maayos.
  4. Mag-boot gamit ang kernel na iyon at, kapag nasa loob na, magpatuloy upang burahin ang problemang kernel.

Kung manu-mano mong in-install ang kernel, nang walang .deb packages, ang pag-alis ay karaniwang kinabibilangan ng burahin ang mga kaukulang file sa /boot at /lib/modulesHalimbawa, para tanggalin ang isang 6.6.0, maaari mong gawin ang mga sumusunod:

cd /boot
sudo rm config-6.6.0 initrd.img-6.6.0 System.map-6.6.0 vmlinuz-6.6.0

At pagkatapos, tanggalin ang mga module nito:

cd /lib/modules
sudo rm -rf 6.6.0

Kapag tapos na, i-update ang GRUB para hindi na nito i-offer ang kernel na iyon sa menu at i-reboot:

sudo update-grub
sudo update-grub2
sudo reboot

Kung na-install mo ang kernel na naka-package bilang .deb, mas malinis ito. Gamitin ito tulad ng ibang pakete Gamitin ang apt o dpkg para i-uninstall ito, para mas makontrol ang estado ng sistema.

Mga tala para sa iba pang mga distribusyon: Fedora, CentOS at iba pa

Bagama't ang gabay na ito ay nakatuon nang husto sa Debian/Ubuntu/Mint, ang pangkalahatang lohika ay magkatulad sa mga distribusyon na nakabase sa Red Hat tulad ng Fedora o CentOS. Anong mga pagbabago ang mga tool sa pamamahala ng pakete, ilang pangalan ng dependency, at kung paano ma-access ang boot manager.

Sa Fedora/CentOS, halimbawa, ang isang pangunahing daloy ng trabaho para sa pag-compile ng kernel mula sa kernel.org ay maaaring:

  • I-install ang mga tool sa pag-unlad:
    su -c 'yum groupinstall "Development Tools"'
    su -c 'yum install ncurses-devel qt-devel unifdef'
  • Mag-download ng stable na bersyon (tulad ng 2.6.36 sa mga klasikong halimbawa):
    cd /tmp
    wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.tar.bz2
  • I-unzip at ihanda ang source tree:
    mkdir /usr/src/linux
    tar -xjvf linux-2.6.36.tar.bz2 -C /usr/src/linux
    cd /usr/src/linux
  • I-configure ang kernel gamit ang menuconfig, xconfig, o gconfig.
  • I-compile at i-install:
    make
    make modules
    make modules_install
    make install

Pagkatapos ay kailangan mong suriin at i-edit /boot/grub/grub.conf (o ang katumbas na file, depende kung gagamit ka ng GRUB Legacy, GRUB2, atbp.) para magdagdag ng entry para sa bagong kernel kasama ang kaukulang initrd nito, na maingat na isinasaalang-alang ang mga path ng ugat = at mga sanggunian sa mga logical volume kung gagamit ka ng LVM.

Ang pag-compile, pag-configure, at pag-install ng custom na Linux kernel ay isang mahaba ngunit lubhang nakapagtuturong proseso: pinipilit ka nitong maunawaan kung aling mga module ang kailangan mong i-boot, kung aling mga opsyon ang mahalaga para sa iyong mga serbisyo (tulad ng Docker o virtualization), kung paano isinasama ang initramfs at GRUB sa proseso ng boot, at kung paano palaging mapanatili ang isang fallback option upang bumalik sa isang nakaraang kernel kung may magkamali. Kung maglalaan ka ng oras upang suriin ang bawat seksyon, matalinong muling gagamitin ang iyong kasalukuyang configuration ng kernel, at masasanay sa unti-unting pagsubok ng mga pagbabago, maaari kang magtapos sa pagtamasa ng isang tunay na makapangyarihang sistema. mas na-optimize, iniayon sa iyong hardware at nakahanay sa iyong mga tunay na pangangailangan kaysa sa ibinibigay ng mga generic na kernel ng karamihan sa mga distribusyon.