close
1. 前言
所謂Linux kernel就是控制你主機的所有硬體並提供系統所有的功能,在開機的時候,利用開機管理程式啟動kernel來偵測硬體並載入適當的驅動程式,這樣系統才可以順利的運作。
https://www.itread01.com/articles/1475911242.html
由上圖可以看到整個 OS分為兩塊,一個是User Space及Kernel Space,當我們在編譯kernel時,可隨意調整內容做瘦身。linux kernel裡,是以C語言及組合語言寫成,其軟體內容以GPL方式釋出,在商業化時,必須要公開原始碼要回饋給linux機構。由於是完全開放的軟體內容,我們常可透過程式了解驅動硬體的行為,若未來要獨自撰寫一個全新的驅動程式,建議可以透過類似的驅動模組加以修改會較簡單。在系統上是以檔案的方式實現,這個檔案包含了驅動模組,而kernel檔案會被放置在/boot/vmlinux-xxx裡,因為是檔案,其實linux os上可以擁有多個kernel檔案,但開機時只能選擇一個。Kernel module,每個模組都代表一個驅動程式,所以若我們的硬體環境若換置了新了裝置,我們可以透過模組的形式,單純對這個module做置換。所以我們可以將需要置換的module獨立出來,不須重新編譯kernel,將module重新編議後再載入到kernel裡。而模組在哪裡,就在/lib/module/$(uname –r)/kernel裡。
2. 編譯原始碼步驟
- 檢查目前核心的版號
uname –a
- 為了避免權限問題而造成編譯過程的錯誤,我們都用sudo 來執行指令。
- 用瀏覽器連上 The Linux Kernel Archives,選擇你要下載的版本,到tarball按右鍵->複製聯結網址。
- 建立目錄,用來放置下載的原始碼壓縮檔
Sudo mkdir 路徑 - 使用wget將原始碼下載回來。
sudo wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.44.tar.xz - 解壓縮資料夾
tar -xvf linux-4.19.44.tar.xz
Step2 設定config檔
- 切換到剛剛解壓縮的目錄。
cd 目錄 - 安裝編譯核心時需要用的工具。
sudo apt-get -y install gcc libncurses5-dev build-essential fakeroot kernel-package bzip2 - 複製舊的.config到當下目錄,至少確定是可以work的kernel設定,而且可以以舊的設定修改自己需要的kernek功能,不用一切重頭來過。
sudo cp /boot/config-`uname –r` .
Step3 編譯kernel - 在同樣的目錄下修改核心功能與驅動程式設定項目,若無特別的設定,就無須改變
sudo make menuconfig
- 開始編譯,-j 4 代表使用四核心進行編譯,可以加快速度
sudo make –j 4 clean
sudo make –j 4
sudo make modules –j 4
sudo make modules_install
sudo make install - 編譯結束後,從開機
sudo reboot - 在使用指令即可看到新的kernel產生
uname -a
全站熱搜
留言列表