下载 Fuchsia 源代码

本指南介绍了如何下载 Fuchsia 源代码并在您的机器上设置 Fuchsia 开发环境。

具体步骤如下:

  1. 安装前提条件软件包
  2. 执行预检检查
  3. 下载 Fuchsia 源代码
  4. 设置环境变量
  5. 配置防火墙规则(可选)

1. 安装必备软件包

Fuchsia 要求 curlfileunzipgit 保持最新状态。git 的版本需要为 2.31 或更高版本。

如需安装或更新这些软件包,请运行以下命令:

sudo apt install curl file git unzip

可选)如果您想运行 Fuchsia 模拟器 (FEMU),请考虑在继续执行下一部分之前完成以下额外步骤:

2. 执行预检检查

Fuchsia 提供了一个预检检查工具 (ffx platform preflight),用于检查您的机器,并告知您可能影响在该机器上从源代码构建 Fuchsia 的任何问题。

如需执行预检检查,请运行以下命令:

curl -sO https://storage.googleapis.com/fuchsia-ffx/ffx-linux-x64 && chmod +x ffx-linux-x64 && ./ffx-linux-x64 platform preflight

3. 下载 Fuchsia 源代码

Fuchsia 引导脚本会创建一个名为 fuchsia 的目录并下载 Fuchsia 源代码。

下载 Fuchsia 源代码需要大约 2 GB 的机器空间。根据您的 build 配置,您稍后在 build Fuchsia 时还需要 80 到 90 GB 的空间。此外,下载过程会占用大量内存。建议在此期间关闭非关键进程。

如需下载 Fuchsia 源代码,请执行以下操作:

  1. 选择一个用于下载 Fuchsia 源代码的目录,例如:

    cd $HOME
  2. 运行引导脚本:

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

    此脚本会创建 fuchsia 目录并下载源代码。

    如果您在引导过程中看到 Invalid authentication credentials 错误,请参阅身份验证错误以获取帮助。

    如果您的互联网连接速度较慢,并且遇到超时问题,您可能需要直接下载引导脚本并增加 -fetch-packages-timeout-hook-timeout 的值。这些超时时间以分钟为单位,表示软件包下载的超时时间为 2 小时。(下载 CIPD 软件包时,-hook-timeout 值会乘以 5。)

4. 设置环境变量

如需在 shell 配置文件中配置推荐的 Fuchsia 环境变量,请执行以下操作:

  1. 使用文本编辑器打开 ~/.bash_profile 文件(在下面的示例中,我们使用的是 Nano 文本编辑器):

    nano ~/.bash_profile
  2. 将以下代码行添加到 ~/.bash_profile 文件中:

    export PATH=~/fuchsia/.jiri_root/bin:$PATH
    source ~/fuchsia/scripts/fx-env.sh
    
    • Fuchsia 源代码中的 .jiri_root/bin 目录包含对 Fuchsia 工作流至关重要的 jirifx 工具。Fuchsia 使用 jiri 工具来管理 Fuchsia 项目中的代码库,而 fx 工具则有助于配置、构建、运行和调试 Fuchsia。Fuchsia 工具链要求 jiriPATH 中可用。

    • fx-env.sh 脚本可在终端中启用许多实用的 shell 函数。例如,它会创建 FUCHSIA_DIR 环境变量,并提供 fd 命令,以便通过自动补全功能浏览目录。(如需了解详情,请参阅 fx-env.sh 中的注释。)

  3. 保存文件并退出文本编辑器。

  4. 更新环境变量:

    source ~/.bash_profile

如需验证环境设置,请执行以下操作:

  1. 前往 fuchsia 目录,例如:

    cd ~/fuchsia
  2. 验证您是否可以无错误地运行以下命令:

    jiri help
    fx help

5. 配置防火墙规则(可选)

如需允许宿主机上的 Fuchsia 特定流量,请运行以下命令:

fx setup-ufw

此脚本需要 sudo(会要求您输入密码)来设置相应的防火墙规则。如需详细了解此脚本,请参阅 setup-ufw

后续步骤

如需构建您的第一个 Fuchsia 系统映像,请参阅配置和构建 Fuchsia

附录

身份验证错误

如果您在引导过程中看到 Invalid authentication credentials 错误,则可能是因为您的 ~/.gitcookies 文件包含 googlesource.com 中某些代码库的 Cookie,而引导脚本想要匿名签出这些代码库。

如需解决此错误,请执行以下操作之一:

  • 按照屏幕上的说明操作,获取指定代码库的密码。
  • .gitcookies 文件中删除违规 Cookie。

在 Fuchsia 上工作,无需更新 PATH

以下各部分提供了设置环境变量部分中介绍的方法的替代方法:

将该工具复制到二进制目录

如果您不想更新环境变量,但希望 jiri 在任何目录中都能正常运行,请将 jiri 工具复制到 ~/bin 目录,例如:

cp ~/fuchsia/.jiri_root/bin/jiri ~/bin

不过,您必须拥有对 ~/bin 目录的写入权限,但不能有 sudo。如果不这样做,jiri 将无法保持最新状态。

同样,如果您想使用 fx 工具而不更新环境变量,请在 ~/bin 目录中提供 fx 工具的符号链接,例如:

ln -s ~/fuchsia/scripts/fx ~/bin

或者,直接使用 fx 工具的路径运行该工具,例如:

./scripts/fx help

无论哪种情况,您都需要在 PATH 中添加 jiri

启用 KVM 加速

(仅限 Linux)大多数 Linux 计算机通过 KVM 支持虚拟机加速,这可大幅提升模拟器的性能和易用性。

如果您的机器上提供 KVM,请将自己添加到 kvm 群组:

sudo usermod -a -G kvm ${USER}

若要让此更改生效,您可能需要退出并重新登录。

配置模拟器网络

仅限 Linux)如需允许 Fuchsia 模拟器 (FEMU) 访问网络,您可以使用 TUN/TAP 配置 IPv6 网络。

如需使用 tap 网络启用网络,请执行以下操作:

  1. 设置 tuntap

    sudo ip tuntap add dev qemu mode tap user $USER
  2. qemu 启用网络:

    sudo ip link set qemu up