高中生寫的Fuchsia OS系統編譯的文章,真是厲害了

AWeiLoveAndroid發表於2019-12-16

這是一篇高中生寫的Fuchsia系統編譯的文章,不得不佩服現在的少年,真是厲害了我的哥,為這位高中生點贊,除了學習之外,還鑽研技術,一定是未來的棟樑人才,厲害厲害!我像他那麼大的時候,就喜歡打球看NBA,我還喜歡唱跳RAP。

Fuchsia OS 是 Google 全新推出的一款開源作業系統,該專案最早於 2016 年 8 月被注意到在 Github 上悄然露面。與之前谷歌開發的基於 Linux 核心的作業系統(如 Chrome OS 和 Android)相比,Fuchsia 基於一種名為「Zircon」的新微核心,該核心衍生自用於小型嵌入式裝置的微型作業系統「Little Kernel」。

作者寫文章不容易,覺得好看的話,點個贊支援一下吧,謝謝大家。

本文轉載自 Fuchsia 中文論壇 作者:FLEMON 原文連結:forum.fuchsia-china.com/t/754,

下面這個是配套的B站頻播放連結,點選即可播放:

www.bilibili.com/video/av795…


高中生寫的Fuchsia OS系統編譯的文章,真是厲害了

原文如下:

粉色 + 紫色 == Fuchsia (一個新的作業系統)。

歡迎來到Fuchsia中文社群!根據有關資訊,Fuchsia使用了 C、C++、Python、GO、Dart、FIDL、Rust 等多種語言,從系統上來看,似乎Google拋棄了Java,可能是 Java 虛擬機器執行速度不夠,效率低。

勿笑!!博主窮逼學生黨,配置渣,12年老筆記本,前段時間加了4G RAM共6G DDR3,換了西部500G 黑盤(固態是真的貴,水又很深,怕買到大號U盤),然後再戰一年到高考!!!具體配置如下:

系統 Ubuntu 18.04.3 LTS x64

CPU Intel® Core™ i3-2310M CPU @ 2.10GHz

虛擬化: VT-x

L1d 快取: 32K

L1i 快取: 32K

L2 快取: 256K

L3 快取: 3072K

(是不是很垃圾?)

GPU [AMD/ATI] Robson CE [Radeon HD 6370M]
(亮機卡)
記憶體1 2G DDR3 1333MHZ
記憶體2 4G DDR3 1333MHZ
複製程式碼

■ 準備你的編譯環境

Debian Ubuntu 系列安裝依賴包命令如下:

sudo apt-get install build-essential curl git python unzip

macOS如下: xcode-select --install Xcode,還需要最新版的 Xcode


■ 獲取原始碼

安裝Go 1.6版本以上,安裝Git然後配置好使用者名稱和郵箱。

下列命令會拉取大約15GB檔案,論壇裡也有打包好的,請自行尋找。(科學上網)

curl -s "https://fuchsia.googlesource.com/fuchsia/+/master/scripts/bootstrap?format=TEXT" | base64 --decode | bash
複製程式碼

高中生寫的Fuchsia OS系統編譯的文章,真是厲害了

【補充說明】:由於文章內容比較老,這裡更新一下,最近Fuchsia中文網已經有Fuchsia OS原始碼包映象下載,可以去下載體驗一下,速度非常快。地址如下:mirrors.sirung.org/fuchsia/

執行上面的命令後,終端視窗黃色提示訊息讓你把 .jiri_root/bin 路徑新增到變數,以便使用Fuchsia的工具鏈(jiri fx什麼的),可在終端輸入如下命令:

export PATH="/home/flomen/fuchsia/.jiri_root/bin:$PATH"
複製程式碼

或者直接將 PATH="/home/flomen/fuchsia/.jiri_root/bin:$PATH" 新增到.bashrc

如果遇到:

Updating all projects
WARN: Some packages are skipped by cipd due to lack of access, you might want to run "cipd auth-login" and try again
ERROR: context deadline exceeded
複製程式碼

這樣的錯誤提示,請按提示轉到相關網站,登陸Google賬號獲取密匙並新增到本機。

此時在你的home目錄就有個fuchsia資料夾,cd 進入fuchsia資料夾,可使用 jiri update 更新原始碼。

