在 NUC 上安装 Fuchsia

本指南介绍如何在 Intel NUC(下一代计算单位)设备。

具体步骤如下:

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

前提条件

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

设置 Fuchsia 开发环境

如需在工作站上设置 Fuchsia 开发环境,请执行以下操作: 完成 Fucsia 使用入门指南。

获取零件

本指南包含以下几个部分:

  • 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 盘。 稍后在在 NUC 上安装 Fuchsia 部分, 您将使用该 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. 点击 Boot Priority(启动优先级)标签页并确认以下设置:

    • 勾选 UEFI 启动
    • 取消选中 Legacy Boot

    Visual BIOS“Boot Priority”标签页

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

    • UEFI 启动窗口中:

      • 已选中先启动 USB 设备
      • 已选中上次启动网络设备
      • 已选中无限次网络启动尝试
    • Boot Devices 窗口中:

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

    Visual BIOS 启动配置

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

    • 取消选中安全启动

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

    • 勾选 UEFI 启动
    • 取消选中 Legacy Boot

    • 已选中先启动 USB 设备

    • 已选中上次启动网络设备

    • 已选中 Unlimited Boot to Network Attempts

    • 已选中 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 连接到 局域网作为工作站。)

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