Linux內核編譯安裝 - Deepin,Debian系

為什么要自己編譯內核

優點

  • 定制化:你可以根據自己的硬件和需求配置內核,去掉不必要的模塊,優化性能。
  • 性能優化:移除不需要的驅動程序和特性,減小內核體積,提高系統性能。
  • 最新特性和修復:獲取最新的內核版本和特性,或者提前應用一些補丁。
  • 學習機會:通過編譯內核,可以更深入地理解Linux的內部工作機制。

缺點

  • 復雜性:編譯和配置內核需要較高的技術水平,過程復雜且容易出錯。
  • 時間消耗:編譯內核是一個耗時的過程,尤其是在資源有限的系統上。
  • 維護成本:自己編譯的內核需要手動更新和維護,缺乏自動化工具的支持。
  • 兼容性問題:手動配置不當可能導致硬件或軟件兼容性問題,需要仔細測試。

我的感受是

  • 了解到內核相關的知識。
  • 提前使用到最新版本的內核,不用等論壇大佬的更新:
    在這里插入圖片描述
  • 內核體積大大縮小: 在這里插入圖片描述

過程

下載

網站下載linux內核源碼[^1] [^2],并解壓,進入源碼目錄;
https://www.kernel.org/
https://mirrors.tuna.tsinghua.edu.cn/kernel/v6.x/

安裝依賴

參考腳本安裝依賴[^3];

sudo apt install git wget fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison zstd debhelper

配置文件

  1. 使用現有配置文件dppve.config[^3]
cp /xxx/dppve.config .config
  1. 精簡(可選)
    先讓系統盡可能多地加載模塊,使用工具自動保留已加載的模塊[^5] [^6];
make localmodconfig
  1. 手動調整配置(可選)
make menuconfig
  1. 使用ccache加速多次編譯(可選)
    安裝配置ccache[^7] [^8];
sudo apt-get install ccache
export CC="ccache gcc"
export CXX="ccache g++" 

編譯

這個步驟很慢,網友講可能需要1-3個小時;
可能是我直接在實體機上編譯的原因,我第一次編譯大約花費25分鐘;
經過localmodconfig、ccache后,后續編譯時間一般在2-8分鐘,感覺很快;

make -j$(nproc)

打包deb

make bindeb-pkg

安裝文件在源碼文件夾同級目錄生成

默認配置生成的linux-image deb文件約80M,localmodconfig后約20M;

在這里插入圖片描述

安裝

安裝軟件包[^9],linux-libc-dev可不安裝;

# 查看
ls -lh ../linux-*.deb
# 安裝
dpkg -i ../linux-*.deb

啟用

可使用grub-customizer管理grub配置,更換內核加載
列表
在這里插入圖片描述
設置
在這里插入圖片描述

References

[^1]. The Linux kernel archives. (n.d.). https://www.kernel.org/
[^2]. 8.10. 編譯內核. (n.d.). https://www.debian.org/doc/manuals/debian-handbook/sect.kernel-compilation.zh-cn.html
[^3]. kernel_config · AtomGit_開放原子開源基金會代碼托管平臺. (n.d.). https://atomgit.com/fslong/kernel_config/
[^4]. Kernelconfig.io. (n.d.). https://www.kernelconfig.io/index.html
[^5]. Linux 內核編譯 —— make localmodconfig 簡化內核配置流程-CSDN博客. (n.d.). https://blog.csdn.net/maijian/article/details/6202426
[^6]. 精簡LINUX內核配置及快速編譯的方法匯總_linux 最小配置 快速編譯-CSDN博客. (n.d.). https://blog.csdn.net/exiaoqian/article/details/42522653
[^7]. 使用 ccache 加速內核編譯. (n.d.). https://www.expoli.tech/articles/2023/07/06/Use-ccache-to-speed-up-kernel-compilation
[^8]. Linux 5.10.20 上使用ccache加快內核編譯速度(安裝配置及使用方法)_kernel-5.10編譯慢-CSDN博客. (n.d.). https://blog.csdn.net/weixin_48299611/article/details/115563624
[^9]. 查看、安裝、卸載內核-論壇-深度科技. (n.d.). https://bbs.deepin.org/post/243646

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44910.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44910.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44910.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

