天天看點

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

龍蜥社群已啟動主題為“ 2021 我與 OpenAnolis 龍蜥社群的那些事兒

”征文活動!征文内容包括但不限于以下五類:使用評測、技術解讀、經驗分享、共建建議、知無不言。

優質文章将獲得龍蜥社群官網及公衆号推薦展出,還可獲得神秘禮品。歡迎各位龍蜥社群朋友來稿~

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

征文活動之相關閱讀:

教你一招:看GIMP怎麼用Anolis OS完成你的私人定制 | 征文活動 龍蜥社群開發者自述:我是如何趣味玩轉Anolis OS的?|征文活動

作者:冷面酒仙

在作業系統領域工作 10 年以上。參與過 wrlinux、vxwork、wrhypervisor、debian、SUSE 系統開發工作。在作業系統建構、測試體系方面長期工作。熱衷于 Linux 社群發展與推廣的活動。目前就職于國内知名大廠。

近日是 Linux 的 30 歲生日,在上個世紀末的芬蘭赫爾辛基,一個名叫 Linus 的家夥在大學裡自己寫了一個作業系統。當他把這份作業系統代碼放到新聞討論區的時候,他可能自己也沒有想到,這個舉動在未來的 30 年中,把以 Unix 為首的一大批優秀作業系統斬落馬下,如今獨領風騷,并且如火如荼的發展。可以說在目前的所有的電子産品中很難看不到 Linux 系統的身影。

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

(圖為Linus)

對于新手而言,為龍蜥作業系統(Anolis OS)打造一個不可或缺的系統核心,聽起來也是非常有挑戰的哦!

​​

今天我們來看看如何用龍蜥作業系統(Anolis OS),打造自己的 Linux 核心。

Linux核心之初體驗

這是當年 Linus 發在新聞討論區上的一封郵件,也是 Linux 系統的第一次見面會!不過那個時候它還不叫 Linux,它隻是一個從 minix 改進過來的試驗​品。

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

目前,Linux 已經發展成為了擁有上千萬行代碼的龐大項目,主要的貢獻者來自Redhat、SUSE、Intel、Amd、Alibaba、Microsoft 等大型企業,以及一些獨立開發者。活躍的開發者人數在 4000 人左右,看起來還是非常龐大的開發隊伍,更加神奇的是他們分散在世界各地。

Linux 核心探秘

首先,我們先看如何從 kernel.org 網站下載下傳一份。(筆者編寫文章的時候核心的版本是5.13.13)用下面這個指令可以下載下傳一份核心源代碼:

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.13.13.tar.xz      
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

筆者在 01:25 分下載下傳時的網速截圖,看起來還是非常快的。這種方式我們可以拿到非常純淨的、最上遊的核心源代碼。用以下指令解壓縮:

tar xf linux-5.13.13.tar.xz
cd linux-5.13.13
ls      
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

上圖就是 kernel 代碼的真容了哦!本文暫時不對每個目錄作具體的詳解,後續如有機會很樂意分享一些核心方面的心得體會。

Linux 核心打包

軟體包是龍蜥作業系統(Anolis OS) 最基本機關,核心同樣是系統中衆多的軟體包之一。用軟體包的形式對核心進行打包處理,更加便于對軟體的分發。

在拿到代碼以後,我們如何進行打包呢?核心的打包操作是相對複雜的,初學者很難駕馭,而且也沒有必要。這裡我把打包工作分為兩個步驟:

第一步:配置核心;

第二步:打包RPM。

配置核心

配置核心的含義,核心中包括繁多的驅動程式,元件,架構這些東西對于核心的相容性是至關重要的。也就是說,Linux 核心之是以能夠運作在如此多的電子産品中,與這些代碼的功勞是直接相關的!但是,反過來如果我們的目的是給目前這個筆記本電腦制作一個核心,我們還有必要編譯如此之多的代碼嗎?答案是否定的。而為什麼要考慮這個問題呢?主要的原因是,核心編譯的時間太長了,取消掉不必要的元件,可以大大加快核心的編譯速度。當然多編譯一些元件确實對核心的軟硬體相容性有非常大的幫助!

首先,我們要標明一個配置的基線,我們使用如下指令,其作用是標明 x86 模式下最基本的元件:

make defconfig      
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

但是,經過筆者測試,這個最基本的配置是無法正常啟動的,這個與作業系統環境比較強相關。

可以跟随筆者一起看看看,到底有哪些問題需要解決,以及如何解決吧!

首先,我們用這個預設的配置,編譯核心,看看它是否可以正常工作。

make binrpm-pkg      

等等!如果你想要給核心帶上自己的名字以便于區分的話,請先完成如下的配置。

用下列指令開啟核心配置菜單:

make menuconfig      
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

選擇,general setup。

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

選擇“Local version”,可以為核心追加一個字尾。

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

輸入你自己的自定義字元串:

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

OK. 後退出儲存。可以開始編譯了!

請輸入:

make binrpm-pkg      

取決于計算機的配置,這個編譯過程有可能非常長時間!

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

編譯好後,我們可以開始安裝。但是根據筆者的經驗,可能很難成功啟動,我們來看看是不是。用如下指令安裝:

sudo yum localinstall
/home/james/rpmbuild/RPMS/x86_64/kernel-5.13.13-1.x86_64.rpm      

安裝好後,重新開機計算機。

Linux 啟動實戰

Oops!!系統起不來了!

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

