在 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 映像并生成构建工件(包括 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 盘

您需要准备一个运行 Fuchsia 安装程序的可启动 U 盘。 稍后在 Install Fuchsia on NUC 部分,您将使用此 U 盘将 NUC 启动到 Fuchsia 安装程序。

如需准备可启动的 U 盘,请执行以下操作:

  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 替换为上一步中的 U 盘的路径。

    以下示例命令选择 /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. 点击启动优先级标签页并确认以下设置:

    • 已选中 UEFI Boot
    • 取消选中 Legacy Boot

    Visual BIOS 的“Boot Priority”标签页

  6. 点击启动配置标签页并确认以下设置:

    • UEFI Boot 窗口中:

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

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

    Visual BIOS 启动配置

  7. 点击安全启动标签页并确认以下设置:

    • 取消选中 Secure Boot

    Visual BIOS 安全启动

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

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. 点击启动优先级并确认以下设置:

    • 已选中 UEFI Boot
    • 取消选中 Legacy Boot

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

    • 选中 Boot Network Devices Last(上次启动网络设备)。

    • 已选中 Unlimited Boot to Network Trys

    • 已选中 USB

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

    Aptio V BIOS 启动优先级

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

在 NUC 上安装 Fuchsia

使用可启动的 U 盘将 NUC 启动到 Fuchsia 安装程序。然后,将 x64 映像(在 Build 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 设备,而主机会将 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) 或更高版本。

以下列表显示了一些示例模型:

将新的 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(主动管理技术)。

首先,在 NUC 上配置 Intel ME:

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

  5. 配置网络:

    1. 选择 Intel(R) AMT 配置
    2. 取消配置现有的广告资源网设置:

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

    4. DHCP 模式设置为已停用

    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. 选择激活网络访问权限,然后按 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
    

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

您也可以通过以下终端命令开启、关闭或重新启动 NUC:

  • 如需开启 NUC,请执行以下操作:

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

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

    amtctrl nuc reboot