自己編譯 Linux 內(nèi)核,好像一點(diǎn)用都沒(méi)有?
前言
貌似最近干搬運(yùn)工,播放量有點(diǎn)少。也許是因?yàn)槲夷莻€(gè)視頻口無(wú)遮攔吧:-P
創(chuàng)世紀(jì)樂(lè)隊(duì)的專輯介紹打破了我搬運(yùn)視頻播放量的記錄,而LGR視頻播放量也不盡如人意。
所以大家給點(diǎn)支持吧/可憐

對(duì)了,以后我還會(huì)翻譯視頻的,而我博客更新的東西也都會(huì)放到B站,但鑒于這編輯器功能太差(怎么打表格之類),我不會(huì)都搬運(yùn)過(guò)來(lái)。請(qǐng)大家去我的網(wǎng)站去看吧。
https://www.superbart.xyz/p/complie-linux-kernel-is-useless.html
目錄
為什么我要自己編譯內(nèi)核~ Linux 內(nèi)核的多元化
為啥自己編譯沒(méi)用~性能對(duì)比和優(yōu)劣勢(shì)對(duì)比
如何加速內(nèi)核編譯~使用 modprobed-db 精簡(jiǎn)驅(qū)動(dòng)模塊
我到底配置了啥~給大家看看我改過(guò)的內(nèi)核配置
結(jié)尾
為什么我要自己編譯內(nèi)核~ Linux 內(nèi)核的多元化
很簡(jiǎn)單,下學(xué)期我有門課,叫“操作系統(tǒng)”,據(jù)說(shuō)需要編譯內(nèi)核。實(shí)際上我之前編譯過(guò),但是我沒(méi)有接觸過(guò)設(shè)置,這回想看看我能設(shè)置啥。
不過(guò)我最討厭學(xué)習(xí)了,所以接下來(lái)的才是真正原因233
我玩《黑山起源》,玩起來(lái)很卡。游戲設(shè)置當(dāng)然是調(diào)了,但根據(jù)我之前壓制視頻,我覺(jué)得是內(nèi)核沒(méi)有把我的核顯和 CPU 壓榨干凈(我的電腦是輕薄本)。之前看過(guò)很多帖子,說(shuō)用了特制內(nèi)核,跑起來(lái)能快一些。
這里,我提到了“特制內(nèi)核”。因?yàn)?Linux 內(nèi)核是開(kāi)源的,自然,有人魔改了很多版本。這里介紹四個(gè)版本:
長(zhǎng)期支持版(LTS),為了穩(wěn)定而優(yōu)化的版本,相當(dāng)于 Windows 的 LTSC 版。一般出現(xiàn)在 CentOS 和 Ubuntu 上面。
linux-zen,為了桌面電腦而進(jìn)行過(guò)性能優(yōu)化。我日用這個(gè)版本。
linux-hardened,為了系統(tǒng)安全而優(yōu)化的版本。
linux-libre,為了代碼的絕對(duì)自由而砍掉了很多驅(qū)動(dòng)。
當(dāng)然,如果你是為了應(yīng)付操作系統(tǒng)實(shí)驗(yàn),我建議你還是使用原版吧。首先,網(wǎng)上教程豐富,其次,代碼簡(jiǎn)單易得。
為啥自己編譯沒(méi)用~性能對(duì)比
鑒于我編譯內(nèi)核,最主要的出發(fā)點(diǎn)是加速游戲運(yùn)行,自然我得提供這方面的數(shù)據(jù)了。
我的自制內(nèi)核,基于 linux-zen 內(nèi)核,精簡(jiǎn)了很多沒(méi)必要的驅(qū)動(dòng),以及在電腦管理模塊強(qiáng)制使用性能模式,并根據(jù)我的處理器型號(hào)(AMD Ryzen 4750U),使用了"Zen 2"性能優(yōu)化。
以下跑分均在我的電腦上進(jìn)行,型號(hào)是 Thinkpad T14 ,系統(tǒng)是最新的 Arch Linux ,在接電情況下進(jìn)行。
(跑分成績(jī)請(qǐng)見(jiàn)我博客,啥時(shí)候Bilibili支持表格啊)
由上可見(jiàn),雖然自編譯內(nèi)核相較原版內(nèi)核,有一定的性能提升,但是提升幅度不大。而我還發(fā)現(xiàn),使用強(qiáng)制性能模式會(huì)導(dǎo)致電腦風(fēng)扇長(zhǎng)時(shí)間運(yùn)行,CPU 過(guò)熱現(xiàn)象明顯。而在新內(nèi)核下運(yùn)行《黑山起源》,我覺(jué)得流暢度有些微提升,至少?zèng)]有之前那么卡了。但是我高度懷疑這是某種安慰劑效應(yīng)。
所以,自行編譯內(nèi)核并沒(méi)有達(dá)到我的需求。但這不意味著我白搞了一通,至少編譯內(nèi)核速度快了。 好了,進(jìn)入我這篇文章的寶藏部分捏。
如何加速內(nèi)核編譯~使用 modprobed-db 精簡(jiǎn)驅(qū)動(dòng)模塊
modprobed-db是一個(gè) bash 腳本,他能偵測(cè)你系統(tǒng)目前所使用的模塊,并記錄下來(lái)。在編譯內(nèi)核的時(shí)候,程序只會(huì)編譯我們使用過(guò)的驅(qū)動(dòng)模塊,加速編譯速度,減少內(nèi)核體積。
注意:使用這個(gè)軟件,可能會(huì)精簡(jiǎn)驅(qū)動(dòng)過(guò)頭,導(dǎo)致使用不便。請(qǐng)各位打算使用前,最好稍微了解一下內(nèi)核配置選項(xiàng)。本人僅在Arch Linux下運(yùn)行過(guò)這個(gè)軟件,如果你用的是Ubuntu等系統(tǒng),使用有問(wèn)題的話,請(qǐng)跟我說(shuō)一下。
過(guò)一下編譯內(nèi)核的一般步驟
電腦裝好編譯環(huán)境,一般包括 gcc,make 等。Arch Linux 是要安裝上?
base-devel
?軟件包組和?gcc
?。你需要拖下來(lái)最新穩(wěn)定版的內(nèi)核源代碼,然后進(jìn)入源代碼文件夾:
? 3. 使用以下任意一個(gè)命令,配置內(nèi)核參數(shù):
注意: 很多教程是用make config配置內(nèi)核,本人不推薦。界面太原始了,而且在Arch Wiki上面被標(biāo)記為"被nconfig取代"
? 4. 使用?make -j$n
?命令編譯,這里?$n
?代表你電腦/虛擬機(jī)的核心數(shù)。
? 5. 使用以下兩個(gè)命令來(lái)安裝內(nèi)核:
? 6. 重啟到新內(nèi)核,如果沒(méi)有的話,查看系統(tǒng)引導(dǎo)器設(shè)置。
使用 modprobed-db 精簡(jiǎn)內(nèi)核
獲取 modprobed-db 軟件。Arch Linux 用戶可以使用 AUR 直接安裝?
modprobed-db
?軟件包。如果不是的話,根據(jù)該軟件 Github 所介紹:
? ? ?2. 獲取目前你電腦正在掛載的模塊:
? ? ?3. 在編譯內(nèi)核的時(shí)候,配置內(nèi)核參數(shù)部分,執(zhí)行這個(gè)命令來(lái)關(guān)掉不需要的模塊編譯開(kāi)關(guān)。然后編譯安裝即可。
使用提示
如果你是實(shí)機(jī)運(yùn)行的話,務(wù)必把所有你要使用的設(shè)備都使用上。這里我翻譯一下?Arch Wiki 的原文:
掛載上所有需要用到的文件系統(tǒng)
接上所有需要用到的可移動(dòng)媒體,比如U盤,光驅(qū)等
以上選項(xiàng)包括掛載 ISO 文件,這個(gè)涉及到 loop 模塊和 isofs 模塊
使用電腦上的所有設(shè)備,例如網(wǎng)卡,輸入設(shè)備,電腦攝像頭,移動(dòng)設(shè)備等
使用電腦上的所有應(yīng)用程序,有些程序是需要特定內(nèi)核模塊來(lái)運(yùn)行的,比如虛擬機(jī)
在不同版本/特制的內(nèi)核上運(yùn)行 modprobed-db,也許會(huì)錄入一些其他內(nèi)核沒(méi)有的模塊
我當(dāng)時(shí)沒(méi)有插上我的光驅(qū),就運(yùn)行了這個(gè),結(jié)果新內(nèi)核沒(méi)法讀我的光驅(qū):-P
我到底配置了啥~給大家看看我改過(guò)的內(nèi)核配置
我上面說(shuō)過(guò),使用 modprobed-db 的前提是對(duì)內(nèi)核配置有一定了解,至少需要看到選項(xiàng)的時(shí)候,腦瓜不疼。(如果你是應(yīng)付操作系統(tǒng)實(shí)驗(yàn),我看我們學(xué)校的操作系統(tǒng)資料和小夢(mèng)哥哥的實(shí)驗(yàn)總結(jié)的步驟,我覺(jué)得你要是在虛擬機(jī)下直接搞,應(yīng)該沒(méi)有問(wèn)題)
所以,我來(lái)給大家看一下我的內(nèi)核配置吧,給大家看看我改了什么。這里我用?make nconfig
?配置。
第一個(gè)選項(xiàng)是總體選項(xiàng),是包括了內(nèi)核壓縮,特定版本號(hào)之類的信息。請(qǐng)看xmgg的吧。





