Linux 新增與刪除核心

2021-09-17 05:26:46 字數 4526 閱讀 1997

如何編譯核心

安裝編譯好的新核心

刪除不需要的核心

希望讀者朋友通過本文可以在不重灌系統的情況下輕鬆愉快的體驗最新的 linux 核心帶來的快感。

本文將一步一步介紹如何根據需求配置編譯符合自己需求的 linux核心,以及如何安裝編譯好的核心和刪除不需要的核心。

新增核心一般來說並不需要,當然也不是完全不需要。安裝新核心大體因為以下幾種需求:

嘗鮮新功能

原來的核心比較臃腫

和硬體相容

特殊需求

筆者安裝新核心就是處於特殊需求。筆者所做的工作是需要用到linux自帶的分析工具——ftrace。該工具中的一些專門性的工具(姑且叫外掛程式吧)在發行版本中並沒有編譯到核心中去,所以筆者需要重新編譯核心將這些外掛程式勾選上,並編譯後的核心安裝到自己的系統中。整個過程雖說只有簡單幾步而已,但是筆者還是走了不少彎路。比如,筆者最開始是不想在自己的機器上直接安裝新核心的,畢竟有些環境是筆者費了九牛二虎之力才部署好的,再加上對現有系統新增新核心也是大姑娘出嫁——頭一回,萬一搞不好就廢了。所以開始是在virtualbox上搞的,可是在對核心進行配置時執行make menuconfig總是提示curses.h找不到,在網上扒了半天,安裝了和curses.h相關的所有庫也不行,也是夠了。後來,我只好在物理機上搞了,結果還是出現了一些奇葩問題,比如刪除核心方法中的第二個就是筆者慘痛的經歷。當時筆者是安裝好新核心後進入系統所有外設都不可用,只好進入原來的系統中刪除新安裝的核心,結果就是方法二中的情況了。後來回想起來應該是沒有執行make modules_install導致驅動啥的都沒裝。

編譯新核心

準備工作

下面,畢竟核心**都在那呢。當然也有人放到了/opt/下面(可以參考這篇文章:linux系統替換新核心),這也未嘗不可,就當安裝乙個大型程式嘛。畢竟在執行# make install時會把相應的檔案拷貝到對應的目錄下,原始碼放在哪並不影響安裝核心。

編譯

在安裝之前需要對核心進行編譯,這過中住需要對**進行清理、配置等工作。

清理

本步驟主要是清理**中的.o.config

在本文中,該命令執行目錄為/usr/src/linux-3.19.8/
,linux-3.19.8是筆者需要安裝的新核心,如無特別說明下同。

# make mrproper
配置參考文章:make menuconfig詳解。

本步驟主要是為了配置編譯選項,比如哪些模組需要編譯到核心中去,哪些是不需要的,哪些是編譯成在需要時動態的插入到核心中去的。通過本步驟將生成乙個.config檔案,該檔案記錄我們設定的一下規則。大體上,本步可以分兩種情況來考慮或者說來解決:

1.直接拷已有的.config檔案,該檔案存在於/boot/目錄下,當然並不叫.config,例如,筆者系統中就是 ***config-3.13.0-32-generic ***,筆者系統中核心原來版本是 3.13.0,如圖:

可執行如下命令來進行拷貝:

#cp /boot/config-3.13.0-32-generic  ./.config
2.根據自己的需求重新配置,這時會在當前目錄下生成.config檔案,具體如何配置方法很多,這裡只給出常用方式:

# make menuconfig
執行該命令後會彈出乙個基於ncurses圖形庫的圖形介面,如圖。

當然,如果你只是想使用新核心的話,選擇預設就好,最後儲存就可以生成乙個.config檔案的。由於筆者需要使用ftrace這款工具,所以還是需要稍加配置,但這不是本文主題,故略去。

編譯

配置完成後,就可以對核心進行編譯了。這個過程有點長,你可以幹點其他的事情了。具體命令如下:

