教程

Fuchsia OS 编译指南

11
AUTHOR: Locez
VERSION: 1

### Fuchsia 简介

在进入本文正文之前,有必要简单介绍一下 Fuchsia 是个什么东西

Fuchsia 是 Google 在 2016 年 8 月推出出的一个操作系统,是一个实时操作系统。它不再基于 Linux 内核,而是基于名为 Zircon 的微内核,并且它被设计为支持多种设备,手机、平板、PC,因此可以猜测其准备在三种终端设备上进行一定的统一

在官方文档中有这么一句话:

Pink + Purple = Fuchsia(a new Operating System)

可以作为该系统的 slogan

在本文,将介绍从源码编译该系统进行探索体验

### 环境准备

- go ( >=1.6 )
- git
- python (2.7)
- qemu

在 Fuchsia 官方提供的各种脚本中使用的 python 2 的代码,因此此处请确保你的 python 解释器是 2.7 的

go 则是因为获取源码的工具用到了 go 环境

### 获取源码

获取源码的方式非常简单,执行以下命令即可,但是要注意源码有 15 G 左右,下载下来还是非常需要时间的

$ mkdir fuchsia
$ cd fuchsia
$ curl -s "https://fuchsia.googlesource.com/scripts/+/master/bootstrap?format=TEXT" | base64 --decode | bash

### 编译 Fuchsia

注意,编译的过程非常简单,但是可能需要安装一些额外的依赖,在本人的 gentoo 系统中,编译环境本身是齐全的,如果你按照以下的命令编译不成功,可根据 Error 安装相应的依赖包,下面是一条官方给出的 debian 系统的依赖安装命令:

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

Fuchsia 目前支持 x64arm64 两种架构,此处我们编译 x64 版本,从时间上来说编译时间比预期要短的多,本人只编译了 1h 左右,编译的文件有两万六千多个

$ cd fuchsia
$ ./scripts/fx set x64
$ ./scripts/fx full-build

### 使用 QEMU 启动 Fuchsia

Fuchsia 的图形界面需要 vulkan 进行硬件加速才可以使用,所以使用 QEMU 进行模拟启动的时候只会有简单的界面而已,使用如下命令启动 tty 界面,其中 -m 用于指定使用的内存,单位(MB),本人内存多就随便设置了

./scripts/fx run  -m 4096

另外可用以下命令启动简易版的图形界面

/scripts/fx run  -m 4096 -g

在这个简易的图形界面中,我们可以看到有 4tab 可用Alt+Tab 按键进行切换,第一个是 debug,其余 3 个是普通终端,可在上面输入命令

系统目前含有198 个命令,已经实现了大部分我们常用的系统基础命令,甚至还包含 vim 噢

### 简单探索

从上面的图中,我们也可以看到 Fuchsia 的根目录包含以下几个目录(由于该系统还没 tree 命令,因此我无法给出目录树)

blob
boot
config
data
dev
hub
install
pkgfs
svc
system
tmp
volume
  • blob 文件夹中其实是一些二进制数据,具体该文件夹的作用尚不明确
  • boot 顾名思义,启动文件夹,其下有 bin config driver kernel lib 等子文件夹,有关系统启动的文件放在此处
  • config 文件夹下是 ssl 证书目录,推测相关配置文件放在此处
  • data 尚不清楚具体用途,推测是存放应用数据
  • dev 设备文件夹
  • svc 文件夹包含一系列 fuchsia.* 开头的文件
  • system 目录与 boot 目录的结构类似,没有 kernel config
  • volume install 等目录都是空目录,无法推测其用途

另外值得一提的是虽然 system 文件夹中目前不含有 apps 文件夹,但是 PATH 变量是包含该目录的,因此可以推测安装的应用应该会放到 /system/apps

PS:最后关机输入 dm poweroff 即可

### 总结

本文其实整体编译流程与官方文档差不多,如果你的英文阅读能力还可以的话,可以去阅读英文文档,应该会比笔者讲的细节要对,其次就是对 Fuchsia 进行了简单的探索,说实话也不算是探索,因为对该系统最好奇的还是 UI,但是由于没有对应的硬件,无法进行测试体验,这也算是在意料之外的。

Google 刚刚发布的这个产品, 很有可能就是传说中的 Fuchsia OS 设备

Previous article

已知的第一款机型!华为正在 Honor Play 上测试 Google Fuchsia OS!

Next article

You may also like

11 Comments

  1. 老铁你获取源码那一步命令少了一个 | bash

    1. 感谢指正

  2. 请问下我在下载的时候出错了怎么解决:

    ERROR: exit status 1

    Wait for 5s before next attempt…: running hook(prebuilt-dart-sdk) for project topaz

    Attempt 3/3: running hook(prebuilt-dart-sdk) for project topaz

    ERROR: “running hook(prebuilt-dart-sdk) for project topaz” failed 3 times in a row, Last error: exit status 1

    IOError: [Errno url error] invalid proxy for http: ‘127.0.0.1:8118’

    output for hook(prebuilt-dart-sdk) for project “topaz”

    ERROR: Hooks execution failed.

    thanks!

  3. 请问下下载出错如何解决:
    ERROR: exit status 1

    Wait for 5s before next attempt…: running hook(prebuilt-dart-sdk) for project topaz

    Attempt 3/3: running hook(prebuilt-dart-sdk) for project topaz

    ERROR: “running hook(prebuilt-dart-sdk) for project topaz” failed 3 times in a row, Last error: exit status 1
    IOError: [Errno url error] invalid proxy for http: ‘127.0.0.1:8118’

    output for hook(prebuilt-dart-sdk) for project “topaz”

    ERROR: Hooks execution failed.

    1. Hi, 不太清楚具体原因,据论坛网友反馈,大几率是:(环境软件版本不对,网络超时),你可以多试几次,以及下载论坛里已经通过编译的代码来检验是否问题如是。

  4. 求壁紙XD

    1. 加电报群或者QQ群,手动at群主发给你,哈哈

      1. 給群號

  5. 老铁,这个下载地址是不是错了,每次都是超时。

    1. 需要科学上网

  6. 你好,关于帖子里的两条命令是否已经过时,我在19年8月13日进行拉代码编译,有两条命令报出了错误提示,一条是fx set x64,给出的提示为fx set core.x64,另一条是fx full-build,错误提示大概为没有那个可选项,查看帮助里的编译命令为build Run Ninja to build Fuchsia

Leave a reply

电子邮件地址不会被公开。