Install Fuchsia on a NUC

This guide provides instructions on how to get a NUC (Next Unit of Computing) device up and running with Fuchsia.

The steps are:

  1. Get parts.
  2. Prepare the NUC.
  3. Enable EFI booting.
  4. Build Fuchsia.
  5. Prepare a bootstrap USB drive.
  6. Pave Fuchsia.

1. Get parts

To get started, you need the following parts:

  • USB 3.0 Drive
  • NUC
  • RAM
  • m.2 SSD
  • Keyboard
  • Monitor that supports HDMI
  • HDMI cable
  • Ethernet cable
  • Phillips-head screwdriver with a magnetic tip

For GPU support, get a NUC7 (Kaby Lake) or NUC8 (Coffee Lake). The list below shows some example models:

The table below shows some example parts with links to the manufacturer's product pages:

ItemLinkNotes
RAMCrucial 8GB DDR4-2400 SODIMMWorks fine.
SSDSamsung SSD 850 EVO SATA M.2 250GBWorks fine.
SSDADATA Ultimate SU800 M.2 2280 3D NAND SSDWorks fine.
SSDCRUCIAL MX300 SSDWorks fine, but is discontinued.
MonitorHP 22cwaWorks fine.

Note that Fuchsia only supports the specific system configurations listed in Supported system configurations.

2. Prepare the NUC

NUCs do not come with RAM or an SSD, so you need to manually install them.

Figure 1. A NUC device and RAM and SSD sticks.

To install the RAM and SSD on your NUC, do the following:

  1. Remove the Phillips screws on the bottom feet of the NUC.

  2. Install the RAM.

  3. Remove the Phillips screws that would hold the SSD in place (a Phillips screwdriver with a magnetic tip is useful here).

  4. Install the SSD.

  5. Mount the SSD in place using the screws from Step 3.

  6. Put the bottom feet and screws back in.

  7. Plug power, ethernet cable, HDMI, and keyboard into the NUC.

  8. Plug the other end of the ethernet cable into your workstation (or the router or switch connected to the workstation).

3. Enable EFI booting

To enable EFI (Extensible Firmware Interface) booting on your NUC, do the following:

  1. Reboot your NUC.

  2. To enter BIOS, press F2 while booting.

  3. In the Boot Order window on the left, click the Legacy tab.

  4. Uncheck Legacy Boot.

  5. Click the Advanced button.

  6. Confirm the following boot configuration:

    • Select the Boot Priority tab.
      • Check UEFI Boot.
      • Set USB the first entry in the boot order.
    • Select the Boot configuration tab.
      • Check Boot Network Devices Last.
      • Check Unlimited Network Boot Attempts.
      • Check USB boot devices.
      • Set Network boot to UEFI PXE & iSCSI.
  7. Select the Secure Boot tab and uncheck Secure Boot.

  8. To save the changes and exit BIOS, press F10.

Note: Network booting only works with the NUC's built-in ethernet; netbooting via USB-ethernet dongle is not supported.

If you want to remotely manage the device, see Remote management for NUC.

4. Build Fuchsia

To build a Fuchsia system image for your NUC, follow the Get started with Fuchsia guide.

When running fx set, make sure to use the x64 board configuration (for example, fx set workstation.x64).

5. Prepare a bootstrap USB drive

Before installing Fuchsia to a device, you need to prepare a bootable USB drive. On a NUC, Fuchsia boots via a chain of bootloaders. The instructions below creates a USB drive containing the first two steps in the chain: Gigaboot and Zedboot.

Gigaboot is a UEFI boot shim with some limited functionality, including netbooting and flashing. By default, Gigaboot chains into Zedboot, which is a bootloader built on top of Zircon. Zedboot then either boots into Fuchsia or allows you to pave your device. To set up a NUC for the first time, you need to boot into Zedboot and pave Fuchsia to your device's storage.

To prepare a bootable USB drive, do the following:

  1. Plug your USB key into your build workstation.

  2. Identify the path to your USB key:

    fx list-usb-disks
    
  3. Create a Zedboot USB drive:

    fx mkzedboot /path/to/usb/disk
    

For more information on preparing a bootable USB drive, see Prepare a USB flash drive to be a bootable disk.

6. Pave Fuchsia

To pave Fuchsia on your NUC, do the following:

  1. Plug the Zedboot USB key into the NUC and boot it.

  2. When Zedboot is started, press Alt + F3 to switch to a command-line prompt.

    Note: If you cannot press Alt+F3 because the keyboard on the NUC is not working, see Keyboard not working after Zedboot in Troubleshoot.

  3. On the NUC, view the HDD or SSD's block device path:

    lsblk
    

    Take note of the block device path (for example, the path might look like /dev/sys/platform/pci/00:17.0/ahci/sata0/block).

  4. On the NUC, clear and initialize the partition tables on the NUC:

    install-disk-image init-partition-tables --block-device <BLOCK_DEVICE_PATH>
    

    Use the block device path from Step 3.

  5. On your workstation, install Fuchsia on the NUC:

    fx pave
    
  6. After paving is completed, disconnect the USB key.

Fuchsia is now installed on your NUC. When you reboot the machine, it will load Gigaboot, Zedboot, and Fuchsia all from your device‘s storage. You don’t need the USB drive anymore. If you need to pave a new version of Fuchsia, you can run fx reboot -r on your workstation, which reboots the NUC into Zedboot.

Troubleshoot

Keyboard not working after Zedboot

In the Pave Fuchsia section, after plugging the Zedboot USB key into the NUC, if you notice that the keyboard on the NUC is not working, then skip Step 2 through 4 and perform the following workaround instead:

  1. On your workstation, try to install Fuchsia on the NUC:

    fx pave
    

    This command may fail due to the partition tables issue on the NUC.

  2. View the kernel logs:

    fx klog
    

    In the logs, look for an error message similar to the following:

    Unable to find a valid GPT on this device with the expected partitions. Please run *one* of the following command(s):
    fx init-partition-tables /dev/sys/platform/pci/00:17.0/ahci/sata0/block
    
  3. To initialize the partition tables on the NUC, run the suggested command in the logs, for example:

    fx init-partition-tables /dev/sys/platform/pci/00:17.0/ahci/sata0/block
    
  4. Now, to install Fuchsia on the NUC, run the following command again:

    fx pave
    

Paving or netbooting not working after Zedboot

In the Pave Fuchsia section, after issuing an fx pave command, if paving does not complete, make sure the Ethernet cable used is connected to the Ethernet port of the NUC directly and not using an Ethernet to USB adapter connected to a USB port in the NUC. Even though Ethernet to USB adapters work after Fuchsia has been paved (for instance when doing fx ota), they do not work with Zedboot.