1. 程式人生 > >編譯linux核心原始碼,安裝、刪除核心

編譯linux核心原始碼,安裝、刪除核心

Linux核心編譯、安裝流程

本部落格屬於原創,轉載請註明來源

此處只講linux核心編譯步驟至於安裝虛擬機器,安裝ubuntu作業系統請自行百度

環境資訊:

Linux作業系統:ubuntu16.04

核心版本:4.15.0-29-generic

需要編譯和安裝的核心原始碼版本:4.19

第一步:下載linux核心原始碼

官網地址地址:https://www.kernel.org/

官網大致是這個樣子,大家關注我標出的位置就OK了

第一列:

mainline當前在開發的核心新版本

stable 穩定的核心版本

longterm 長期維護的核心版本

第二列:

版本號以小數點分割

第一個位置主版本號一般有重大改變時會修改的版本號(具有里程碑意義)

第二個位置次版本號偶數代表穩定版本(可商用),奇數代表開發板不穩定(不可商用)

第三個位置這個號碼代表當前版本修改次數(每次可能修改一些bug)

第三列:

當前版本最後一次修改程式碼時間

第四列:

tarball:完整的程式碼

pgp:驗證簽名

patch:基於上一個版本的補丁(一般商用的系統不會頻繁的編譯核心,所以可以打補丁上去方便)

在這裡我們點選tarball下載完整程式碼

第二步:上傳程式碼解壓,安裝軟體

登入ubuntu16.04

切換到root許可權:su - root

檢視當前作業系統安裝了哪些核心(注意:當前作業系統可以安裝許多核心,但是當前執行的核心只能有一個)

dpkg --list | grep linux-image

檢視當前執行的核心版本

uname –r

為了防止後面安裝的時候報錯首先執行下面命令安裝軟體

sudo apt-get install libncurses5-dev libssl-dev -y

sudo apt-get install build-essential openssl -y

sudo apt-get install zlibc minizip -y

sudo apt-get install libidn11-dev libidn11 -y

sudo apt-get install bison -y

sudo apt-get install flex -y

sudo apt-get install libelf-dev -y

sudo apt-get install libelf-devel -y

sudo apt-get install elfutils-libelf-devel –y

sudo apt-get install flex –y

sudo apt-get install bison -y

將核心原始碼解壓到/usr/src/目錄下

tar xvf 原始碼包

將解壓後的原始碼包建立新連結

ln –s 解壓後原始碼包名 linux

 

 

第三步:配置編譯選項開始編譯安裝核心

make mrproper   清空一些配置資訊檢查原始碼是否完整

make clean       清空一些編譯資訊

cd /usr/src/linux

make menuconfig

這裡選擇核心中哪些模組參與編譯(簡單的說就是哪些編譯好的核心有哪些功能,具體的功能在下一節部落格中會給大家詳細介紹),這裡打下按向右的箭頭,選擇退出,彈出對話方塊口選擇yes,這裡的意思是選擇預設的配置。

在當前目錄下執行

make(相當於make bzImage加make modules)另外make可以加-j 20  意思啟動20個執行緒編譯

make modules          生成相應的模組

make modules_install    將相應的模組拷貝到對應的目錄下

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

如何刪除核心:

檢視當前安裝的核心

dpkg --get-selections | grep linux

如上圖所示,在該圖列表中含image 部分是已經安裝過的核心

執行apt-get remove linux-image-****-generic

或者

sudo apt-get purge linux-image-****-generic

(移除後啟動選項中還會有解除安裝的核心選項)

update-grub  更新grub這樣在系統啟動的時候就不會有解除安裝掉的核心了這樣就徹底的解除安裝了

問題

dpkg --get-selections|grep linux

有時候這個命令找不到剛才安裝的核心

這個時候用一下方法

  1. 刪除boot下面和要刪除的核心版本相關的檔案 rm –rf rm -f *3.19.8*
  2. 刪除/usr/src/目錄下的核心原始碼
  3. update-grub 更新grub