文章目錄
- 前言
- 一、安裝虛擬機
- 二、虛擬機的初始化配置
- 三、遠程Shell 工具連接虛擬機
- 四、下載Linux 內核并編譯
- 五、重新啟動虛擬機,進入新內核系統
//
前言
謹記:寫下這篇教程的目的,是為了記錄自己在編譯Linux內核時遇見的各種問題,讓大家能少掉坑,雖然說事不過三,但這次是我第4次重新裝系統、重新編譯了…
提示:以下是本篇文章正文內容,內核已安裝成功,下面的命令和方法可供參考
//
一、安裝虛擬機
說明:
光碟映像檔案:Ubuntu 20.04 server(服務器版本64位)
虛擬化軟體:VMware Workstation
(VirtualBox也不錯,但網上關于VirtualBox的教程太少了,我覺得兩款其實差不多啦,VirtualBox還更簡潔一點,)
1.打開VM——點擊創建新的虛擬機,點擊下一步、再下一步,

2.選擇安裝我們之前下載好的Ubuntu Server版本的光碟映像檔案(后綴名是.iso)

//
3.填寫好資訊(要記得自己設的用戶名和密碼,可以寫在一個txt檔案)

//
4.內核編譯產生的大量臨時檔案和目標檔案會占據很大的空間,所以保存的位置要保證至少有50+G

//
5.為了讓Linux內核編譯更快一點,我這里設定了4核,(如果本機承受得住可以設8核!)

//
6.接下來是設定運行記憶體(3G-4G就夠了),運行記憶體不夠大,編譯程序中也是會出錯的哦,但我沒有碰見,

//
7.選擇橋接網路,這個是wget命令下載、連接網路、主機與虛擬機間互ping的正確選擇
(之前搞主機與虛擬機間互ping搞了很久,其實就是橋接網路設定沒弄好)

//
8.接下來兩個選擇默認的就可以了,直接點擊下一步,


//
9.創建虛擬磁盤,因為每個電腦的配置和安裝檔案不一樣,編譯內核用到的記憶體也不大相同,見過的最小有5G,最大的50+G,如果想要內核編譯一步到位,在此建議設80G左右(有多大搞多大!)


//
10.直接下一步,就創建好了,下圖是創建的虛擬機資訊,點擊完成、開啟虛擬機:

//
二、虛擬機的初始化配置
1.默認English——>回車done(其余界面沒特別說明都是默認設定就OK)

//
2.網線插好,有DHCP,系統就會自動默認為DHCP,并把已經獲取到的IP顯示到對應的網卡上,大部分情況默認就可以了,done

//
3.接下來到了重點!! 手動手動手動磁盤磁區!!
本人前三次不能編譯完整,正是三次都是“根目錄記憶體太小”!!!即使前面設定60G、90G,如果是自動默認磁區,/ 根目錄分配到的記憶體都不夠用呀(/(ㄒoㄒ)/~~)
下面大家好好設定,編譯內核就不會出現“error:No space left on device”這個錯誤,
選擇"Custom storage layout"——done

選擇“Add GPT Partition”——(說明:圖是舊的60G,后來想想還是不夠,改成80G了)

/boot 10G空間夠了

同樣的選擇“Add GPT Partition”,給 / 這個根目錄設空間大小

確認就可以看到我們設定的兩個磁區啦!


4.設定Linux虛擬機登錄的用戶名和密碼(這個要記住啊!登錄虛擬機要輸入的哦)

//
5.這里選擇開啟SSH服務,之后遠程連接就不會出錯了,有的遠程連接出錯了,是因為虛擬機還沒開啟SSH服務,可以用終端命令開啟這個服務,再連接,也不是很麻煩,百度一下就可以啦!

//
6.設定好,慢慢等待虛擬機安裝就OK了

//
三、遠程Shell 工具連接虛擬機
直接通過虛擬機軟體進入虛擬機終端進行相關的命令列多有不便,字體解析度較低、不能直接粘貼瀏覽器網頁中 Linux 命令,遠程Shell 工具就可以自己設定字體大小格式,//
在此本人用的是:Putty
下載網址:https://www.putty.org/
1.下載

