编译 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-devlibsdl-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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值