blob: 270e7f0dcfcccab6cb50e9c711e3aeab2f9f5163 [file] [log] [blame] [view]
# Install Fuchsia on a NUC
This guide provides instructions on how to install Fuchsia on an
Intel [NUC][nuc-wiki]{:.external} (Next Unit of Computing) device.
The steps are:
1. [Prerequisites](#prerequisites).
1. [Build Fuchsia](#build-fuchsia).
1. [Prepare a USB drive](#prepare-usb).
1. [Enable EFI booting on the NUC](#enable-efi-booting).
1. [Install Fuchsia on the NUC](#install-fuchsia).
## 1. Prerequisites {#prerequisites}
Before you start installing Fuchsia on a NUC device, make sure that
you've completed the following tasks:
* [Set up the Fuchsia development environment](#set-up-fuchsia-env)
* [Get parts](#get-parts)
### Set up the Fuchsia development environment {#set-up-fuchsia-env}
To set up the Fuchsia development environment on your workstation,
complete the [Get started with Fuchsia][get-started-with-fuchsia] guide.
### Get parts {#get-parts}
Note: Fuchsia only supports the specific system configurations listed in
[Supported system configurations][supported-sys-config].
The following parts are required for this guide:
* A NUC device (see [example models](#supported-nuc-models))
* A USB 3.0 flash drive
* A keyboard
* A mouse (Optional)
* A monitor with an HDMI port
* An HDMI cable
* An Ethernet cable
* A Phillips-head screwdriver (with a magnetic tip)
Note: The [_2. Build Fuchsia_](#build-fuchsia) and
[_3. Prepare a USB drive_](#prepare-usb) sections do not require a NUC
device, so you can complete these sections prior to obtaining a NUC device.
However, you will need a USB flash drive for the _3. Prepare a USB drive_
section.
## 2. Build Fuchsia {#build-fuchsia}
Installing Fuchsia on a NUC device requires that you build a Workstation
image (`workstation.x64`) and generate build artifacts (which include
the Fuchsia installer) on your workstation.
To build Fuchsia for NUC installation, do the following:
1. Set your build configuration to `workstation.x64` and include the
recovery package (`recovery-installer`):
```posix-terminal
fx set workstation.x64 --with //build/images/recovery:recovery-installer
```
1. Build Fuchsia:
```posix-terminal
fx build
```
Building Fuchsia can take up to 90 minutes.
## 3. Prepare a USB drive {#prepare-usb}
You need to prepare a bootable USB drive that runs the Fuchsia installer.
Later in the [Install Fuchsia on the NUC](#install-fuchsia) section,
you will use this USB drive to boot your NUC into the Fuchsia installer.
Note: The instructions below require that you've completed the
build in the previous [Build Fuchsia](#build-fuchsia) section.
To prepare a bootable USB drive, do the following:
1. Plug the USB drive into **your workstation**.
1. Identify the path to the USB drive:
```posix-terminal
fx list-usb-disks
```
This command prints output similar to the following:
```none {:.devsite-disable-click-to-copy}
$ fx list-usb-disks
/dev/sda - My Example USB Disk
```
1. Create a bootable USB drive:
```posix-terminal
fx mkinstaller -v --new-installer {{ "<var>" }}PATH_TO_USB_DRIVE{{ "</var>" }}
```
Replace `PATH_TO_USB_DRIVE` with the path to the USB drive from the step
above.
The example command below selects the `/dev/sda` path:
```none {:.devsite-disable-click-to-copy}
$ fx mkinstaller -v --new-installer /dev/sda
```
When finished, the command prints output similar to the following
in the end:
```none {:.devsite-disable-click-to-copy}
$ fx mkinstaller -v --new-installer /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. Unplug the USB drive from the workstation.
## 4. Enable EFI booting on the NUC {#enable-efi-booting}
Update your NUC's BIOS setup so that it can boot from
a USB drive.
To enable EFI (Extensible Firmware Interface) booting on your NUC,
do the following:
1. Reboot your NUC.
1. To enter the BIOS setup, press `F2` while booting.
1. In the **Boot Order** window on the left, click the **Legacy** tab.
1. Uncheck **Legacy Boot**.
<img width="40%" src="/docs/images/developing_on_nuc/bios.jpg"/>
1. Click the **Advanced** button.
1. Confirm the following boot configuration:
* Under the **Boot Priority** tab:
* **UEFI Boot** is checked.
* Under the **Boot Configuration** tab:
* In the **UEFI Boot** window:
* **Boot USB Devices First** is checked.
* **Boot Network Devices Last** is checked.
* **Unlimited Network Boot Attempts** is checked.
* In the **Boot Devices** window:
* **USB** is checked.
* **Network Boot** is set to **UEFI PXE & iSCSI**.
* Under the **Secure Boot** tab:
* **Secure Boot** is unchecked.
1. To save and exit BIOS, press `F10` and click **Yes**.
## 5. Install Fuchsia on the NUC {#install-fuchsia}
Use the [bootable USB drive](#prepare-usb) to boot your NUC into
the Fuchsia installer. It then flashes the
[Workstation prebuilt image](#build-fuchsia) from your workstation
to the NUC to install Fuchsia for the first time.
To install Fuchsia on your NUC, do the following:
1. Plug the bootable USB drive into the NUC.
1. Reboot your NUC.
The NUC boots into the Fuchsia Workstation Installer (with a pink background).
1. Press **Enter** to select the `Install from USB` option.
1. Press **Enter** on other prompts to continue.
When the installation is finished, the screen displays
`Success! Please restart your computer`.
1. Unplug the USB drive from the NUC device.
1. Reboot the NUC device.
The NUC is now booted into Fuchsia’s Workstation.
1. Set your login password to start the Fuchsia Workstation.
Later, if you need to install a new version of Fuchsia (for instance, after
re-building a new Workstation image using `fx build`), see the
[Flash a new Fuchsia image to the NUC](#flash-fuchsia) section in Appendices.
Important: If you plan on using this NUC device for Fuchsia development,
you must complete the steps in the
[Flash a new Fuchsia image to the NUC](#flash-fuchsia) section at least once
after installing Fuchsia from a bootable USB drive. Running `fx flash` will
upload [Fuchsia-specific SSH keys][fuchsia-ssh-keys] to the NUC device, which
then enables other useful [`ffx` workflows][ffx-workflows].
## Appendices
### Supported NUC models {#supported-nuc-models}
For GPU support, get a NUC7 (Kaby Lake) or NUC8 (Coffee Lake), or a higher
generation.
The list below shows some example models:
* [Intel® NUC Kit NUC7i5DNKE][NUC7i5DNKE]{:.external}
* [Intel® NUC Kit NUC7i5DNHE][NUC7i5DNHE]{:.external}
* [Intel® NUC Kit NUC7i3DNKE][NUC7i3DNKE]{:.external}
* [Intel® NUC Kit NUC7i3DNHE][NUC7i3DNHE]{:.external}
* [Intel® NUC Kit NUC8i5BEK][NUC8i5BEK]{:.external}
* [Intel® NUC Kit NUC8i5BEH][NUC8i5BEH]{:.external}
* [Intel® NUC Kit NUC8i3BEK][NUC8i3BEK]{:.external}
* [Intel® NUC Kit NUC8i3BEH][NUC8i3BEH]{:.external}
### Flash a new Fuchsia image to the NUC {#flash-fuchsia}
Once a NUC is running Fuchsia, you can use Fuchsia's flashing
mechanism to provision a new Fuchsia image to the NUC.
To flash a Fuchsia image to your NUC, do the following:
1. Connect the NUC directly to the workstation using an Ethernet cable
(or connect the NUC to a router or WiFi modem in the same
Local Area Network as the workstation).
Note: Network booting only works with the NUC's built-in Ethernet port –
netbooting with an USB port (via an Ethernet-to-USB adapter) is not supported.
1. Reboot your NUC.
1. To boot the NUC into Fastboot mode, press the `f` key at the Fuchsia boot screen.
Once the NUC is in Fastboot mode, you can see `entering fastboot mode` printed on the
screen.
1. **On your workstation**, detect the NUC in Fastboot mode:
```posix-terminal
ffx target list
```
This command prints output similar to the following:
```none {:.devsite-disable-click-to-copy}
$ ffx target list
NAME SERIAL TYPE STATE ADDRS/IP RCS
fuchsia-54b2-0389-644b <unknown> Unknown Fastboot [fe81::55b1:2ff:fe34:567b%en10] N
```
Verify that the device's state is in `Fastboot`.
1. Flash a new Fuchsia image to the NUC:
Note: To build a new Fuchsia image, see the [Build Fuchsia](#build-fuchsia) section above.
```posix-terminal
fx flash
```
When finished, the NUC reboots and starts running the new Fuchsia image.
Important: When using this NUC device for Fuchsia development, currently
for other [`ffx` workflows][ffx-workflows], you can only use USB ports to
connect the NUC to your host machine. In other words, undo the cable setup in
Step 1 above, and use **2 Ethernet-to-USB adapters** and an Ethernet cable to
establish a connection between the NUC and your host machine using only USB ports.
<!-- Reference links -->
[nuc-wiki]: https://en.wikipedia.org/wiki/Next_Unit_of_Computing
[get-started-with-fuchsia]: /docs/get-started/README.md
[usb-setup]: /docs/development/hardware/usb_setup.md
[supported-sys-config]: /docs/reference/hardware/support-system-config.md
[NUC7i5DNKE]: https://ark.intel.com/content/www/us/en/ark/products/122486/intel-nuc-kit-nuc7i5dnke.html
[NUC7i5DNHE]: https://ark.intel.com/content/www/us/en/ark/products/122488/intel-nuc-kit-nuc7i5dnhe.html
[NUC7i3DNKE]: https://ark.intel.com/content/www/us/en/ark/products/122495/intel-nuc-kit-nuc7i3dnke.html
[NUC7i3DNHE]: https://ark.intel.com/content/www/us/en/ark/products/122498/intel-nuc-kit-nuc7i3dnhe.html
[NUC8i5BEK]: https://ark.intel.com/content/www/us/en/ark/products/126147/intel-nuc-kit-nuc8i5bek.html
[NUC8i5BEH]: https://ark.intel.com/content/www/us/en/ark/products/126148/intel-nuc-kit-nuc8i5beh.html
[NUC8i3BEK]: https://ark.intel.com/content/www/us/en/ark/products/126149/intel-nuc-kit-nuc8i3bek.html
[NUC8i3BEH]: https://ark.intel.com/content/www/us/en/ark/products/126150/intel-nuc-kit-nuc8i3beh.html
[ffx]: https://fuchsia.dev/reference/tools/sdk/ffx
[ffx-workflows]: /docs/development/sdk/ffx/index.md
[fuchsia-ssh-keys]: /docs/development/sdk/ffx/create-ssh-keys-for-devices.md