【Linux虛擬機器器】從頭開始——Linux虛擬機器器安裝、遠端Shell 工具連線、核心編譯教學

2020-10-21 13:01:13


//

前言

謹記:寫下這篇教學的目的,是為了記錄自己在編譯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核心