# make
#make命令相當於執行了# make bzimage# make modules,由於是本機替換核心,所以無需分開執行。這一步所需的時間較長,為了加快編譯速度,我們可以加上 「-j」 選項,後面跟的數字是 jobsnum ,建議設定為 cpu 核心數 + 1,jobsnum 值可以由命令cat /proc/cpuinfo |sed -n '/^processor/p' |wc -l獲得。

安裝核心

安裝模組

執行如下命令:

# make modules_install
編譯成功後,系統會在/lib/modules目錄下生成乙個 3.19.8 子目錄,裡面存放著新核心的所有可載入模組(即將編譯好的modules拷貝到/lib/modules下)。

注意: 模組安裝一定要在核心安裝之前,否則,安裝核心時會提示致命錯誤——在/lib/modules找不到對應的模組。

安裝核心執行如下命令:

# make install
該命令的作用是將.config,vmlinuz,initrd.img,system.map檔案到/boot/目錄、更新 grub。預設啟動新核心。

刪除核心

方法一

1.檢視當前系統使用的核心

# uname -a
該條命令可以給出系統當前使用的核心版本的詳細資訊如:2.檢視系統中已經安裝了的核心

# dpkg --get-selections | grep linux
該命令可以檢視系統中已經安裝過的所有核心,如:

image部分是已經安裝過的核心,由以上兩步可以確定在圖 4中而不在圖 3中的核心版本是可以刪除的。

3.刪除核心完成1-2兩步後,我們可以確定將要被刪除的核心版本。

# apt-get remove linux-image-****-generic
4.更新 grub 經過以上三步已經很完整的刪除了核心版本,但是,這時候開機時還會有被刪除核心的選項,這個對於**座的同志們來說,估計是不能忍的。我們可以通過更新grub.cfg的內容來解決這個問題。

# update-grub
經過以上四步後,就算徹徹底底的刪除了要刪除的核心了。

然而,事情往往並不是總那麼順利。比如,筆者本人就遇到這樣的奇葩問題:在安裝核心後,通過

# dpkg --get-selections|grep linux
命令就找不到剛才安裝的核心。所以上面的方法看來是不行了,那麼,只能使用簡單粗暴的方法了。

方法二

1.直接刪除/usr/src/下對應要刪除的核心**。2.刪除/boot/下對應的核心相關檔案,比如,筆者要刪除版本為3.19.8的核心,可執行如下命令:

# cd /boot/# rm -rf *3.19.8*
這樣,就可以將相應的config、system.map、vmlinuz等檔案刪除。

3.更新 grub。本步和方法一相同,不再贅述。

至此,我們已經在 ubuntu 作業系統上完成了對核心的配置、編譯、安裝以及刪除的操作。其他 linux 發行版也可以通過類似的方式對核心進行安裝和刪除,讀者朋友可以自己動手實踐起來。

閱讀全文:

新增linux核心驅動

1.將核心驅動.ko放入 lib modules 3.2.0 23 generic kernel drivers 目錄下 2.執行depmod a來解決依賴 掃瞄driver下的驅動依賴關係 命令執行完成後,會自動生成modules.dep 和modules.alias。dep為依賴關係。3.更新當...

新增與刪除字段

新增字段 語法規則為 alter table 表名 add 新欄位名 資料型別 約束條件 first after 已存在欄位名 在表的最後一列新增字段 只要不做 first after 的位置說明,在新增欄位時mysql會預設把新字段加入到表的最後一列 在表的第一行新增字段 alter table ...

EPEL新增與刪除

epel的全稱叫 extra packages for enterprise linux,由fedora社群打造,如它的全稱,這是乙個為紅帽系列及衍生發行版如centos fedora提供額外的軟體包的專案。簡單點說,epel是乙個yum源,提供官方源提供的rpm包以外的更多包,裝上epel後,可以...