这是一篇高中生写的Fuchsia系统编译的文章,不得不佩服现在的少年,真是厉害了我的哥,为这位高中生点赞,除了学习之外,还钻研技术,一定是未来的栋梁人才,厉害厉害!我像他那么大的时候,就喜欢打球看NBA,我还喜欢唱跳RAP。
Fuchsia OS 是 Google 全新推出的一款开源操作系统,该项目最早于 2016 年 8 月被注意到在 Github 上悄然露面。与之前谷歌开发的基于 Linux 内核的操作系统(如 Chrome OS 和 Android)相比,Fuchsia 基于一种名为「Zircon」的新微内核,该内核衍生自用于小型嵌入式设备的微型操作系统「Little Kernel」。
作者写文章不容易,觉得好看的话,点个赞支持一下吧,谢谢大家。
本文转载自 Fuchsia 中文论坛 作者:FLEMON 原文链接:forum.fuchsia-china.com/t/754,
下面这个是配套的B站频播放链接,点击即可播放:
原文如下:
粉色 + 紫色 == Fuchsia (一个新的操作系统)。
欢迎来到Fuchsia中文社区!根据有关信息,Fuchsia使用了 C、C++、Python、GO、Dart、FIDL、Rust 等多种语言,从系统上来看,似乎Google抛弃了Java,可能是 Java 虚拟机运行速度不够,效率低。
勿笑!!博主穷逼学生党,配置渣,12年老笔记本,前段时间加了4G RAM共6G DDR3,换了西部500G 黑盘(固态是真的贵,水又很深,怕买到大号U盘),然后再战一年到高考!!!具体配置如下:
系统 Ubuntu 18.04.3 LTS x64
CPU Intel® Core™ i3-2310M CPU @ 2.10GHz
虚拟化: VT-x
L1d 缓存: 32K
L1i 缓存: 32K
L2 缓存: 256K
L3 缓存: 3072K
(是不是很垃圾?)
GPU [AMD/ATI] Robson CE [Radeon HD 6370M]
(亮机卡)
内存1 2G DDR3 1333MHZ
内存2 4G DDR3 1333MHZ
■ 准备你的编译环境
Debian Ubuntu 系列安装依赖包命令如下:
sudo apt-get install build-essential curl git python unzip
macOS如下: xcode-select --install Xcode,还需要最新版的 Xcode
■ 获取源代码
安装Go 1.6版本以上,安装Git然后配置好用户名和邮箱。
下列命令会拉取大约15GB文件,论坛里也有打包好的,请自行寻找。(科学上网)
curl -s "https://fuchsia.googlesource.com/fuchsia/+/master/scripts/bootstrap?format=TEXT" | base64 --decode | bash
【补充说明】:由于文章内容比较老,这里更新一下,最近Fuchsia中文网已经有Fuchsia OS源码包镜像下载,可以去下载体验一下,速度非常快。地址如下:mirrors.sirung.org/fuchsia/
执行上面的命令后,终端窗口黄色提示消息让你把 .jiri_root/bin 路径添加到变量,以便使用Fuchsia的工具链(jiri fx什么的),可在终端输入如下命令:
export PATH="/home/flomen/fuchsia/.jiri_root/bin:$PATH"
或者直接将 PATH="/home/flomen/fuchsia/.jiri_root/bin:$PATH"
添加到.bashrc
如果遇到:
Updating all projects
WARN: Some packages are skipped by cipd due to lack of access, you might want to run "cipd auth-login" and try again
ERROR: context deadline exceeded
这样的错误提示,请按提示转到相关网站,登陆Google账号获取密匙并添加到本机。
此时在你的home目录就有个fuchsia文件夹,cd 进入fuchsia文件夹,可使用 jiri update
更新源码。
■ 编译Fuchsia
这时需要用到fx
命令,以前是 fx set x64
或者 fx set arm64
。现在源码有了些变化,需要使用:
fx set [PRODUCT].[BOARD]
而这个[PRODUCT]
输入 fx list-products
查看候选项,[BOARD]
输入 fx list-boards
查看候选项。如图所示:
可以看见,fuchsia已经支持较多设备了,kirin970,高通835,高通msm8x53-som(不知道啥处理器),以及联发科的8167s。 栗子
如下:
fx set workstation.x64 # x64 调试版
fx set core.arm64 # arm64 调试版
fx set core.x64 --release # x64 正式版
默认 fx set core.x64
走起!!
等待一会儿,此时会在~/fuchsia/out
目录生成一些必要文件,用于后续编译构建。
接下来使用
fx build
开始构建你的Fuchsia!! 正在编译系统文件
从速度上来看,Fuchsia编译速度比Android快多了,而且错误也很少,几乎没有。从资源上来看,Android编译JAVA通常吃我1.3GB的RAM,硬盘,CPU也是经常爆满。而Fuchsia却很可观。
如图右边可以看出Fuchsia大法好!!!
编译进行中,睡一觉再说。
遇到个错误,我啥都没干,再次输入 fx build 后,错误又消失了,继续编译。
过程中遇到clang++: error: unable to execute command: Aborted (core dumped)
的错误,要么是clang++
软件内部错误,要么是…(不知道)这时从新输入 fx build
继续编译,经过大约5小时的编译,终于完成了。
■ 运行Fuchsia
QEMU不支持Vulkan,因此无法运行Fuchsia的图形堆栈。所以没有UI。
此时输入fx run -g
-m 用MB设置QEMU内存大小。
-g 启用图形界面。
-N 启用网络。
-k 启用KVM加速。
然而这时弹出了
Could not extend fvm, unable to stat fvm image
这样的错误。解决方法:
用文本编辑器打开~/fuchsia/tools/devshell/lib/fvm.sh
,将stat_output=$(stat "${stat_flags[@]}" "${fvmraw}")
改为
stat_output=$(LC_ALL=C stat "${stat_flags[@]}" "${fvmraw}")
这是似乎是因为系统语言导致的相关问题。在size="${BASH_REMATCH[1]}"
的后面下一行echo $size
然后保存,此时再 fx run -g
就能运行了。
ls
命令不能用?这就不妙了。
这我不知道怎么搞,起码现在系统已经启动成功了。 接下来操作
ctrl+a x 将会退出QEMU的文本模式。
ctrl+a ? 或者 ctrl+a h 显示所有支持的命令。
ctrl+alt+g 取消QEMU鼠标捕获。
ctrl+alt+tab 切换选项卡,debuglog是调试信息,1,2,3,4都是shell。
要启用网络,首先,为QEMU配置虚拟接口,点我(Google官网)。完成后添加 -N 和 -u 参数到 fx run :
fx run -N -u scripts/start-dhcp-server.sh
然后自己探索Fuchsia吧。
dm help
查看dm命令帮助
dm shutdown
关机
更多关于Flutter精彩干货,欢迎关注公众号【Flutter那些事】,干货等你来拿。