Sebab: Kernel baharu telah menyemak semula pepijat kernel lama dan menambah banyak ciri baharu jika pengguna mahu menggunakan ciri baharu ini, atau mahu menyesuaikan sistem yang lebih cekap dan stabil mengikut kernel sistem mereka sendiri , anda perlu menyusun semula kernel Linux. Biasanya, kernel yang lebih baru akan menyokong lebih banyak perkakasan, mempunyai keupayaan pengurusan proses yang lebih baik, berjalan dengan lebih pantas dan lebih stabil, dan secara amnya akan membetulkan banyak kelemahan yang terdapat dalam versi yang lebih lama. Kerap memilih untuk menaik taraf kepada kernel sistem yang lebih baharu .
Persekitaran pengendalian tutorial ini: sistem Ubuntu 18.04, komputer Dell G3.
Inti baharu membetulkan pepijat kernel lama dan menambah banyak ciri baharu. Jika pengguna ingin menggunakan ciri baharu ini, atau ingin menyesuaikan kernel yang lebih cekap dan stabil kepada sistem mereka sendiri, mereka perlu menyusun semula kernel Linux.
Biasanya, kernel yang dikemas kini akan menyokong lebih banyak perkakasan, mempunyai keupayaan pengurusan proses yang lebih baik, berjalan lebih pantas dan lebih stabil, dan secara amnya membetulkan banyak kelemahan yang terdapat dalam versi lama, dsb., dengan kerap Memilih untuk menaik taraf kernel sistem operasi yang diperlukan untuk pengguna Linux.
Untuk menetapkan pilihan konfigurasi kompilasi kernel dengan betul dan munasabah, supaya hanya menyusun kod untuk fungsi yang diperlukan oleh sistem, secara amnya terdapat empat pertimbangan berikut:
(1) Kernel tersuai anda sendiri berjalan lebih cepat (mempunyai kurang kod)
(2) Sistem akan mempunyai lebih banyak memori (bahagian kernel tidak akan ditukar kepada maya memori)
(3) Menyusun fungsi yang tidak diperlukan ke dalam kernel boleh meningkatkan kelemahan yang boleh dieksploitasi oleh penyerang sistem
(4) Meletakkan beberapa jenis Menyusun fungsi ke dalam modul akan menjadi lebih perlahan daripada menyusunnya ke dalam kernel
Tujuan penyusunan jenis ini adalah terutamanya untuk memahami proses penyusunan kernel Linux melalui penyusunan dan membiasakan diri dengan kerja prinsip kernel, dan anda juga boleh cuba membuat beberapa pengubahsuaian.
Kompilasi hanya menyusun kod sumber ke dalam atur cara Ia tidak akan menggantikan sistem semasa, dan ia tidak akan menjejaskan operasi sistem semasa.
Menyusun kernel mungkin disebabkan oleh keperluan tertentu, seperti keperluan saiz kernel dan mengalih keluar beberapa bahagian kernel yang tidak digunakan Senario ini selalunya adalah sistem terbenam.
Atau anda telah mengubah suai beberapa bahagian kod kernel dan perlu mengesahkan fungsi selepas penyusunan.
Apabila menyusun modul, beberapa modul fungsi disusun ke dalam .ko Anda boleh memasukkan xxx.ko ke dalam sistem untuk menggunakan fungsi kod bertulis tanpa menyusun semula kernel.
Menyusun kernel tidak akan menggantikan kernel semasa yang disusun kernel selalunya dalam direktori yang serupa dengan yang di bawah Kebanyakan nama adalah bzImage
/usr/src/kernels/3.xx.x-.x86_64/arch/x86/boot/
senarai grub untuk menambah kernel terkini Gunakannya
Inti baharu menyepadukan pemacu baharu, seperti paparan teras Intel: /lib/modules/`uname -r`/kernel/drivers/gpu/drm/i915/. i915.ko
Sistem boleh memasang berbilang kernel, seperti fail permulaan Kernel baharu tidak akan menimpa kernel lama:
/boot/vmlinuz-VERSION /boot/initrd.img-VERSION
Semasa pemasangan kernel baharu, beberapa kernel. modul perlu disusun semula, seperti VirtualBox:
/lib/modules/`uname -r`/updates/dkms/vboxdrv.ko
Jika kernel baharu tidak berjalan dengan betul, anda boleh memilih kernel lama untuk dimulakan dalam proses but GRUB.
Anda juga boleh menukar kembali kepada kernel asal seperti ini:
ln -sf /boot/vmlinuz-VERSION /vmlinuz ln -sf /boot/initrd.img-VERSION /initrd.img
di mana VERSION ialah versi kernel asal.
Keseluruhan proses penyusunan kernel adalah sangat mudah, tetapi penyusunan kernel mengambil masa yang lama. Ini terutamanya kerana kernel mempunyai banyak kod. Sudah tentu, jika komputer anda berkuasa, masa akan menjadi lebih singkat. Perkara lain yang perlu diambil perhatian ialah disyorkan untuk menyusun dalam persekitaran mesin maya untuk mengelakkan ralat yang boleh menyebabkan masalah sistem. Jika menguji dalam mesin maya, Adalah disyorkan bahawa saiz partition sistem dan partition kod sumber kernel lebih besar daripada 20GB.
Langkah 1: Muat turun kod sumber
1 Masukkan tapak web rasmi kernel Linux dan muat turun versi terkini, atau versi lain kod kernel. Berikut ialah arkib termampat kod sumber.
2. Andaikan bahawa kita kini berada dalam sistem pengendalian Linux Masukkan arahan berikut pada baris arahan untuk memuat turun kernel.
wget 链接(由于链接会被认为是广告,本文省略链接,请自行复制)
Anda boleh melihat kemajuan muat turun semasa proses muat turun Selepas muat turun selesai, maklumat adalah secara kasar seperti yang ditunjukkan di bawah.
Langkah 2: Nyahzip kod sumber
Selepas pakej termampat dimuat turun, ia boleh dinyahmampat melalui arahan tar.
tar xvf linux-5.9.6.tar.xz
在解压的时候可以看到文件列表,这个会很多,可能需要等一会儿。
Step 3: 安装需要的软件包
安装编译工具以及其它一下依赖的软件包,在Ubuntu 18.04环境下执行如下命令。
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
如果一切顺利,大概安装输出信息如下所示。
Step 4: 配置内核代码
在编译内核之前,我们可以对内核源代码进行配置。配置的目的主要是确定哪些模块会编译到内核当中。
1. 进入源代码目录
cd linux-5.9.6
2. 从当前机器的启动目录拷贝配置信息到源代码目录。这步操作的意思是我们编译内核的配置采用用当前环境一致的配置。
cp -v /boot/config-$(uname -r) .config
3. 可以通过如下命令启动配置界面
make menuconfig
该命令会运行一些脚本,然后打开一个配置界面
4. 下面是打开的配置界面。可以看出里面包含所有的内核组件,包括文件系统,网络,IO栈,虚拟化和设备驱动等等。如果你不熟悉,可以不做任何修改。
Step 5: 编译内核
1. 通过如下命令就可以编译内核了
make -j 10
上面参数是并发数量,通常可以是CPU的2倍。
2. 安装模块
sudo make modules_install
3. 安装内核
sudo make install
安装完成后会有如下提示信息。
Step 6: 重启,验证版本
当上述步骤都没有出错的情况下,我们重启一下计算机,然后运行如下命令。
uname -mrs
此时就可以看到内核版本已经是我们编译的版本了。
结论
通过上面几步,我们可以很简单的编译一个内核。如果后面开发内核模块,也是要基于内核代码树的,因此这个是内核开发的基础。
可能遇到的问题
编译内核的时候可能会遇到这个问题:
没有规则可制作目标
debian/certs/debian-uefi-certs.pem,由certs/x509_certificate_list需求停止
在要编译的内核目录下编辑一下配置文件即可。简单的方式是执行如下命令
vim .config
然后找到
CONFIG_SYSTEM_TRUSTED_KEYS,将其设置为空,也就是下面这个样子。
CONFIG_SYSTEM_TRUSTED_KEYS=”
相关推荐:《Linux视频教程》
Atas ialah kandungan terperinci Mengapa linux menyusun kernel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!