高中生寫的Fuchsia OS系統編譯的文章,真是厲害了


■ 編譯Fuchsia

這時需要用到fx命令,以前是 fx set x64 或者 fx set arm64 。現在原始碼有了些變化,需要使用:

fx set [PRODUCT].[BOARD]
複製程式碼

而這個[PRODUCT]輸入 fx list-products 檢視候選項,[BOARD]輸入 fx list-boards 檢視候選項。如圖所示:

高中生寫的Fuchsia OS系統編譯的文章,真是厲害了

可以看見,fuchsia已經支援較多裝置了,kirin970,高通835,高通msm8x53-som(不知道啥處理器),以及聯發科的8167s。 栗子

如下:

fx set workstation.x64 # x64 除錯版
fx set core.arm64 # arm64 除錯版
fx set core.x64 --release # x64 正式版
複製程式碼

預設 fx set core.x64 走起!!

高中生寫的Fuchsia OS系統編譯的文章,真是厲害了

等待一會兒,此時會在~/fuchsia/out目錄生成一些必要檔案,用於後續編譯構建。

高中生寫的Fuchsia OS系統編譯的文章,真是厲害了

接下來使用

fx build
複製程式碼

開始構建你的Fuchsia!! 正在編譯系統檔案

高中生寫的Fuchsia OS系統編譯的文章,真是厲害了

從速度上來看,Fuchsia編譯速度比Android快多了,而且錯誤也很少,幾乎沒有。從資源上來看,Android編譯JAVA通常吃我1.3GB的RAM,硬碟,CPU也是經常爆滿。而Fuchsia卻很可觀。

高中生寫的Fuchsia OS系統編譯的文章,真是厲害了

如圖右邊可以看出Fuchsia大法好!!!

編譯進行中,睡一覺再說。

高中生寫的Fuchsia OS系統編譯的文章,真是厲害了

遇到個錯誤,我啥都沒幹,再次輸入 fx build 後,錯誤又消失了,繼續編譯。

過程中遇到clang++: error: unable to execute command: Aborted (core dumped)的錯誤,要麼是clang++軟體內部錯誤,要麼是…(不知道)這時從新輸入 fx build 繼續編譯,經過大約5小時的編譯,終於完成了。


■ 執行Fuchsia

QEMU不支援Vulkan,因此無法執行Fuchsia的圖形堆疊。所以沒有UI。 此時輸入fx run -g

-m 用MB設定QEMU記憶體大小。

-g 啟用圖形介面。

-N 啟用網路。

-k 啟用KVM加速。
複製程式碼

然而這時彈出了

Could not extend fvm, unable to stat fvm image
複製程式碼

這樣的錯誤。解決方法: 用文字編輯器開啟~/fuchsia/tools/devshell/lib/fvm.sh,將stat_output=$(stat "${stat_flags[@]}" "${fvmraw}") 改為 stat_output=$(LC_ALL=C stat "${stat_flags[@]}" "${fvmraw}") 這是似乎是因為系統語言導致的相關問題。在size="${BASH_REMATCH[1]}" 的後面下一行echo $size 然後儲存,此時再 fx run -g 就能執行了。

高中生寫的Fuchsia OS系統編譯的文章,真是厲害了

ls 命令不能用?這就不妙了。

高中生寫的Fuchsia OS系統編譯的文章,真是厲害了

這我不知道怎麼搞,起碼現在系統已經啟動成功了。 接下來操作

ctrl+a x 將會退出QEMU的文字模式。

ctrl+a ? 或者 ctrl+a h 顯示所有支援的命令。

ctrl+alt+g 取消QEMU滑鼠捕獲。

ctrl+alt+tab 切換選項卡,debuglog是除錯資訊,1,2,3,4都是shell。
複製程式碼

要啟用網路,首先,為QEMU配置虛擬介面,點我(Google官網)。完成後新增 -N 和 -u 引數到 fx run :

fx run -N -u scripts/start-dhcp-server.sh
複製程式碼

然後自己探索Fuchsia吧。

dm help 檢視dm命令幫助

dm shutdown 關機


更多關於Flutter精彩乾貨,歡迎關注公眾號【Flutter那些事】,乾貨等你來拿。

相關文章