根據自己電腦位數選擇下載安裝就可以了

可以查找相關教程,配置喜歡的終端字體和其大小,
2.運行putty.exe,填寫虛擬機IP,進入


//
四、下載Linux 內核并編譯
1.遠程 Shell 會話終端里,使用 wget 命令下載最新的穩定版 Linux 原始碼包
命令如下:
sudo wget 原始碼包下載鏈接
例如下載linux-5.8.15.tar穩定版本的原始碼包:
sudo wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.8.15.tar.xz
下載好顯示如下:

//
2.環境配置(想順順利利一口氣編譯好就要做好準備)
(正式編譯前需要安裝部分軟體,之后編譯內核就不會報奇怪的錯誤了)
sudo apt update && sudo apt upgrade
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
(這里是選讀,說明這步可能出現的錯誤和解決辦法)
要上網下載的命令 可能 會出現以下錯誤:
出現錯誤:
Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
應該是DNS服務器域名訪問失敗(ping不通網路也可能是這個原因)
解決辦法——>輸入命令
sudo vim /etc/resolv.conf
添加 nameserver 8.8.8.8
添加 nameserver 114.114.114.114

可能初學者不知道怎么用vim插入文本,在此簡單說一下:
①進入這個界面,按 i 鍵 ,表達進入“INSERT”編輯模式,就可以在文本中添加內容,
②添加好后,按ESC鍵,再輸入“:wq!”,就可以保存并回到普通命令列界面,
(選讀結束)
//
3.下載好后,對壓縮包進行解壓
①把xz后綴名去掉
sudo xz -d linux-5.8.15.tar.xz

②tar命令解壓(解壓至/usr/src 目錄下)
sudo tar -xvf linux-5.8.15.tar -C /usr/src/
解壓成功顯示:

4.在正式編譯內核之前,我們首先必須配置需要包含哪些模塊
sudo cp /boot/config-$(uname -r) .config
意思就是拷貝對應當前內核配置到當前目錄下并重命名為.config
之后可以輸入 uname -r 命令查看當前資訊(為了和之后安裝好的新內核做對比)

//
//
5.正式開始編譯!!
①make menuconfig
提示:虛擬機下有可能提示會因為螢屏太小而無法顯示menuconfig而執行失敗,要確保遠程連接軟體全屏,


默認設定即可,選擇退出,執行完顯示如下:

②sudo time make -j4
開始編譯,此程序看每個人電腦、虛擬機等等方面的配置,執行時間有長有短,慢慢等待即可,
這里可以用 make -jn 來進行編譯加速,其中 n 值一般為 2,4 或 8 (多給虛擬機分配一些 CPU 資源)
time 命令可以在編譯內核程序結束后,在終端拋出編譯內核的消耗用時
編譯完后顯示:(我這里大概編譯了1小時40分)

③sudo make modules_install
安裝模塊

④sudo make install
安裝內核

//
五、重新啟動虛擬機,進入新內核系統
1.重新驅動虛擬機,出現以下畫面,選擇“Advanced…”

2.進入之前編譯的最新的內核版本中

3.等待…

//
(這里是選讀)
此程序當中可能出現以下錯誤:System is deadlocked on memory
其實虛擬機初始配置的運行記憶體不夠,需要增加記憶體:

解決辦法:直接進入虛擬機設定,增大運行記憶體,再重新開啟虛擬機,

(選讀結束)
4.開啟虛擬機登錄后,輸入 uname -r 命令,確認內核版本

說明內核安裝成功!!!!!
//
說明:本人前三次編譯失敗其實都是分配的記憶體不夠大,雖然有一次設了60G,一次90G,但因為都選擇了系統默認記憶體分配,導致根目錄分配到的記憶體還是不夠大,所以手動分記憶體很重要啊!!!
本文獻給花了一個星期才搞定這個小作業的菜鳥yjy,
希望此文對有同樣困惑的你有所幫助,
參考教程:如何編譯安裝Linux內核
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/185365.html
標籤:其他
上一篇:Ubuntu20.04+GeForce RTX 2080 SUPER+cuda11.1+cudnn8.0.4+openCV4.4.0編譯
下一篇:怎樣將自己開發的網站部署至阿里云