其他方面,諸如支持32位可執(zhí)行程序,內(nèi)核安全算法,調(diào)試選項(xiàng)等,我就不說(shuō)啦。
結(jié)尾
雖然自己編譯內(nèi)核,沒(méi)有使游戲性能有很大提升??
但是我由此得到了提升內(nèi)核編譯的一個(gè)途徑,這要將來(lái)節(jié)省時(shí)間卷過(guò)別人不就很方便了嗎??
實(shí)際上我還給內(nèi)核打上了中文補(bǔ)丁,不過(guò)網(wǎng)上很多教程,我就不在這說(shuō)了。給大家個(gè)鏈接看看吧。沒(méi)記錯(cuò)命令是?patch -Np1 < 補(bǔ)丁文件
?。
我還使用了 Arch Linux 的包管理工具,讓整個(gè)過(guò)程更簡(jiǎn)單。具體看這個(gè)。
推薦閱讀
https://wiki.archlinux.org/title/Kernel/Traditional_compilation? Arch Wiki提供的編譯內(nèi)核指南(多系統(tǒng)適用哦)
https://moefactory.com/3041.moe 小夢(mèng)哥哥教大家操作系統(tǒng)實(shí)驗(yàn)啦
https://github.com/LevickCG/Happy-SE-in-XDU/tree/master/OS 我校軟工快樂(lè)學(xué)習(xí)(不是)
SuperBart 2022-02-11 Licensed under CC BY-SA 4.0