在centos6,7 上編譯安裝內核

来源:http://www.cnblogs.com/along21/archive/2017/09/19/7551833.html
-Advertisement-
Play Games

  小編以前寫過一篇軟體的源碼編譯安裝,今天小編再給大家帶來一篇內核的編譯安裝。   今天,就以centos7 編譯安裝最新版本4.13.2 內核為例,給大家詳解。編譯安裝之前,檢查一下自己的磁碟空間,大約需10G左右。 一、去官網(www.kernel.or ...


  小編以前寫過一篇軟體的源碼編譯安裝,今天小編再給大家帶來一篇內核的編譯安裝。
  今天,就以centos7 編譯安裝最新版本4.13.2 內核為例,給大家詳解。編譯安裝之前,檢查一下自己的磁碟空間,大約需10G左右。

一、去官網(www.kernel.org)下載最新版本4.13.2


① rz上傳
② 創建一個放內核的空目錄 /app/kernel4.13,mv linux-4.13.2.tar.xz /app/kernel4.13/
tar xvf linux-4.13.2.tar.xz 解包,解包之前大約只有100M,解包之後875M
④ 擴展小知識:for i in `find /app/linux-4.13.2 -name *.c |xargs -n1` ;do file=`cat $i |wc -l` ;let sum+=file ;done ;echo sum=$sum 可以查出以.c結尾的文件有17233537行代碼,還不是所有文件,可知編寫一個內核有多麼難!!!

二、準備文本配置文件(菜單): .config

以系統上原有的操作系統為模板,拷一個模板文件到我們的目錄,並命名為.config的隱藏文件
  cp /boot/config-3.10.0-514.el7.x86_64 /app/kernel4.13/linux-4.13.2/.config
這個文件的作用:定義編譯內核時,功能的特性

=y:打到核心裡,以後放在 vmlinux中
=m:模塊方式,以後就表現為 ko文件
not set:該功能不啟用

三、安裝編譯安裝需要的包組

yum groupinstall "development tools" 

註意要加"",這個包組提供了編譯安裝所需要的工具
如果已安裝就無需再安裝

四、配置內核選項:make menuconfig

(1) cd /app/kernel4.13/linux-4.13.2/ 一定要進入自己的目錄文件去完成後邊的執行
(2) make menuconfig 就相當於小編以前博客中編譯安裝服務的.config腳本類似的功能
執行後會發現出錯,因為缺包

  
(3) 缺什麼包,安裝什麼包
yum install ncurses-devel -y
  
(4) 繼續執行make menuconfig,成功後,會顯示這樣的視窗菜單

  
(5) 視窗菜單中的一些設置,回車就進入子菜單,在這個菜單中,想要設置什麼功能,都可以自己設置

    按m,打到模塊中,以後就表現為 ko文件
    按y,打到核心裡,以後放在 vmlinux中
    空 ,就是關閉該功能

① General setup --->的子菜單
   Local version - append to kernel release 進入這一項可以寫自己編譯安裝後的內核版本名
後續都是和硬體相關的,先不改了,按exit 退到上一層

② File systems ---> 文件系統,ext4 xfs ntfs ... 裡邊有很多文件系統
  DOS/FAT/NT Filesystems ---> 進入ntfs 的子菜單,為了實驗後邊的證明,我們把這個功能打開

③ Networking support ---> 網路的支持,有各種網路
   Wireless ---> 例如無線網路
④ Device Drivers ---> 設備的驅動
......
(6)退到最後,會有彈框,選擇yes保存退出

  
(7)這一步進行的所有操作都放入了.config中,為了驗證,我們剛纔的操作保存了,
grep -i ntfs .config 查詢ntfs,發現和我們修改的一樣

  

五、開始編譯:make

(1)因為這一步需要很長的時間,為了讓大家看到我花費的時間,我加了date,並且設置執行完成後提示10次警報提醒我
date >> /app/date.log ;make -j 8 ;date >> /app/date.log ;for i in {1..10} ;do echo -e "\a" ;sleep 0.5 ;done
大家執行這一步,只需 make -j 8 就行
(2)初次執行,也會報錯,缺少包

  
(3)yum -y install openssl-devel 老方法,缺啥按啥
  
(4)繼續執行
date >> /app/date.log ;make -j 8 ;date >> /app/date.log ;for i in {1..10} ;do echo -e "\a" ;sleep 0.5 ;done

編譯完成,我的機器配置較低,用時48分鐘,目錄大小變為: 9.2G

六、安裝模塊:make modules_install

安裝完成後ls /lib/modules 會出現咱們自己編譯的內核

  

七、安裝內核相關文件:make install

安裝完成後ls /boot 會出現咱們自己編譯的內核相關文件
執行後,會有個報錯,不用管,不用終止,等它生產文件

  

八、查詢grub的配置文件,看有沒有多新的菜單

cat /boot/grub2/grub.cfg

reboot 重啟時,發現有咱們的內核新菜單

到此,我們的編譯安裝內核就完成了!!!我們就可以愉快的用我們的新內核了。但是企業中應該很少會換內核,因為新的內核可能不適合自己的系統,有各種各樣的BUG,當然,我們還是要掌握這高大上的技術,因為可以出去裝B。。。
  

九、卸載內核

如果發現自己編譯安裝的內核版本不適合自己的系統,可以卸載,不能只會安裝。
1、cd /boot 刪除(自己安裝的版本eg:4.13)啟動的內核和內核映像文件
2、cd /lib/modules/ 刪除不需要的內核庫文件
3、cd/app (自己安裝源碼的目錄) 刪除不需要的內核源碼
4、vim /boot/grub/grub.conf 更改grub的配置文件,刪除不需要的內核啟動列表菜單
這樣自己編譯安裝的內核就清乾凈了。
  

好了,今天就到這裡了,有什麼不懂的可以聯繫我。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、前言 Linux操作系統至1991年10月5日誕生以來,就其開源性和自由性得到了很多技術大牛的青睞,每個Linux愛好者都為其貢獻了自己的一份力,不管是在Linux內核還是開源軟體等方面,都為我們後來人提供了一個良好的學習和研究環境。 本文主要通過裁剪現有Linux系統,根據自己的需要,打造一個 ...
  • 本文目錄:1.1 安裝Ansible1.2 配置Ansible 1.2.1 環境配置 1.2.2 SSH互信配置 1.2.3 簡單測試1.3 inventory Ansible是一種批量、自動部署工具,不僅可以批量,還可以自動。它主要基於ssh進行通信,不要求客戶端(被控制端)安裝ansible。 ...
  • ...
  • 對於系統和網路管理員來說每天監控和調試Linux系統的性能問題是一項繁重的工作。監控和保持系統啟動並運行是很不容易的一件事。因此[實驗樓](https://www.shiyanlou.com/courses/)介紹部分linux的系統監控命令。 ...
  • 本文將介紹如何配置OpenVPN伺服器端的配置文件。在Windows系統中,該配置文件一般叫做server.ovpn;在Linux/BSD系統中,該配置文件一般叫做server.conf。雖然配置文件名稱不同,但其中的配置內容與配置方法卻是相同的。 本文根據官方提供的server.ovpn示例文件直 ...
  • 關於攝像頭調試的文檔《Camera_for_RockChipSDK參考說明_v4.1》 下載地址:http://developer.t-firefly.com/thread-12429-1-1.html 下載地址:http://developer.t-firefly.com/thread-12429 ...
  • 一、OpenVAS 介紹 1.關於OpenVAS OpenVAS(Open Vulnerability Assessment System)是一套開源的漏洞掃描系統,早期Nessus 是其中一個最流行的和有強力的漏洞掃描器,它最初是自由和開放源碼,但在2005 年關閉了源代碼,在2008 年取消了免 ...
  • 新分配的CentOS運行在內網環境下,無法連接Internet,為了能夠使用yum部署OpenVas工具,需要在內網下一臺Windows主機架設代理,作代理伺服器來令虛擬機上網。 代理伺服器選擇了CCproxy,下載並安裝CCProxy,配置所要代理的協議,並選擇能夠聯外網的網卡ip 在下方本機局域 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...