這是一篇高中生寫的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站頻播放連結,點選即可播放:
原文如下:
粉色 + 紫色 == 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中文網已經有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
這時需要用到fx
命令,以前是 fx set x64
或者 fx set arm64
。現在原始碼有了些變化,需要使用:
fx set [PRODUCT].[BOARD]
複製程式碼
而這個[PRODUCT]
輸入 fx list-products
檢視候選項,[BOARD]
輸入 fx list-boards
檢視候選項。如圖所示:
可以看見,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/out
目錄生成一些必要檔案,用於後續編譯構建。
接下來使用
fx build
複製程式碼
開始構建你的Fuchsia!! 正在編譯系統檔案
從速度上來看,Fuchsia編譯速度比Android快多了,而且錯誤也很少,幾乎沒有。從資源上來看,Android編譯JAVA通常吃我1.3GB的RAM,硬碟,CPU也是經常爆滿。而Fuchsia卻很可觀。
如圖右邊可以看出Fuchsia大法好!!!
編譯進行中,睡一覺再說。
遇到個錯誤,我啥都沒幹,再次輸入 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
就能執行了。
ls
命令不能用?這就不妙了。
這我不知道怎麼搞,起碼現在系統已經啟動成功了。 接下來操作
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那些事】,乾貨等你來拿。