体验 Fuchsia 的最佳的方式就是在真实的硬件上运行它。本文将帮助你在设备上安装 Fuchsia。Fuchsia对一些不同的硬件平台有很好的支持:Acer Switch 12、Intel NUC 和 Google Pixelbook(不要与 Chromebook Pixel 弄混)。目前安装进程不支持基于 ARM 的硬件。Fuchsia 的安装进程称为 “paving”,安装 Fuchsia 需要两台设备,一台用来安装 Fuchsia 叫做 “目标设备”,另外一台用来构建 Fuchsia 叫做 “主机设备”。主机设备和目标设备需要可以通过局域网进行通信。在主机设备系统中需要构建 Fuchsia,创建一个安装工具,将系统的大部分通过网络安装到目标设备中。
指令中将使用 fx
。如果你已经将 fx 映射到您的命令路径中,那么可以完全按照说明操作。如果没有将 fx 添加进去,再 “//scripts/fx” 路径下你能找到命令工具,你需要在使用的命令中使用相对路径。许多 fx 都是对 GN 中的构建操作以及工具调用的简单包装。如果用例还没有完全满足当前可用的功能,那么你可以构建一些 GN 目标,或者扩展一些 GN 模板来构建所需的功能。
阅读以上所有内容,然后参阅快速入门指南了解工作流摘要。
获取和构建 Fuchsia 的详细说明可以从入门指南中获得,我们在这里假设目标设备系统是基于 x86 的,并且您希望构建一个完整的系统。我们可以运行 fx set x64
来配置构建类型,然后运行 fx full-build
来生成。
要创建安装镜像,我们建议使用 USB 驱动器,因为大多数系统都支持 USB 驱动器作为引导介质。注意,安装镜像创建过程会清除正在使用的 USB 驱动器中的所有内容。插入 USB 驱动器然后运行 fx mkzedboot <device_path>
,在 Linux 上 device_path 通常类似于 /dev/sd<X> X 代表字母,在 Mac 上 device_path 类似于 /dev/disk<N> N 代表数字。注意,不要选错了设备。安装完成后,移除 USB 驱动器。
现在,我们将构建构件,以便在 Fuchsia 安装过程中通过网络进行传输。传输的内容取决于目标设备。对于基于 UEFI 的系统(如 Intel NUC 或 Acer Switch 12)的设备,我们的输出类型为 “efi”。对于使用 vboot 格式镜像的基于 Chromeos 系统(如 PixelBook )的设备,输出类型应为 “vboot”。运行 fx pave
启动正确镜像的 bootserver。
将安装了镜像的 USB 驱动器插入到你想安装 Fuchsia 系统的目标设备中。目标设备的引导设定需要改为从 USB 启动这通常根据设备的不同设置方法不同。对于下面列出的方法,只是列出设置引导设备的方法,不包含安装镜像的内容。
设备从 USB 驱动器引导到 Zedboot 后会自动的启动 Fuchsia 安装进程。在安装进程完成后,系统会引导到 Zircon 内核。安装完成后整个系统被安装在内存中。此时系统的所有需要的内容都被存储在本地, USB 驱动器可以移除。如果你想要频繁的安装 Fuchsia 那么你可以将 USB 驱动器一直插在目标设备上,那么每次设备都会默认引导到 Zedboot 并自动安装 Fuchsia。在使用 Gigaboot 的 UEFI 系统上进行初始安装后,重新安装的另一个方法是在 Gigaboot 中按 “Z” 键以选择 Zedboot。对基于 vboot 的系统使用 USB 驱动器是当前唯一的选择。无论哪种方法,都需要使用 fx pave
启动 bootserver。
在某些情况下,安装可能会失败,因为磁盘格式不兼容。在这种情况下,你会看到一条信息 “install-disk-image wipe”。如果是由于有旧的 Fuchsia 安装(相对于直接安装)导致的不兼容,你可以杀死主机设备上的 fx pave 进程,切换目标设备上的控制台(Alt+F3)然后运行 install-disk-image wipe
。再重启目标设备,在主机设备上重新运行 fx pave
,此时应该会成功。
在某些情况下,在 Acer 上安装 Fuchsia 可能会失败,并出现一些错误提示 “couldn't find space in gpt”。在这种情况下(只要你不想保留其他操作系统,即Windows,部分)运行 lsblk
并识别不是你的 USB 分区(它不应该在列中有 RE )。确认分区第一列中的标识编号(可能是 000 或 003 )。然后运行 gpt init /dev/class/block/N
N 是之前确定的编号。这会清除磁盘上的所有 Windows 分区。一旦完成,重新引导进入 Zedboot 安装 Fuchsia 就能成功。
对于基于 EFI 系统的设备,可以更改目标设备的默认的引导选项为本地引导或者网络引导的 Zedboot。默认情况下,系统本地启动,Gigaboot 会延迟1秒,允许您选择其他模式。要将此默认值更改为 Zedboot,请在调用set命令时提供 always_zedboot
参数,例如 fx set <target_type> --args "always_zedboot=true"
。