一、實驗環境
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...