天天看點

編譯 Zircon 核心一. 背景二. 編譯環境三.安裝編譯需要的依賴四. 下載下傳與編譯五. 運作六. 參考資料

我已經搭建了個人部落格站點, 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

目錄,

從目錄中可以看出, 上面的指令下載下傳了以下幾個檔案.

  1. clang.zip
  2. gcc.zip
  3. qemu.zip
  4. symbolize.zip
  5. 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

目錄下.

注意

:

  1. 不要在等在輸入指令的時候按

    CTRL + C

    , 會卡住, 隻有關閉終端重新進入.
  2. CTRL

    +

    a

    +

    x

    退出模拟環境,回到Ubuntu 的終端中.

六. 參考資料

https://fuchsia.googlesource.com/zircon/+/HEAD/docs/getting_started.md