fuchsia的编译与U盘启动

时隔一年,我又回来了。

这次会对上次的过程进行一定的补充,同样还是完整的流程,配置贴上:

本次将使用此机器进行编译,大约会耗时30min,比上次的6小时好太多。

1.安装所需软件包:

For Ubuntu:

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

2.获取源码

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

注意,以上操作会在主目录创建一个fuchsia文件夹,所以不要自己创建一个fuchsia文件夹然后cd进去,不然就是~/fuchsia/fuchsia了。该过程耗时较长,并且需要科学上网,也可以从本论坛镜像站获取,或者用vps主机同步,再打包tar.gz,然后用vps开启ftp服务,再在自己电脑上下载。另外该过程需要cipd登录,执行:

./fuchsia/.jiri_root/bin/cipd auth-login

终端会给你一个地址,需要科学的复制到浏览器进行访问,会得到一串编码,把该编码复制进终端,回车即可。执行:

./fuchsia/,jiri_root/bin/jiri update

然后耐心等待完成。

3.部署环境
为了方便使用一些工具,例如 jirifxcipd ,我们可以把~/fuchsia/.jiri_root/bin添加到环境变量中。打开文件管理,CTRL+H显示隐藏文件,使用文本编辑器打开.bashrc,在末尾添加:

PATH="~/fuchsia/.jiri_root/bin:$PATH"
source "~/fuchsia/scripts/fx-env.sh"
fx-update-path

然后执行:

source .bashrc    //使环境变量生效,或者重启终端也可以。

如果该环境变量无法起作用,请把~替换为绝对路径。

4.查看编译选项
fx list-boards //列出支持的board
fx list-products //列出支持的product

讲解:
fx set <product>.<board> //配置你要编译的类型
fx build [options] //编译
fx mkzedboot [storage device] //将启动文件写入储存设备
fx serve //创建服务,在编译好的fvm镜像中是不带很多软件包的,需要通过推送到设备安装,像是系统和app分离了
fx pave //似乎和fx serve没多大区别。
fx flash [device] //将镜像写入储存设备,这样就不用zedboot去开推送系统。

5.配置和编译
fx set workstation.x64
product表示你要编译哪些东西,workstation基本包含了所有软件包,core包含核心命令和universe包,bringup是最小的集成,专门用于使用网络部署系统。
boards自己看名字就懂了,是选择要运行的设备类型。
fx build
然后就是等待了。

完成,耗时约半小时。

6.写入U盘
使用lsblk命令查看储存设备,找到U盘。
执行 sudo mkzedboot [device],device是U盘,例如/dev/sdc

7.启动部署
在目标[target]机器开启网络堆栈功能,然后UEFI启动U盘。
目标主[target]机会进入一个命令行界面,带有两个终端,使用CTRL+ALT+TAB切换tab标签,你需要一个空白的硬盘来安装Fuchsia,使用命令:

lsblk

查看你的硬盘设备。然后再:

install-disk-image init-partition-tables [这里填储存设备选项,我忘了填什么了] <存储设备路径>

这个命令会在中创建新的分区表和分区。

然后在服务[host]主机上运行fx serve

但在这里,很不幸我的目标主机似乎无法链接上局域网,CPU为G3930,主板是H110M,没法使用pave和serve,目前还没尝试fx flash,正在探索中。