什么是開放最短路徑優先(OSPF)

OSPF是一種典型的鏈路狀態路由協議,一般在同一個路由域中使用。這里的路由域指的是一個自治系統(AS),是指一組通過統一的路由策略或協議相互交換路由信息的網絡。在這個自治系統(AS)中,所有的OS…

【Leetcode】最小數字游戲

你有一個下標從 0 開始、長度為 偶數 的整數數組 nums ,同時還有一個空數組 arr 。Alice 和 Bob 決定玩一個游戲,游戲中每一輪 Alice 和 Bob 都會各自執行一次操作。游戲規則如下: 每一輪,Alice 先從 nums 中移除一個 最小 元素&…

等保測評是做什么的

等保測評的定義和目的 等保測評,全稱為信息安全等級保護測評,是依據國家信息安全等級保護規范規定,由具有資質的測評機構對信息系統安全等級保護狀況進行檢測評估的活動。等保測評的目的是驗證網絡系統或應用是否滿足相應的安全保護等級要求…

【Linux】System V消息隊列 System V信號量

👦個人主頁:Weraphael ?🏻作者簡介:目前正在學習c和算法 ??專欄:Linux 🐋 希望大家多多支持,咱一起進步!😁 如果文章有啥瑕疵,希望大佬指點一二 如果文章對…

前端 JS 經典:小數運算不精確

原因:計算機對小數的存儲是二進制的,有限位數的二進制做算法得到的是有限位數,無限位數的二進制做運算,得到的是無限位數。 如下:0.5 和 0.25 轉二進制是有限位數,0.3 和 0.2 轉二進制是無限位數。 (0.5)…

Spark調度底層執行原理詳解(第35天)

系列文章目錄 一、Spark應用程序啟動與資源申請 二、DAG(有向無環圖)的構建與劃分 三、Task的生成與調度 四、Task的執行與結果返回 五、監控與容錯 六、優化策略 文章目錄 系列文章目錄前言一、Spark應用程序啟動與資源申請1. SparkContext的創建2. 資…

力扣1111.有效括號的嵌套深度

力扣1111.有效括號的嵌套深度 棧模擬 對于每個括號求出深度 奇數深度存入A&#xff0c;偶數深度存入B這樣最大程度降低最大深度 class Solution {public:vector<int> maxDepthAfterSplit(string s) {//因為棧中只會存(的數量 所有用一個變量即可int d 0;vector<i…

Python | Leetcode Python題解之第233題數字1的個數

題目&#xff1a; 題解&#xff1a; class Solution:def countDigitOne(self, n: int) -> int:# mulk 表示 10^k# 在下面的代碼中&#xff0c;可以發現 k 并沒有被直接使用到&#xff08;都是使用 10^k&#xff09;# 但為了讓代碼看起來更加直觀&#xff0c;這里保留了 kk,…

C語言內存管理深度解析面試題及參考答案(2萬字長文)

在嵌入式面試時,C語言內存管理是必問面試題,也是難點,相關知識點可以參考: C語言內存管理深度解析??????? 下面整理了各種類型的C語言內存管理的面試題: 目錄 全局變量和局部變量在內存中分別存儲在哪個區域? 靜態變量和全局變量有什么區別? 什么是作用域?…

ORM Bee,如何使用Oracle的TO_DATE函數?