很多小夥伴遇到這樣的問題,可能就束手無策了,現在我們來看看如何置之死地而後生!

首先,我們要了解,螢幕上的提示是什麼?它提示我們等待 dev-mapper-ao/swap 逾時,這個有兩個資訊:

第一是:我們的系統采用了 LVM 管理磁盤分區。

第二是:為啥我們沒有看到這個裝置?難道是磁盤裝置壞了?

不入虎穴,焉得虎子?

重新開機系統,開始 hacking!

在啟動界面,選擇 Anolis 系統預設的啟動項 4.19.91-24.7.an8。

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

按“e”鍵進入如下界面,并在對應的行,追加字元串 “rd.break=initqueue” 後,按 Ctrl+x 啟動。

關于 rd.break=initqueue,可以了解為在啟動階段暫停系統啟動并,切入啟動階段中 initqueue 這個階段中,把控制權交給人類。

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

拿到控制權以後,通過對應的指令,我們可以檢查到 disk 裝置的存在。

重新開機系統,進入到有問題的核心,按“e”鍵,再次追加“rd.break=initqueue” 後,按 Ctrl+x 啟動。

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

根據檢查的結果我們發現,确實在我們自己編譯的核心中,是無法引導系統啟動的。What’s wrong?

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

使用标準核心,重新登陸系統,通過 lsblk 指令檢查磁盤的使用狀态,發現我們是采用 NVMe 磁盤的,那麼我們的核心需要支援這個裝置才能確定它可以正常工作。

立刻打開核心的 menuconfig,檢查是否使能了對應的選項。

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

檢查後發現,确實沒有使能 NVME 支援!First blood! 按空格鍵,把它設定為“M”,意為以子產品形式使能。

重新編譯,并且安裝,重新開機系統!

Oops,again!

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

再次重新開機,系統直接進入救援模式。好吧,我們先看看日志!

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

注意,日志中下部的提示資訊,xfs 檔案系統未知。好吧,如果連 xfs 檔案系統都不識别的話,那應該還是元件沒有編譯導緻的。

配置核心參數:

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

一頓操作後,重新編譯,安裝,重新開機!

YYDS!

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

5.13.13 最新版本的核心,成功的運作在了龍蜥作業系統(Anolis OS)上。

不要高興得太早!

就在筆者正準備要發文檔的時候!發現了右上角的圖示缺少了一個天線!

這導緻我的浏覽器,無法正常工作!!WiFi LOST!

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

好吧!勝利在望,我們需要再來一次,這個可以判斷為 WiFi 驅動沒有安裝。

進入核心配置界面:
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

将 iwlwifi 相關的驅動程式,選擇為 “M” 使能,重新編譯,安裝,重新開機!

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

重新開機打開浏覽器,可算是可以看到龍蜥社群(openAnolis)的首頁了。噢,成功!

藍牙不好使?

當網絡可以連同的時候,發現藍牙不能工作。心力交瘁,繼續戰鬥!

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

沒有藍牙,滑鼠,耳機都受到影響!無奈!

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

視訊沒有聲音?

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

總結

在 Anolis 上定制自己的核心還是比較容易的噢!定制過程可以分為三個階段:

配置選擇:通過對核心的配置標明,來定制自己的系統核心;

引導啟動:通過調試確定核心可以正常啟動;

盡善盡美:外設的支援不影響到系統的啟動,但是會影響到使用者體驗。如藍牙、聲音等。本文主要涉及的核心子產品有 xfs 檔案系統,NVME 裝置驅動,wifi、藍牙、聲音等。

happy hacking!

—— 完 ——

”征文活動還在繼續,另外社群背包、貼紙、杯子等也準備好了,歡迎社群的開發者朋友們踴躍參與。

部分精美禮品展示:

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

社群定制T恤 | 社群筆記本

青春靓麗手提袋          

移動電源 | 神秘禮品魔方插座

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

龍蜥社群定制背包

加入龍蜥社群

加入微信群:添加社群助理-龍蜥社群小龍(微信:openanolis_assis),備注【龍蜥】拉你入群;加入釘釘群:掃描下方釘釘群二維碼。歡迎開發者/使用者加入龍蜥社群(OpenAnolis)交流,共同推進龍蜥社群的發展,一起打造一個活躍的、健康的開源作業系統生态!

Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動
Happy Hacking!如何在Anolis OS中打造屬于自己的Linux核心? | 征文活動

龍蜥社群釘釘交流群        龍蜥社群-小龍

關于龍蜥社群

龍蜥社群(OpenAnolis)是由企事業機關、高等院校、科研機關、非營利性組織、個人等按照自願、平等、開源、協作的基礎上組成的非盈利性開源社群。龍蜥社群成立于2020年9月,旨在建構一個開源、中立、開放的Linux上遊發行版社群及創新平台。

短期目标是開發龍蜥作業系統(Anolis OS)作為CentOS替代版,重新建構一個相容國際Linux主流廠商發行版。中長期目标是探索打造一個面向未來的作業系統,建立統一的開源作業系統生态,孵化創新開源項目,繁榮開源生态。

龍蜥OS 8.4

已釋出,支援x86_64和ARM64架構,完善适配Intel、飛騰、海光、兆芯、鲲鵬晶片。

歡迎下載下傳:

https://openanolis.cn/download

加入我們,一起打造面向未來的開源作業系統!

https://openanolis.cn

繼續閱讀