編譯Linux內核源碼的過程中發生的故事

來自http://www.zhouyuanchao.com/index.php/archives/70/

目的

構建環境,學習 《Linux設備驅動程序》 《Linux內核設計與實現》

Linux環境

Fedora 24,內核版本4.5.5。

Linux 4.5.5-300.fc24.x86_64

下載內核源碼

https://www.kernel.org下載了4.19.128版本。

內核配置

使用make help查看所有make選項。

可以使用不同的方法進行配置,比如make configmake menuconfigmake xconfig等。

make xconfig是基於Qt的一個配置工具。

執行make xconfig,按照錯誤提示安裝依賴庫。

sudo install gcc-c++ qt qt-devel bison flex
make xconfig

最終在根目錄生成.config文件。

編譯遇到問題

執行qmake,提示編譯器版本太低。

最終決定將Fedora從24升級到30。

升級Fedora

https://www.cnblogs.com/suodingsuiji/p/6288064.html

dnf install dnf-plugin-system-upgrade
dnf system-upgrade download --releasever=25
dnf system-upgrade reboot

一開始使用--releasever=30,提示錯誤,遂決定逐版本升級。

從24升級到25需要下載大量的軟件包,運行了一夜,早上發現提示錯誤:

警告:/var/lib/dnf/system-upgrade/python2-cssselect-0.9.2-1.fc25.noarch.rpm: 頭V3 RSA/SHA256 Signature, 密鑰 ID fdb19c98: NOKEY
Curl error (37): Couldn't read a file:// file for file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-x86_64 [Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-x86_64]

https://blog.csdn.net/xdzfli/article/details/20225459

根據這篇文章從https://rpmfusion.org/keys上下載25的key,結果不能使用,因爲公鑰不匹配。網上幾番查詢,百度、Bing輪番上陣(別問爲什麼不用Google),終於找到了所需的公鑰文件。

https://github.com/facebookincubator/rpm-backports/blob/master/rpms/mkosi/sources/RPM-GPG-KEY-fedora-25-x86_64

執行dnf system-upgrade reboot,重啓後又是漫長的升級過程,終於系統由24成功升級爲25。

升級到26之後,發現可以編譯內核了。

當前的版本:Fedora 26,內核版本4.16.11。

Linux 4.16.11-100.fc26.x86_64

編譯內核

直接make有錯誤發生,按照提示安裝了幾個軟件包。

sudo dnf install elfutils-libelf-devel
sudo dnf install openssl-devel
make
sudo make modules_install
sudo make install

重啓後,啓動選項中新加了一項內核4.19.128的啓動項,啓動提示錯誤,無法進入桌面環境:

/dev/fedora/swap does not exist
/dev/mapper/fedora-root does not exist

網上查詢一番,無果,以失敗告終。

再一次嘗試

在網上搜到一篇文章,說是在Fedora系統中有一個編譯內核用的配置文件,可以用來替換.config。

https://www.cnblogs.com/lufee/archive/2011/08/30/2160099.html

cp /boot/config-4.16.11-100.fc26.x86_64 .config

執行make oldconfigmake,這次編譯的時間非常漫長,最後導致硬盤空間不足了,導致編譯失敗。需要擴充虛擬機的硬盤空間,然後建立新分區、掛載至一個臨時目錄、將home文件夾的內容拷貝至臨時目錄、再將新分區卸載並掛載至home文件夾。

https://zhidao.baidu.com/question/1865322402933792867.html

解決了空間不足問題,繼續make

自此一切順利,系統正常啓動。看來以後得多研究研究內核配置。

有圖爲證:

uname

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章