Fuchsia 系列教程:在 NUC 迷你电脑上安装 Fuchsia

本文转载自 Fuchsia 中文社区 GitHub (连接)翻译者:Whyto;更新时间:2023年4月12日。

在 NUC 迷你电脑上安装 Fuchsia

本指南提供了有关在 Intel NUC{:.external}(Next Unit of Computing)迷你电脑设备上 Fuchsia 安装方法的说明。

安装步骤为:

  1. 前提条件
  2. 构建 Fuchsia
  3. 准备 USB 驱动器
  4. 启用 NUC 迷你电脑上的 EFI 引导
  5. 将 Fuchsia 安装至 NUC 迷你电脑
  6. (可选)将 Fuchsia SSH 密钥上传至 NUC 迷你电脑

前提条件 {:#prerequisites .numbered}

开始在 NUC 迷你电脑设备上安装 Fuchsia 之前,请确保您完成了以下工作:

设置 Fuchsia 开发环境 {#set-up-fuchsia-env}

要在工作站上建立 Fuchsia 开发环境,请您完成开始使用 Fuchsia 指南。

获取配件 {#get-parts}

注意:Fuchsia 仅支持列入支持的系统配置清单的 NUC 迷你电脑配置。不过,未支持的 NUC 迷你电脑配置也可能运行 Fuchsia。要获取关于实验性安装的更多信息,请参阅实验性硬件

本指南需要使用以下配件:

  • 一台 NUC 迷你电脑设备(请参阅示例型号
  • 一个 USB 3.0 闪存驱动器
  • 一个键盘
  • 一只鼠标(可选)
  • 一台带有 HDMI 端口的显示器
  • 一条 HDMI 线缆
  • 一条以太网线缆
  • 一把十字头螺丝刀(带有磁性尖端)

注意:“2. 构建 Fuchsia”和“3. 准备 USB 驱动器”两节不需要 NUC 迷你电脑设备,因此您可以在获得 NUC 迷你电脑设备之前完成这些章节。但是,“3. 准备 USB 驱动器”一节需要 USB 闪存驱动器。

构建 Fuchisa {:#build-fuchsia .numbered}

要在 NUC 迷你电脑设备上安装 Fuchsia,您需要构建工作站镜像(workstation_eng.x64),并在工作站上生成构建内容(包括 Fuchsia 安装程序)。

要构建安装在 NUC 迷你电脑上的 Fuchsia,请执行以下操作:

  1. 将构建配置设置为 workstation_eng.x64 恢复包(recovery-installer):

    fx set workstation_eng.x64 --with //build/images/recovery:recovery-installer
    
  1. 构建 Fuchsia :

    fx build
    
Fuchsia 构建可能长达 90 分钟。

准备 USB 驱动器 {:#prepare-usb .numbered}

您需要准备一个运行 Fuchsia 安装程序的可引导 USB 驱动器。稍后,在将 Fuchsia 安装至 NUC 迷你电脑一节,您将使用该 USB 驱动器将 NUC 迷你电脑引导至 Fuchsia 安装程序。

重要提示:下面的说明要求您已经在先前的构建 Fuchsia 一节完成了构建。

要准备可引导 USB 驱动器,请执行以下操作:

  1. 将 USB 驱动器插入您的工作站
  1. 确定 USB 驱动器路径:

    fx list-usb-disks
    

该命令打印的输出内容形如:

$ fx list-usb-disks
/dev/sda - My Example USB Disk
  1. 创建可引导 USB 驱动器:

    fx mkinstaller -v {{ "<var>" }}PATH_TO_USB_DRIVE{{ "</var>" }}
    

在上述步骤中将 PATH_TO_USB_DRIVE 替换为 USB 驱动器路径。

下面的示例命令选择了 /dev/sda 路径:

$ fx mkinstaller -v /dev/sda

完成后,命令最终的输出结果形如:

$ fx mkinstaller -v /dev/sda
mkinstaller: WARNING: Changing ownership of /dev/sda to alice
[sudo] password for alice:
...
mkinstaller: INFO:    Writing image fvm.sparse.blk to partition storage-sparse...
mkinstaller: INFO:      Wrote 835.6M in 35.55s, 23.5M/s
mkinstaller: INFO: Done.
mkinstaller: INFO: Ejected USB disk
  1. 从工作站上拔下 USB 驱动器。

启用 NUC 迷你电脑上的 EFI 引导 {:#enable-efi-booting .numbered}

请更新 NUC 迷你电脑的 BIOS 设置,以便其从 USB 驱动器启动。

NUC 迷你电脑设备上的 BIOS 有两个版本:Visual BIOS(例如 NUC7)和 Aptio V BIOS(例如 NUC11)。 根据系统中包含的 BIOS 版本,设置步骤略有不同。

重要提示:为了能够进入 BIOS 设置模式,如果 NUC 迷你电脑设备已经连接到主机,那么您可能需要从设备上拔下以太网电缆。

  • {Visual BIOS}

image

图 1. Visual BIOS 屏幕截图

要启用 NUC 迷你电脑上的 EFI(Extensible Firmware Interface,可扩展固件接口)引导,请执行以下操作:

  1. 重新启动您的 NUC 迷你电脑。
  2. 要进入 BIOS 设置,请在启动时按下 F2
  3. 点击上方的 Advanced(高级)按钮。
  4. 点击 Boot(引导)选项卡。
  5. 点击 Boot Priority(引导优先级)选项卡,确认以下设置:
  -  **UEFI Boot**(UEFI 引导)已勾选。
  -  **Legacy Boot**(旧版引导)已取消勾选。
 ![Visual BIOS Boot Priority(引导优先级)选项卡](images/visual_bios_boot_priority.png "展示了 Visual BIOS 中 Boot Priority(引导优先级)选项卡的屏幕截图"){: width="700"}
  1. 点击 Boot Configuration(引导配置)选项卡,并确认下列设置:
  -  在 **UEFI Boot**(UEFI 引导)窗口中:
     -  **Boot USB Devices First**(首先使用 USB 设备引导)已勾选。
     -  **Boot Network Devices Last**(最后使用网络设备引导)已勾选。
     -  **Unlimited Network Boot Attempts**(网络引导尝试不限次数)已勾选。
  -  在 **Boot Devices**(引导设备)窗口中:
     -  **USB** 已勾选。
     -  **Network Boot**(网络引导)已设置为 `UEFI PXE & iSCSI`。
  ![Visual BIOS 引导配置](images/visual_bios_boot_configuration.png "展示了 Visual BIOS 中 Boot Configuration(引导配置)选项卡的屏幕截图"){: width="400"}
  1. 点击 Secure Boot(安全引导)选项卡,并确认以下设置:
  -  **Secure Boot**(安全引导)已取消勾选。
  ![Visual BIOS 安全引导](images/visual_bios_secure_boot.png "展示了 Visual BIOS 中 Secure Boot(安全引导)选项卡的屏幕截图"){: width="400"}
  1. 要保存并退出 BIOS,请按下 F10,然后点击 Yes(是)。
  • {Aptio V BIOS}

image

图 2. Aptio V BIOS 的屏幕截图

要在您的 NUC 迷你电脑上启用 EFI(Extensible Firmware Interface,可扩展固件接口)引导,请执行以下操作:

  1. 重新启动您的 NUC 迷你电脑。
  2. 要进入 BIOS 设置,请在启动时按下 F2
  3. 点击 Boot(引导)选项卡。
  4. 点击 Secure Boot(安全引导),并确认以下设置:
  -  **Secure Boot**(安全引导)已设置为 `Disabled`(禁用)。
  ![Aptio V BIOS 安全引导](images/aptio_v_bios_secure_boot.png "展示了 Aptio V BIOS 中 Secure Boot(安全引导)选项卡的屏幕截图"){: width="500"}
  1. 要返回,请点击左侧的 < 按钮。
  2. 点击 Boot Priority(引导优先级)并确认以下设置:
  -  **UEFI Boot**(UEFI 引导)已勾选。
  -  **Legacy Boot**(旧版引导)已取消勾选。
     注意:如果您没有看到 **UEFI Boot** 和 **Legacy Boot** 选项,则表示您的系统不支持旧版引导。请跳过这两项检查。
  -  **Boot USB Devices First**(首先使用 USB 设备引导)已勾选。
  -  **Boot Network Devices Last**(最后使用网络设备引导)已勾选。
  -  **Unlimited Network Boot Attempts**(网络引导尝试不限次数)已勾选。
  -  **USB** 已勾选。
  -  **Network Boot**(网络引导)已设置为 `UEFI PXE & iSCSI`。
  ![Aptio V BIOS 引导优先级](images/aptio_v_bios_boot_priority.png "展示了 Aptio V BIOS 中 Boot priority(引导优先级)选项卡的屏幕截图"){: width="500"}
  1. 要保存并退出 BIOS,请按下 F10,然后点击 Ok(好)。

将 Fuchsia 安装至 NUC 迷你电脑 {:#install-fuchsia .numbered}

请使用可引导 USB 驱动器将您的 NUC 迷你电脑引导至 Fuchsia 安装程序中。之后程序会将工作站镜像(构建于构建 Fuchsia 一节)安装至 NUC 迷你电脑。

要在您的 NUC 迷你电脑上安装 Fuchsia,请执行以下操作:

  1. 将可引导 USB 驱动器插入您的 NUC 迷你电脑中。
  1. 重新启动您的 NUC 迷你电脑。

NUC 迷你电脑引导至 Fuchsia 工作站安装程序(背景为粉红色)。

  1. 按下 Enter(回车)键选择 Install from USB(从 USB 安装)选项。
  1. 在出现其他提示时按下 Enter(回车)键继续。
  1. 安装完成后,从 NUC 迷你电脑设备上拔下 USB 驱动器。
  1. 重新启动 NUC 迷你电脑设备。

NUC 迷你电脑现在将引导至 Fuchsia 工作站。

注意:之后,如果您需要安装新版本的 Fuchsia(例如,在使用 fx build 重新构建新的工作站镜像后),请参见附录中将 Fuchsia 新镜像刷入 NUC 迷你电脑 一节。

(可选)将 Fuchsia SSH 密钥上传至 NUC 迷你电脑 {:#upload-fuchsia-ssh-keys .numbered}

如果您计划使用该 NUC 迷你电脑设备进行 Fuchsia 开发,那么您需要将 Fuchsia 镜像从您的主机刷入该 NUC 迷你电脑设备,从而上传 Fuchsia 特定的 SSH 密钥 至 NUC 迷你电脑。 Fuchsia 特定的 SSH 密钥上传至 NUC 迷你电脑之后,您就可以从主机在 NUC 迷你电脑上执行 ffx-based workflows 了。

要将 Fuchsia SSH 密钥上传至 NUC 迷你电脑,请执行以下操作:

  1. 完成附录中将 Fuchsia 新镜像刷入 NUC 迷你电脑 一节中的步骤。
  1. 要验证从主机到 NUC 迷你电脑的连接性,请运行以下命令:

    ffx target show
    

该命令的输出形如:

$ ffx target show
Target:
    Name: "fuchsia-54b2-0389-644b"
    SSH Address: "fe81::55b1:2ff2:fe34:567b%en10:22"
Board:
    Name: "default-board"
    Revision: "1"
    Instruction set: "x64"
...

附录

支持的 NUC 迷你电脑型号 {#supported-nuc-models}

为获得 GPU 支持,请使用 NUC 迷你电脑 7(Kaby Lake)、NUC 迷你电脑 8(Coffee Lake)或更新版本。

下面的列表展示了一些示例型号:

将 Fuchsia 新镜像刷入 NUC 迷你电脑 {#flash-fuchsia}

NUC 迷你电脑运行 Fuchsia 之后,您就可以使用 Fuchsia 的刷入机制(flashing mechanism)来为 NUC 迷你电脑提供 Fuchsia 新镜像了。

要将 Fuchsia 镜像刷入您的 NUC 迷你电脑,请执行以下操作:

  1. 使用以太网线缆将 NUC 迷你电脑直接连接到工作站。

(您也可以将 NUC 迷你电脑连接到与工作站相同本地网络下的路由器或 WiFi 调制解调器)

注意:网络引导仅适用于 NUC 迷你电脑的内置以太网端口。(通过以太网转 USB 适配器)使用 USB 端口进行网络引导是不支持的。

  1. 重新启动您的 NUC 迷你电脑。
  1. 在 Fuchsia 引导屏幕下,请按下 f 键以选择 fastboot 选项。

NUC 迷你电脑处于 Fastboot 模式时,会在屏幕上输出 Fastboot TCP is ready(Fastboot TCP 就绪)。

  1. 在您的工作站上,发现处于 Fastboot 模式的 NUC 迷你电脑:

    ffx target list
    

该命令打印的输出形如:

$ ffx target list
NAME                      SERIAL       TYPE       STATE       ADDRS/IP                           RCS
fuchsia-54b2-0389-644b    <unknown>    Unknown    Fastboot    [fe81::55b1:2ff2:fe34:567b%en10]    N

验证设备状态为 Fastboot

  1. 将 Fuchsia 新镜像刷入 NUC 迷你电脑:

注意:要构建 Fuchsia 新镜像,请参阅上述构建 Fuchsia 一节。

fx flash

您如果曾将多个设备连接到主机,则可能需要显式指出 NUC 迷你电脑设备的名称,例如:

fx flash -s fuchsia-54b2-0389-644b

完成后,NUC 迷你电脑会重新启动并开始运行新的 Fuchsia 镜像。

NUC 迷你电脑设备的远程管理 {:#remote-management-of-nuc-devices}

要启用包括 KVM 在内的远程管理,您需要配置 Intel AMT{:.external}(Active Management Technology,主动管理技术)。

注意:这里假设您使用的是连接至边界路由器的 NUC 迷你电脑。如果您的网络设置不同,则可能需要不同的网络配置。

首先,在您的 NUC 迷你电脑上配置Intel ME:

  1. 重新启动您的 NUC 迷你电脑。
  2. 在启动屏幕下,按下 Ctrl+P 以进入Intel ME 设置。
  3. 选择 MEBx Login(MEBx 登录)。
  4. 设置新密码,默认密码为 admin

注意:密码必须至少 8 个字符长,同时包含小写和大写字母,且包含至少一个数字和至少一个非字母数字字符(“_”视为字母数字)。

提示:如果您选择的密码恰为 8 个字符长,则可以使用相同的密码作为下文的 VNC 密码。

  1. 配置网络:
  1. 选择 Intel(R) AMT Configuration(Intel(R)AMT 配置)。
  2. 取消(unconfigure)现有网络设置:
  1. 选择 **Unconfigure Network Access**(取消网络访问配置)。
  1. 选择**Full Unprovision**(完全取消)。
  1. 按下 `Y` 确认。
  1. 选择 Network Setup(网络设置)> TCP/IP Settings(TCP/IP 设置)> Wired LAN IPV4 Configuration(有线局域网 IPv4 配置)。
  2. DHCP Mode(DHCP 模式)设置为 Disabled(禁用)。
  3. IPV4 Address(IPv4地址)设置为一个您的主机通过边界路由器可达的地址。
  在您的主机上,运行 `ifconfig`,找到与边界路由器对应的条目:

  ``` none {:.devsite-disable-click-to-copy}
  $ ifconfig
  enx00e04c0c13ba: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
          inet 192.168.42.86  netmask 255.255.255.0  broadcast 192.168.42.255
          ...
  ```
  在这种情况下,您可以尝试使用地址 **192.168.42.20**。
  1. Subnet Mask Address(子网掩码地址)设置为主机到边界路由器连接的网络掩码,例如 255.255.255.0
  2. 按下 Esc,直到您返回至 Intel(R) AMT Configuration
  3. 选择 Activate Network Access(激活网络访问),然后按下 Y 确认。
  4. 退出 Intel ME 设置并保存您的更改。

现在,在主机计算机上配置 amtctrl{:.external} 命令行实用程序:

该说明假设您设置了下列环境变量:

  • AMT_HOST:您在 Intel ME 设置中配置的 IPv4 地址。
  • AMT_PASSWORD:您为 Intel ME 选择的密码。
  • VNC_PASSWORD:通过 VNC 访问 NUC 迷你电脑的密码。

注意:VNC_PASSWORD 所使用的密码必须恰为 8 个字符长,必须同时包含小写和大写字符、至少一个数字和至少一个非字母数字字符。

  1. 克隆 amtctrl 仓库:

    git clone https://github.com/sdague/amt
    
  1. 安装 amtctrl

    cd amt && sudo ./setup.py install
    
  1. 配置 NUC 迷你电脑的 IP 地址和密码:

    amtctrl set -V $VNC_PASSWORD nuc $AMT_HOST $AMT_PASSWORD
    
  1. 启用 VNC:

    amtctrl nuc vnc
    

现在,您可以使用主机上的任意 VNC 客户端通过连接到 AMT_HOST 中设置的 IP 地址来访问 NUC 迷你电脑。出现提示时,请输入 VNC_PASSWORD 中设置的密码。

注意:NUC 迷你电脑需要通过 HDMI 线缆连接至显示器,以接受 VNC 连接。

您也可以使用以下终端命令打开、关闭或重新启动 NUC 迷你电脑:

  • 打开 NUC 迷你电脑:

    amtctrl nuc on
    
  • 关闭 NUC 迷你电脑:

    amtctrl nuc off
    
  • 重新启动 NUC 迷你电脑:

    amtctrl nuc reboot