本文讲述在linux环境下fushia系统的编译环境搭建(系统ubuntu 14.04);
Fuchsia是Google主要为IoT(物联网)、PC以及移动端开发的新一代只能操作系统。与之前的Android、Chrome OS、Brillo等操作系统相比,区别之一就是它没有基于Linux内核,而是采用了微内核的Magenta(基于Little kernel)。Linux经过二、三十年的发展,今天无论是嵌入式设备还是分布式服务器,都有它的身影。但它起源于desktop时代,经过这么多年的活跃开发今天已俨然成为“大而全”的通用型内核。虽然可以通过裁剪、定制、增强满足IoT的基本功能,但时至今日种类多样的IoT设备在功能性、实时性、功耗、内存、性能上都提出了新的要求,而Fushcia就是Google继基于Android的Brillo之后尝试开发全新OS的产物。
按照谷歌给出的fushia系统环境搭建提示,这里一步步记录我在自己机器上搭建的过程;参考地址
- 首先,安装编译需要的工具:
sudo apt-get install golang git-all build-essential curl
!上述安装的编译工具不完全,编译过程中报错;我的机器上进行了一下额外包的安装:
sudo apt-get install texinfo libglib2.0-dev autoconf libtool libsdl-dev flex bison
- **其次,下载源
curl -s https://raw.githubusercontent.com/fuchsia-mirror/jiri/master/scripts/bootstrap_jiri | bash -s fuchsia
cd fuchsiao cp .jiri_root/bin/jiri /usr/local/bin
sudo chmod 755 /usr/local/bin/jiri
- 同步代码到本地
- 执行下面命令进行代码同步(我使用hosts,上不了谷歌的同学可以使用laod分享的hosts):
jiri import fuchsia https://fuchsia.googlesource.com/manifest
jiri update
同步完成总共大概快6G;
- 第三步,编译fushia的工具链:
在源码顶层目录下执行脚本开始编译(如果编译依赖 的工具没有安装完全会在此时报错,按照错误提示安装所需工具):
./scripts/build-toolchain.sh
这个过程比较慢,如果你的机器比较好的话那还好(内存、cpu要好点);编译完成之后的工具链默认放在out/toolchain目录下;此时工具链编译完成,如下所示;
~/workdir/fuchsia$ ls out/toolchain/
clang+llvm-x86_64-linux
- 第四部,更新代码继续编译
如果后期你更新了代码需要再次编译的话执行:
- 更新本地代码
jiri update
- 重新clean并再次编译整个工程
./scripts/build-toolchain.sh -c
- 更新本地代码
至此我们已经位fushia系统的编译清扫了障碍,下面进一步编译fushia系统根文件系统和内核;
- 编译根文件系统和内核
./scripts/build-sysroot.sh
- 然后编译系统,不加任何参数默认编译的是 x86-64平台架构;
./packages/gn/gen.py
./buildtools/ninja -C out/debug-x86-64
- gen.py脚本位不通架构平台的编译提供了参数,开发者可以在脚本后面制定特定平台标识来为特定架构编译;
./packages/gn/gen.py --target_cpu=aarch64
./buildtools/ninja -C out/debug-aarch64
如果你配置了ccache 环境加速编译过程,可以按照下面的方式来搞,这样编译速度会快不少
./packages/gn/gen.py --ccache
./buildtools/ninja -C out/debug-x86-64
在qemu中运行fushia系统
- 下面命令会自动创建一个引导文件在
out/debug-{arch}/user.bootfs
下面;
./scripts/run-magenta-x86-64 -x out/debug-x86-64/user.bootfs -m 2048
./scripts/run-magenta-arm64 -x out/debug-aarch64/user.bootfs -m 2048
-x
参数制定内核文件目录-m
参数制定使用qemu运行fushia时分配的内存空间大小-g
参数启动图形控制台
【注意】 上面的命令会调用qemu来运行,如果您没有安装qemu的话执行会说没有qemu-system-xxxx;
执行命令sudo apt-get install qemu -y
安装qemu即可。