ORM Bee,如何使用Oracle的TO_DATE函數? 在Bee V2.4.0,可以這樣使用: LocaldatetimeTable selectBeannew LocaldatetimeTable();Condition conditionBF.getCondition();condition.op("localdatetime", Op.ge, new TO_DATE("2024-07-08", "YYYY-MM-DD&…

如何選擇適合的分布式鎖技術

1. Redis鎖 優勢&#xff1a; 性能高&#xff1a;Redis作為內存數據庫&#xff0c;讀寫速度非常快&#xff0c;因此Redis鎖在性能上表現優異。 實現方便&#xff1a;Redis提供了豐富的命令集&#xff0c;可以方便地實現分布式鎖的邏輯。 劣勢&#xff1a; 可靠性&#xff1a…

Excel第31享:基于left函數的截取式數據裂變

1、需求描述 如下圖所示&#xff0c;在“Excel第30享”中統計2022年YTD各個人員的“上班工時&#xff08;a2&#xff09;”&#xff0c;需要基于工時明細表里的“日期”字段建立輔助列&#xff0c;生成“年份”字段&#xff0c;本文說明“年份”字段是怎么裂變而來的。 下圖為…

systemverilog的關聯數組

關聯數組定義 在 SystemVerilog 中&#xff0c;關聯數組&#xff08;Associative Arrays&#xff09;是一種非常靈活的數據結構&#xff0c;它可以使用任意類型的鍵&#xff08;key&#xff09;來索引數組中的元素。這使得關聯數組特別適合于實現類似哈希表&#xff08;hash t…

圖像處理:使用 OpenCV-Python 卡通化你的圖像(2)

一、說明 在圖像處理領域&#xff0c;將圖像卡通化是一種新趨勢。人們使用不同的應用程序將他們的圖像轉換為卡通圖像。如今&#xff0c;玩弄圖像是許多人的愛好。人們通常會點擊圖片并添加濾鏡或使用不同的東西自定義圖像并將其發布到社交媒體上。但我們是程序員&#xff0c;…

后端老鳥的前端初探:心得與領悟20240713

&#x1f389; 后端老鳥的前端初探&#xff1a;心得與領悟 &#x1f680; 作為一名深耕后端多年的開發者&#xff0c;我最近踏上了前端探索的征程。這段跨界之旅讓我有了許多深刻的心得與領悟&#xff0c;現在我想和大家細細分享&#xff1a; 前端技術的飛速更新 &#x1f68…

godis源碼分析——Redis協議解析器

前言 redis這個目錄下的所有代碼就是為了一個事情&#xff0c;就是適配redis。 流程 redis下的基本流程 源碼 在redis/client/client.go 主要是客戶端處理 package clientconst (created iotarunningclosed )type B struct {data chan stringticker *time.Ticker }// …

Docker安裝RabbitMQ(帶web管理端)

1.拉取帶web管理的鏡像 可以拉取rabbitmq對應版本的web管理端&#xff0c;比如&#xff1a;rabbitmq:3.9.11-management&#xff0c;也可以直接拉取帶web管理端的最新版本 rabbitmq:management. docker pull rabbitmq:3.9.11-management 注意&#xff1a;如果docker pull ra…

sqlalchemy使用with_entities返回指定數據列

sqlalchemy使用with_entities返回指定數據列 在 SQLAlchemy 中,with_entities 方法用于指定查詢語句返回的實體(Entity)或列(Column)。它允許你限制查詢的返回結果,只包含你感興趣的特定字段或實體 使用方法 假設有一個名為 User 的 SQLAlchemy 模型類,包含以下字段:…

Unity3D中如何降低游戲的Drawcall詳解

在Unity3D游戲開發中&#xff0c;Drawcall是一個至關重要的性能指標&#xff0c;它指的是CPU通知GPU繪制一個物體的命令次數。過多的Drawcall會導致游戲性能下降&#xff0c;因此優化Drawcall的數量是提高游戲性能的關鍵。本文將詳細介紹Unity3D中降低Drawcall的幾種主要方法&a…

設計模式使用場景實現示例及優缺點(行為型模式——模板方法模式)

模板方法模式&#xff08;Template Method Pattern&#xff09; 模板方法模式&#xff08;Template Method Pattern&#xff09;是一種行為設計模式&#xff0c;它定義了一個操作中的算法的骨架&#xff0c;將算法的一些步驟延遲到子類中。這樣可以在不改變算法的結構的前提下…