Fuchsia 试玩——源码获取、构建、运行

源码获取

Pink + Purple == Fuchsia (a new Operating System)

Fuchsia 是谷歌新推出的一款OS。其内核为 Zircon
因为众所周知的原因,需要翻出去才能下载源码,怎么翻这里就不详述了。
Fuchsia 的源代码有多个 git 仓库,使用 Jiri 进行管理,因此下载 Fuchsia 的源代码也需要安装 Jiri。
Fuchsia 仓库地址是 https://fuchsia.googlesource.com,相应的文档也在这里,也可参考 https://fuchsia.dev/。

下载、构建、运行

下载

Debian 类的 Linux
sudo apt-get install build-essential curl git python unzip

The bootstrap procedure requires that you have Go 1.6 or newer and Git installed and on your PATH.
This script will bootstrap a development environment for by first creating directories fuchsia.

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

详情请参阅
按照提示将 $FUCHSIA_DIR/.jiri_root/bin 添加到环境变量里。

ln -s `pwd`/scripts/fx ~/bin
构建
fx set core.x64 --with //bundles:kitchen_sink
fx build

构建选项命令格式如下,这个命令指定了构建的选项并且在 out/xxx 里生成构建系统本身。

fx set [product].[board] --with //bundles:[name]

product 指产品配置,我们可以通过 fx list-products 来查看所有的产品配置列表。

介绍最基本三个:

  • bringup,最小的系统功能集,没有网络支持等,我猜可能仅是个能运行起来的内核和驱动程序等
  • core,安装了基本程序的最小功能集,例如网络能力等,比 bringup 高级一点
  • workstation,通用开发环境的基础,包含了例如 UI、媒体和我们想折腾的一些东西

board 指芯片架构,我们同样可以通过 fx list-boards 来查看支持的板子、芯片架构。

name 指额外的模块,比如测试程序等,文档提到三个选择,分别是 toolstests 以及 kitchen_sink

它们的含义分别是:

  • tools,包含了大量的开发人员工具,例如 shell 组件,ls、vim、cat、curl 等
  • tests,包含所有的测试程序,这个选项编译完成后占用空间较大
  • kitchen_sink,包含所有其他构建目标,编译完成后占用空间超级大

编译输出目录默认为 out/default,也可以指定。
这里贴上完整的编译命令,fx --dir out/aarch64 set core.arm64 --with //bundles:tests

之后运行 fx build 就可以编译 Fuchsia 系统了,目前编译完成后大小 70G+

运行

构建完成后在 buildtools/qemu 中就已经有了 qemu
fx run 就可以让 fuchsia 跑起来了。
fx run -h 可以查看支持的命令。

  • exit qemu,ctrl + a then x
  • ctrl+a ? or ctrl+a h prints all supported commands. 这里指 qemu 本身支持的命令。

关闭 fuchsia 系统也很简单,运行 dm shutdown 即可。

进一步探索

使能网络功能

官方文档中告诉我们,需要设置本地 DHCP 服务器和 NAT 为 Fuchsia 配置 IPv4 接口和路由,因此我们启动 Fuchsia 时用一个配置 DHCP 的脚本启动。退出之前的系统,重新启动一个带网络功能的 fuchsia。
fx run -N -u scripts/start-dhcp-server.sh

启动 fuchsia 的开发更新服务器,用来上传一些应用程序和文件到 fuchsia 上。这里另起一个 shell,进入 $FUCHSIA_DIR 运行fx serve -v。启动成功后,我们再打开一个 shell 终端,运行 fx shell,哒哒,现在我们通过登录到 Fuchsia 中了~

接下来我们可以测试一下内置的一些程序,比如 fortune, cowsay Hi!

实际运行发现如果不打开 fx serve -v 会报错。

Cannot create child process: -1 (ZX_ERR_INTERNAL): failed to resolve fuchsia-pkg://fuchsia.com/fortune#bin/fortune

运行 fx serve -v 开启开发更新服务后就能运行了。fortune 会返回一句名人名言,很有意思。在这里插入图片描述
cowsay Hi! 是一头牛说 Hi。

 ______
| Hi!  |
 ------
     \  ^__^
      \ (oo)\_____
        (__)\     )\/\
           ||----w |
           ||     ||
更新 package

Almost everything that exists on a Fuchsia system is stored in a Fuchsia package.

可以运行其他程序么?当然是可以的。fx list-packages 查看构建的包。
如果代码有更改,我们可以使用如下命令编译该代码并推送到 Fuchsia 上。

fx build-push hello_world_cpp_tests

然后在 fuchsia 的 shell 上运行即可,run hello_world_cpp_tests

比如我们修改 garnet/bin/rolldice/src/main.rs 的代码,增加一句输出。
运行 fx build-push rolldice,然后再次运行 rolldice 则可以得到如下的输出,第一句话就是增加的语句了,可见代码已更新到 packages。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Fuchsia是Google开发的一种新型操作系统,其前端开发涉及到开发用户界面(UI)以及用户体验(UX)。Fuchsia前端开发主要包括以下几个方面: 首先,Fuchsia前端开发需要熟悉Fuchsia操作系统的架构和设计理念。Fuchsia采用了微内核架构,前端开发者需要了解Fuchsia的组件和服务间的通信机制,以及如何使用Fuchsia的API进行开发。 其次,Fuchsia前端开发需要掌握谷歌的开发工具和技术。例如,Flutter是谷歌推出的用于开发跨平台应用的工具,Fuchsia前端开发可以使用Flutter来开发Fuchsia应用的用户界面。前端开发者需要熟悉Flutter的语法和组件库,以及如何使用Flutter进行布局、动画和交互等方面的开发。 另外,Fuchsia前端开发还需要关注用户体验(UX)的设计。前端开发者需要了解如何设计符合Fuchsia用户界面准则的界面,以提供流畅、一致且美观的用户体验。这包括对界面元素的布局、颜色和字体等方面的设计。 最后,Fuchsia前端开发需要进行测试和调试。前端开发者需要学会使用调试工具来检查和修复应用中可能出现的问题,以确保应用的稳定性和性能。 总而言之,Fuchsia前端开发需要具备对Fuchsia操作系统的深入了解,掌握开发工具和技术,关注用户体验设计,并具备良好的测试和调试能力。只有熟练掌握这些要素,才能够开发出高质量的Fuchsia前端应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值