在 NUC 上安装 Fuchsia

本指南介绍了如何在 Intel NUC(下一代计算单元)设备上安装 Fuchsia。

具体步骤如下:

  1. 前提条件
  2. 构建 Fuchsia
  3. 准备好 U 盘
  4. 在 NUC 上启用 EFI 启动
  5. 在 NUC 上安装 Fuchsia
  6. (可选)将 Fuchsia SSH 密钥上传到 NUC

前提条件

在开始在 NUC 设备上安装 Fuchsia 之前,请确保您已完成以下任务:

设置 Fuchsia 开发环境

如需在工作站上设置 Fuchsia 开发环境,请完成 Fuchsia 使用入门指南。

获取零件

本指南需要以下各部分:

  • NUC 设备(请参阅示例型号
  • USB 3.0 闪存盘
  • 键盘
  • 鼠标(可选)
  • 带有 HDMI 端口的显示器
  • HDMI 线
  • 以太网线
  • 十字螺丝刀(带磁性尖头)

构建 Fuchsia

如需在 NUC 设备上安装 Fuchsia,您需要在工作站上构建 x64 映像并生成 build 工件(包括 Fuchsia 安装程序)。

如需构建用于 NUC 安装的 Fuchsia,请执行以下操作:

  1. 将 build 配置设置为 x64 目标,并添加 recovery-installer 软件包。

    fx set core.x64 --with //build/images/recovery:recovery-installer
  2. 构建 Fuchsia:

    fx build

    构建 Fuchsia 最多可能需要 90 分钟。

准备好 U 盘

您需要准备一个可启动 U 盘,用于运行 Fuchsia 安装程序。 稍后在在 NUC 上安装 Fuchsia 部分,您将使用此 USB 驱动器将 NUC 引导至 Fuchsia 安装程序。

如需准备可启动 USB 驱动器,请执行以下操作:

  1. 将 U 盘插入工作站

  2. 确定 U 盘的路径:

    fx list-usb-disks

    此命令会输出类似于以下内容的输出:

    $ fx list-usb-disks
    /dev/sda - My Example USB Disk
    
  3. 创建可启动 U 盘:

    fx mkinstaller -v PATH_TO_USB_DRIVE

    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
    
  4. 从工作站中拔下 U 盘。

在 NUC 上启用 EFI 启动

更新 NUC 的 BIOS 设置,以便其可以从 U 盘启动。

NUC 设备提供两个版本的 BIOS:Visual BIOS(例如 NUC7)和 Aptio V BIOS(例如 NUC11)。具体步骤会因系统中包含的 BIOS 而略有不同。

可视 BIOS

可视 BIOS

图 1. Visual BIOS 的屏幕截图

如需在 NUC 上启用 EFI(可扩展固件接口)启动,请执行以下操作:

  1. 重启 NUC。
  2. 如需进入 BIOS 设置,请在启动时按 F2
  3. 点击顶部的高级按钮。
  4. 点击启动标签页。
  5. 点击 Boot Priority(启动优先级)标签页,然后确认以下设置:

    • UEFI 启动已选中。
    • 旧版启动未选中。

    可视 BIOS 启动优先级标签页

  6. 点击 Boot Configuration(启动配置)标签页,然后确认以下设置:

    • UEFI 启动窗口中:

      • 先启动 USB 设备处于勾选状态。
      • Boot Network Devices Last 已选中。
      • Unlimited Network Boot Attempts(无限网络启动尝试次数)已勾选。
    • Boot Devices 窗口中:

      • 已选中 USB
      • 网络启动设置为 UEFI PXE & iSCSI

    可视化 BIOS 启动配置

  7. 点击 Secure Boot(安全启动)标签页,然后确认以下设置:

    • 安全启动处于未选中状态。

    可视 BIOS 安全启动

  8. 如需保存并退出 BIOS,请按 F10 并点击

Aptio V BIOS

Aptio V BIOS

图 2. Aptio V BIOS 的屏幕截图

如需在 NUC 上启用 EFI(可扩展固件接口)启动,请执行以下操作:

  1. 重启 NUC。
  2. 如需进入 BIOS 设置,请在启动时按 F2
  3. 点击启动标签页。
  4. 点击安全启动,然后确认以下设置:

    • 安全启动设置为 Disabled

    Aptio V BIOS 安全启动

  5. 如需返回,请点击左侧的 < 按钮。

  6. 点击 Boot Priority(启动优先级),然后确认以下设置:

    • UEFI 启动已选中。
    • 旧版启动未选中。

    • 先启动 USB 设备处于勾选状态。

    • Boot Network Devices Last 已选中。

    • Unlimited Boot to Network Attempts 已勾选。

    • 已选中 USB

    • 网络启动设置为 UEFI PXE & iSCSI

    Aptio V BIOS 启动优先级

  7. 如需保存并退出 BIOS,请按 F10 键,然后点击确定

在 NUC 上安装 Fuchsia

使用可启动 USB 驱动器将 NUC 启动到 Fuchsia 安装程序。然后,它会将 x64 映像(在构建 Fuchsia 部分中构建)安装到 NUC。

如需在 NUC 上安装 Fuchsia,请执行以下操作:

  1. 将可启动 U 盘插入 NUC。

  2. 重启 NUC。

    NUC 会启动到 Fuchsia 安装程序(背景为粉色)。

  3. Enter 选择 Install from USB 选项。

  4. 在出现其他提示时,按 Enter 键继续。

  5. 安装完成后,从 NUC 设备上拔下 U 盘。

  6. 重新启动 NUC 设备。

    NUC 现在已启动到 Fuchsia。

(可选)将 Fuchsia SSH 密钥上传到 NUC

如果您打算使用此 NUC 设备进行 Fuchsia 开发,则需要从主机将 Fuchsia 映像刷写到 NUC 设备,然后 NUC 会将特定于 Fuchsia 的 SSH 密钥上传到 NUC。将这些特定于 Fuchsia 的 SSH 密钥上传到 NUC 后,您就可以在宿主机上对 NUC 执行基于 ffx 的工作流

如需将 Fuchsia SSH 密钥上传到 NUC,请执行以下操作:

  1. 完成附录中的将新的 Fuchsia 映像刷写到 NUC 部分中的步骤。

  2. 如需验证您是否可以从主机连接到 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 型号

如需 GPU 支持,请使用 NUC7 (Kaby Lake)、NUC8 (Coffee Lake) 或更高一代的 NUC。

以下列出了一些示例模型:

将新的 Fuchsia 映像刷写到 NUC

NUC 开始运行 Fuchsia 后,您可以使用 Fuchsia 的刷写机制向 NUC 预配新的 Fuchsia 映像。

如需将 Fuchsia 映像刷写到 NUC,请执行以下操作:

  1. 使用以太网线将 NUC 直接连接到工作站。

    (或者,您也可以将 NUC 连接到与工作站位于同一局域网中的路由器或 Wi-Fi 调制解调器。)

  2. 重启 NUC。

  3. 在 Fuchsia 的启动屏幕上,按 f 键选择 fastboot 选项。

    NUC 进入 Fastboot 模式后,屏幕上会显示 Fastboot TCP is ready

  4. 在工作站上,发现处于 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

  5. 将新的 Fuchsia 映像刷写到 NUC:

    fx flash

    如果您之前有多个设备连接到主机,则可能需要明确指定 NUC 设备的名称,例如:

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

    完成后,NUC 会重启并开始运行新的 Fuchsia 映像。

远程管理 NUC 设备

如需启用远程管理(包括 KVM),您需要配置 Intel AMT(Active Management Technology)。

首先,在 NUC 上配置 Intel ME:

  1. 重启 NUC。
  2. 在启动屏幕上按 Ctrl+P 进入 Intel ME 设置。
  3. 选择 MEBx 登录
  4. 设置新密码,默认密码为 admin

  5. 配置网络:

    1. 选择 Intel(R) AMT Configuration(Intel(R) AMT 配置)。
    2. 取消配置现有网络设置:

      1. 选择取消配置网络访问
      2. 选择完全取消配置
      3. Y 进行确认。
    3. 依次选择网络设置 > TCP/IP 设置 > 有线 LAN IPV4 配置

    4. DHCP Mode(DHCP 模式)设置为 Disabled(停用)。

    5. IPv4 地址设置为可通过 EdgeRouter 从主机访问的地址。

      在主机上,运行 ifconfig 并找到与 EdgeRouter 对应的条目,例如:

      $ 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

    6. 子网掩码地址设置为主机与 EdgeRouter 连接的网络掩码,例如 255.255.255.0

    7. Esc,直到返回到 Intel(R) AMT 配置

    8. 选择 Activate Network Access(启用网络访问权限),然后按 Y 进行确认。

    9. 退出 Intel ME 设置并保存更改。

现在,在宿主机上配置 amtctrl 命令行实用程序:

以下说明假定您已设置了一些环境变量:

  • AMT_HOST:您在 Intel ME 设置中配置的 IPv4 地址。
  • AMT_PASSWORD:您为 Intel ME 选择的密码。
  • VNC_PASSWORD:用于通过 VNC 访问 NUC 的密码。
  1. 克隆 amtctrl 代码库:

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

    cd amt && sudo ./setup.py install
  3. 配置 NUC IP 地址和密码:

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

    amtctrl nuc vnc

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

您还可以使用以下终端命令开启、关闭或重新启动 NUC:

  • 如需开启 NUC,请按以下步骤操作:

    amtctrl nuc on
  • 如需关闭 NUC,请执行以下操作:

    amtctrl nuc off
  • 如需重新启动 NUC,请执行以下操作:

    amtctrl nuc reboot