久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

linux編譯內核的原因是什么

157次閱讀
沒有評論

共計 2838 個字符,預計需要花費 8 分鐘才能閱讀完成。

這篇文章主要講解了“linux 編譯內核的原因是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“linux 編譯內核的原因是什么”吧!

原因:新的內核修訂了舊內核的 bug,并增加了許多新的特性;如果用戶想要使用這些新特性,或想根據自己的系統度身定制一個更高效,更穩定的內核,就需要重新編譯 Linux 內核。通常,更新的內核會支持更多的硬件,具備更好的進程管理能力,運行速度更快、更穩定,并且一般會修復老版本中發現的許多漏洞等,經常性地選擇升級更新的系統內核是 Linux 使用者的必要操作內容。

為什么要編譯 Linux 內核?

新的內核修訂了舊內核的 bug,并增加了許多新的特性。如果用戶想要使用這些新特性,或想根據自己的系統度身定制一個更高效,更穩定的內核,就需要重新編譯 Linux 內核。

通常,更新的內核會支持更多的硬件,具備更好的進程管理能力,運行速度更快、更穩定,并且一般會修復老版本中發現的許多漏洞等,經常性地選擇升級更新的系統內核是 Linux 使用者的必要操作內容。

為了正確的合理地設置內核編譯配置選項,從而只編譯系統需要的功能的代碼,一般主要有下面四個考慮:

(1)自己定制編譯的內核運行更快(具有更少的代碼)

(2)系統將擁有更多的內存(內核部分將不會被交換到虛擬內存中)

(3)不需要的功能編譯進入內核可能會增加被系統攻擊者利用的漏洞

(4)將某種功能編譯為模塊方式會比編譯到內核內的方式速度要慢一些

這類編譯的目的主要是通過編譯來了解 Linux 內核編譯的過程,熟悉內核的工作原理,甚至還可以嘗試進行一些修改。
編譯只是將源碼編譯成程序,不會替換當前的系統,也不會影響當前系統的運行。

編譯內核可能是出于某種需求,比如對內核大小有要求,去掉內核中某些用不到的部分,這種場景往往是嵌入式系統。
或者自己修改了某部分內核代碼,需要編譯后驗證功能。

模塊編譯時將某些功能模塊編譯成 .ko 可以在不重新編譯內核的情況下,insmod xxx.ko 到系統中使用編寫的代碼功能。
編譯內核后不會替換當前內核,編譯后的新內核往往在類似下面的目錄下,名字大都是 bzImage

/usr/src/kernels/3.xx.x-.x86_64/arch/x86/boot/

然后可以編輯系統的 grub list 添加最新的內核來用它

新內核集成了新驅動, 比如 Intel 核顯:    /lib/modules/`uname -r`/kernel/drivers/gpu/drm/i915/i915.ko

一個系統可以安裝多個內核, 比如啟動文件, 新內核不會覆蓋舊內核:

/boot/vmlinuz-VERSION
/boot/initrd.img-VERSION

安裝新內核過程中,一些內核模塊需要重新編譯,比如 VirtualBox:

/lib/modules/`uname -r`/updates/dkms/vboxdrv.ko

如果新內核運行不正常,可以在開機 GRUB 引導里選擇舊內核啟動。

也可以這樣改回原來使用的內核:

ln -sf /boot/vmlinuz-VERSION /vmlinuz
ln -sf /boot/initrd.img-VERSION /initrd.img

其中 VERSION 是原來內核的版本。

編譯一個 Linux 內核?

整個內核編譯的過程非常簡單,但是內核編譯需要花費比較長的時間。這主要是因為內核的代碼非常多。當然,如果你的計算機性能強勁,時間會短很多。另外需要注意的是,建議在虛擬機環境下編譯,這樣避免錯誤導致系統問題。如果在虛擬機測試,建議系統分區和內核源代碼分區的大小大于 20GB。

Step 1: 下載源代碼

1、進入 Linux 內核的官網,下載最新版本,或者其它版本的內核代碼。這里是源代碼的壓縮包。

2、假設我們現在在一個 Linux 操作系統中,在命令行輸入如下命令就可以下載內核了。

wget  鏈接(由于鏈接會被認為是廣告,本文省略鏈接,請自行復制)

在下載的過程中可以看到下載進度,下載完成后信息大致如下所示。

Step 2: 解壓源代碼

壓縮包下載完成后,可以通過 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

該命令會運行一些腳本,然后打開一個配置界面

linux 編譯內核的原因是什么

4. 下面是打開的配置界面。可以看出里面包含所有的內核組件,包括文件系統,網絡,IO 棧,虛擬化和設備驅動等等。如果你不熟悉,可以不做任何修改。

linux 編譯內核的原因是什么linux 編譯內核的原因是什么

Step 5: 編譯內核

1. 通過如下命令就可以編譯內核了

make -j 10

上面參數是并發數量,通常可以是 CPU 的 2 倍。

linux 編譯內核的原因是什么linux 編譯內核的原因是什么

2. 安裝模塊

sudo make modules_install

linux 編譯內核的原因是什么linux 編譯內核的原因是什么

3. 安裝內核

sudo make install

安裝完成后會有如下提示信息。

linux 編譯內核的原因是什么linux 編譯內核的原因是什么

Step 6: 重啟,驗證版本

當上述步驟都沒有出錯的情況下,我們重啟一下計算機,然后運行如下命令。

uname -mrs

此時就可以看到內核版本已經是我們編譯的版本了。

linux 編譯內核的原因是什么linux 編譯內核的原因是什么

結論?

通過上面幾步,我們可以很簡單的編譯一個內核。如果后面開發內核模塊,也是要基于內核代碼樹的,因此這個是內核開發的基礎。

可能遇到的問題?

編譯內核的時候可能會遇到這個問題:

沒有規則可制作目標
debian/certs/debian-uefi-certs.pem,由 certs/x509_certificate_list 需求停止

在要編譯的內核目錄下編輯一下配置文件即可。簡單的方式是執行如下命令

vim .config

然后找到
CONFIG_SYSTEM_TRUSTED_KEYS,將其設置為空,也就是下面這個樣子。

CONFIG_SYSTEM_TRUSTED_KEYS=”

linux 編譯內核的原因是什么

感謝各位的閱讀,以上就是“linux 編譯內核的原因是什么”的內容了,經過本文的學習后,相信大家對 linux 編譯內核的原因是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-12發表,共計2838字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 长岭县| 利辛县| 宣恩县| 秭归县| 桑植县| 镇原县| 沙湾县| 通渭县| 广饶县| 桓仁| 昭苏县| 江安县| 大洼县| 化州市| 东阳市| 岐山县| 虹口区| 宕昌县| 富裕县| 平度市| 莎车县| 龙南县| 建水县| 潼关县| 保德县| 朝阳县| 嘉定区| 海门市| 盖州市| 鹿邑县| 即墨市| 金山区| 湾仔区| 霍城县| 广州市| 汝阳县| 厦门市| 台湾省| 阆中市| 启东市| 长沙市|