原文鏈接:https://blog.csdn.net/qq_28437139/article/details/83692907
此處只講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
有時候這個命令找不到剛才安裝的內核
這個時候用一下方法
- 刪除boot下面和要刪除的內核版本相關的文件 rm –rf rm -f *3.19.8*
- 刪除/usr/src/目錄下的內核源碼
- update-grub 更新grub