引言
fuchsia是谷歌正在研发的基于内核zircon的微内核系统。
1 获取源码
准备虚拟机中安装Ubuntu 16或以上版本,然后打开ubuntu终端,依次执行:
- 安装必要工具,执行 sudo apt-get install build-essential curl git python unzip
- 创建工作目录,执行 mkdir work
- 进入工作目录,执行 cd work
- 源码下载,执行 curl -s “https://fuchsia.googlesource.com/fuchsia/+/master/scripts/bootstrap?format=TEXT” | base64 --decode | bash
详情见 https://fuchsia.dev/fuchsia-src/development/source_code
2 编译源码
继续在ubuntu终端,依次执行
- 进入fuchsia目录,执行 cd fuchsia/
- 查询产品,执行 ./scripts/fx list-products
- 查询硬件平台,执行 ./scripts/fx list-boards
- 进行编译设置,执行 ./scripts/fx set workstation.qemu-arm64 --with="//bundles:kitchen_sink"
- 编译源码,执行 ./scripts/fx build -j4 2>&1
注1:将文件build/info/gen-latest-commit-date.sh中的内容 --date=unix 改为 --date=iso-strict-local
注2:workstation是产品,qemu-arm64是硬件平台,kitchen_sink编译规模(还有tools和tests)
详情见https://fuchsia.dev/fuchsia-src/getting_started#configure-and-build-fuchsia
3 运行虚拟机
继续在ubuntu终端,依次执行
- 安装虚拟网卡,执行 sudo ip tuntap add dev qemu mode tap user $USER和sudo ip link set qemu up
- 设置metrics,执行 ./scripts/fx metrics enable
- 将文件tools/devshell/lib/fvm.sh中的内容 if [[ “ s t a t o u t p u t " = S i z e : ( [ 0 − 9 ] + ) ] ] ; t h e n 改 为 i f [ [ " stat_output" =~ Size:\ ([0-9]+) ]]; then 改为 if [[ " statoutput"= Size: ([0−9]+)]];then改为if[["stat_output” =~ 大小:([0-9]+) ]]; then
- 虚拟机中运行,执行 ./scripts/fx qemu -N