虛擬機器ubuntu 編譯屬於自己的linux核心

2022-08-23 10:21:07 字數 2798 閱讀 7878

一、實驗環境

vmware15.5, ubuntu18.04, linux-5.6.14核心(以這個環境為例)

二、準備工作

(另外,如果電腦配置夠的話,可以將虛擬機器配置高階一點,因為後面 make 這個步驟很花時間。)

解壓命令:sudo tar -zxvf vmware tools-...... (直接用tab鍵補全檔名稱以免出錯)

解壓完成後,進入/vmware-tools-distrib路徑,後執行命令 sudo ./vmware-install.pl 開始安裝,一路回車。

安裝完成後,重啟虛擬機器。

拖入後,執行命令 sudo mv linux-5.6.14.tar.xz /usr/src 然後進入/usr/src路徑,執行命令 sudo tar -xvf linux-5.6.14.tar.xz

就可看到生成linux-5.6.14資料夾。

到此我們的準備工作就完成了。

三、實驗過程

(實驗過程我以root使用者進行,通過命令 su 就可進入 root使用者。如果報錯有可能是沒有設定密碼,輸入 sudo passwd,設定密碼即可)

我們先來看一下預設的核心。在終端輸入 uname -a。(這個是重灌虛擬機器之前的圖,所以虛擬機器、使用者名稱不一樣。無傷大雅)

下來我們開始編譯自己的核心:

1. cd linux-5.6.14,進入該路徑。我們通過 make 來編譯核心,所以我們需要環境和依賴。

1. apt install gcc

2. apt install make

3. apt install gcc make libncurses5-dev openssl libssl-dev

4. apt install pkg-config

5. apt install bison

6.apt install flex

7. apt install libelf-dev

安裝完成我們就可以進行下一步工作。執行命令 make nconfig,進入下面介面(如果make nconfig過程中報錯,按照錯誤提示安裝相應依賴即可)。

我們將核心名稱自行命名。進入 general setup ,修改 local version。修改完成後儲存(此處會儲存為.config),後退出。

在此步驟做一點說明,此處我們僅修改了名稱,別的選項都是預設。因為選項設定麻煩,所以不做說明,但這會導致下一步

make的時候比較費時間。可以自行在網上找簡潔的 .config 檔案,將檔案拷到虛擬機器即可。

2. 好了, .config 檔案我們已經完成了。下一步就開始 make。執行命令 make -j4(4個執行緒跑,會快很多。-j4 是可選項,取決於

你的虛擬機器配置

)。這一步驟需要 3h 左右(我第一次跑三小時,後來4執行緒跑乙個多小時。這個過程會有 warning 記憶體過大,

這個不用管,注意warning資訊,如果需要可以暫停更改環境配置)。

3. 經過漫長的等待,make 這步終於完成了。然後執行命令 make modules_install 。

4. 執行命令 make install。完成後重啟虛擬機器。

好啦。到此核心編譯就完成了。我們開始核心引導,必須要看到屬於自己的核心~

重啟過後,終端執行 cd /boot/ 。system.map - * 就是要用的東西。

執行命令  sudo update initramfs -c -k 5.6.1418130500337-ssc

(這裡用你的檔名稱替換哦!)

完成後執行命令 sudo update-grub 。會生成乙個.img檔案,這是由核心原始碼生成的核心映象。

我們需要修改grub,執行命令 cd /boot/grub/ ,修改 grub.cfg檔案。執行命令 sudo vim grub.cfg

到這裡就已經修改完成了。重啟虛擬機器。

再次進入執行命令 uname -a , 便可看到自己的核心。

四、總結與心得

比如c語言中的 printf(), 就是 printf() -> c庫中的printf() -> c庫中的write() -> kernel中的 write()。

實驗的完成也是磕磕絆絆,所有的失敗都歸結於錯誤的開始。因為這是幾天前完成的實驗,我沒有保留

虛擬機器 Ubuntu

1.安裝 2.安裝tools,可以複製檔案 參考 快捷鍵 ctrl alt t 命令列 ctrl alt l 鎖屏 更改 etc apt sources.list 阿里源 deb src xenial main restricted added by software properties deb ...

ubuntu 虛擬機器網絡卡

安裝的ubuntu16.04,完成之後ip是動態獲取的,於是項配置乙個靜態的ip,ubuntu16的物理網絡卡名字是ens33,和以前的eth0 之類的不一樣,不知道從什麼版本開始改的。直接修改 etc network inte ces檔案。新增如下幾行 iface ens33 inet stati...

虛擬機器ubuntu擴容

之前由於虛擬機器ubuntu分配空間太小,導致了空間不夠,然後決定對其擴容。一開始以為只需在虛擬機器編輯那裡擴充套件磁碟空間就夠了。後來才意識到那只是給ubuntu分配了磁碟空間,你還需要從ubuntu內部進行磁碟分割槽並掛載!本以為是很簡單的事情後來真的上手才發現全是坑。下面記錄一下詳細的步驟 1...