我已經搭建了個人部落格站點, blog.joelzho.com 歡迎通路
一. 背景
Zircon 是 Google 的新作業系統 Fuchsia 的核心.
我的編譯環境是在虛拟機裡面搭建的.
在 Mac 上通過 Paralles 安裝 Ubuntu 18.04.1 LTS.
二. 編譯環境
uname -a
Linux ubuntu 4.15.0-34-generic
#37-Ubuntu SMP Mon Aug 27 15:21:48 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.1 LTS
Release: 18.04
Codename: bionic
三.安裝編譯需要的依賴
3.1 為了做測試, 我的系統是剛安裝的新系統,是以我需要先安裝以下軟體.
sudo apt-get install git
sudo apt-get install curl
sudo apt-get install vim
3.2 安裝依賴
sudo apt-get install texinfo libglib2.0-dev autoconf libtool bison libsdl-dev build-essential
在我目前的環境下安裝直接報錯了,
其中
libglib2.0-dev
和
libsdl-dev
安裝失敗了,
于是我先把能安裝的安裝上.
sudo apt-get install texinfo
sudo apt-get install autoconf
sudo apt-get install libtool
sudo apt-get install bison
sudo apt-get install build-essential
3.3 安裝
libglib2.0-dev
報錯示例如下:
The following packages have unmet dependencies:
libglib2.0-dev :
Depends: libglib2.0-0 (= 2.56.1-2ubuntu1) but 2.56.2-0ubuntu0.18.04.1 is to be installed
Depends: libglib2.0-bin (= 2.56.1-2ubuntu1)
E: Unable to correct problems, you have held broken packages.
解決辦法參考:
sudo apt-get install libglib2.0-0=2.56.1-2ubuntu1
sudo apt-get install libglib2.0-dev
3.4 安裝
libsdl-dev
套路: 遞歸檢視缺少的依賴, 少啥裝啥.
錯誤示例我就不貼處理了, 直接上的我的安裝過程.
sudo apt-get install libpng16-16=1.6.34-1
sudo apt-get install libpng-dev
sudo apt-get install libslang2-dev
sudo apt-get install libcaca-dev
sudo apt-get install libx11-6=2:1.6.4-3
sudo apt-get install libx11-xcb1=2:1.6.4-3
sudo apt-get install libx11-xcb-dev
sudo apt-get install libglvnd0=1.0.0-2ubuntu2
sudo apt-get install libegl1=1.0.0-2ubuntu2
sudo apt-get install libgles2=1.0.0-2ubuntu2
sudo apt-get install libgl1=1.0.0-2ubuntu2
sudo apt-get install libglx0=1.0.0-2ubuntu2
sudo apt-get install libopengl0=1.0.0-2ubuntu2
sudo apt-get install libglvnd-dev
sudo apt-get install libglu1-mesa-dev
sudo apt-get install libpulse0=1:11.1-1ubuntu7
sudo apt-get install libpulse-mainloop-glib0=1:11.1-1ubuntu7
sudo apt-get install libxext-dev
sudo apt-get install libasound2-data=1.1.3-5
sudo apt-get install libasound2=1.1.3-5
sudo apt-get install libasound2-dev
sudo apt-get install libsdl-dev
四. 下載下傳與編譯
4.0. 備注
以下操作可能需要你的網絡可以通路 Google(你懂得!),
我拉取項目是在香港阿裡雲完成的,
download-prebuilt 指令下載下傳的檔案也是.
我修改了 download-prebuilt 腳本, 讀取我已經下載下傳好了的檔案進行處理.
好吧, 其實我的網絡是可以上 Google 的, 上面隻是給不能上 Google 的人的解決方案.
4.1. 下載下傳源碼
git clone --depth=1 https://fuchsia.googlesource.com/zircon
在以下的内容中, 我将 克隆下來的 zircon 目錄 命名為:
$ZIRCON
4.2 下載下傳編譯前需要的環境
cd $ZIRCON/scripts/
./download-prebuilt
從
download-prebuilt
這個腳本中可以看到,下載下傳檔案的路徑字首為:
https://chrome-infra-packages.appspot.com/dl/fuchsia
下載下傳完成之後, 在
$ZIRCON
目錄下多出來了一個
prebuilt
目錄,
從目錄中可以看出, 上面的指令下載下傳了以下幾個檔案.
- clang.zip
- gcc.zip
- qemu.zip
- symbolize.zip
- sysroot.zip
4.3 編譯
我的系統是 64位的, 是以我編譯64位的核心.
cd $ZIRCON
make -j32 x64
編譯成功之後會在
$ZIRCON
目錄下多出一個
build-x64
檔案夾.
五. 運作
在第
4.2
步驟中, 腳本已經幫我們下載下傳好了
qemu
, 是以我們無需去再次下載下傳編譯 模拟環境了.
直接運作.
cd $ZIRCON/scripts/
./run-zircon-x64
可以看到輸出了一大堆啟動日志, 當輸出結束後,你的光标會停留在最底部的第一個位置(我之前以為是卡住了…);
接下來可以先執行以下
ls
指令, 然後每次輸入指令之前就有一個
$
符号了.
我們可以玩(執行)的指令都在
/boot/bin
目錄下.
注意
:
- 不要在等在輸入指令的時候按
, 會卡住, 隻有關閉終端重新進入.CTRL + C
- 按
+CTRL
+a
退出模拟環境,回到Ubuntu 的終端中.x
六. 參考資料
https://fuchsia.googlesource.com/zircon/+/HEAD/docs/getting_started.md