tree: b962dfba6a419be984216b8cdc4e03f57047f312 [search]
  1. README.md
docs/development/installer/README.md

Installer

Overview

The mkinstaller script produces a bootable disk image which can be used to install Fuchsia to a target machine (e.g. a NUC).

Implementation

Mkinstaller can write an image directly to a USB disk, or it can produce a new image file on the host machine, which can then be written to install media using dd or similar. The mkinstaller script determines the images to be written to disk based on ${FUCHSIA_BUILD_DIR}/images.json, and then writes each partition to disk, labelled according to the “name” field of the entry in images.json.

Use the installer

After you complete a build, you can create an installer image with fx mkinstaller /path/to/usb.

Note: To see a full list of options, run fx mkinstaller -h.

Follow the steps below to install Fuchsia:

  1. To access the installer, boot your computer or virtual machine from the USB.

You should see a blue boot screen.

  1. To access the Fuchsia shell, press alt+tab.

  2. Run lsblk to determine the main disk of the target machine.


<code class="devsite-terminal">lsblk</code> <span class="no-select">ID SIZE TYPE LABEL FLAGS DEVICE 000 28G RE /dev/sys/pci/00:14.0/xhci/usb-bus/001/001/ifc-000/ums/lun-000/block 001 63M efi-system zedboot-efi RE /dev/sys/pci/00:14.0/xhci/usb-bus/001/001/ifc-000/ums/lun-000/block/part-000/block 002 1M cros-data efi RE /dev/sys/pci/00:14.0/xhci/usb-bus/001/001/ifc-000/ums/lun-000/block/part-001/block 003 25M cros-data zircon-a RE /dev/sys/pci/00:14.0/xhci/usb-bus/001/001/ifc-000/ums/lun-000/block/part-002/block 004 22M cros-data zircon-r RE /dev/sys/pci/00:14.0/xhci/usb-bus/001/001/ifc-000/ums/lun-000/block/part-003/block 005 321M cros-data storage-sparse RE /dev/sys/pci/00:14.0/xhci/usb-bus/001/001/ifc-000/ums/lun-000/block/part-004/block 006 119G /dev/sys/pci/00:17.0/ahci/sata2/block </span>

In this case, /dev/sys/pci/00:17.0/ahci/sata2/block is the main disk of the target machine.

  1. Run install-disk-image to wipe and initialize the partition tables on the target machine. Replace /dev/sys/pci/00:17.0/ahci/sata2/block with the path you determined using the lsblk command.

<code class="devsite-terminal">install-disk-image init-partition-tables --block-device <var>/dev/sys/pci/00:17.0/ahci/sata2/block</var></code> <span class="no-select"> disk-pave: init-partition-tables operation succeeded. </span>
  1. Run lsblk to confirm the state of the disks:

<code class="devsite-terminal">lsblk</code> <span class="no-select"> ID SIZE TYPE LABEL FLAGS DEVICE 000 28G RE /dev/sys/pci/00:14.0/xhci/usb-bus/001/001/ifc-000/ums/lun-000/block 001 63M efi-system zedboot-efi RE /dev/sys/pci/00:14.0/xhci/usb-bus/001/001/ifc-000/ums/lun-000/block/part-000/block 002 1M cros-data efi RE /dev/sys/pci/00:14.0/xhci/usb-bus/001/001/ifc-000/ums/lun-000/block/part-001/block 003 25M cros-data zircon-a RE /dev/sys/pci/00:14.0/xhci/usb-bus/001/001/ifc-000/ums/lun-000/block/part-002/block 004 22M cros-data zircon-r RE /dev/sys/pci/00:14.0/xhci/usb-bus/001/001/ifc-000/ums/lun-000/block/part-003/block 005 321M cros-data storage-sparse RE /dev/sys/pci/00:14.0/xhci/usb-bus/001/001/ifc-000/ums/lun-000/block/part-004/block 006 119G /dev/sys/pci/00:17.0/ahci/sata2/block 052 16M efi-system efi-system /dev/sys/pci/00:17.0/ahci/sata2/block/part-000/block 053 64M zircon-a zircon-a /dev/sys/pci/00:17.0/ahci/sata2/block/part-001/block 054 64M zircon-b zircon-b /dev/sys/pci/00:17.0/ahci/sata2/block/part-002/block 055 96M zircon-r zircon-r /dev/sys/pci/00:17.0/ahci/sata2/block/part-003/block 056 64K vbmeta_a vbmeta_a /dev/sys/pci/00:17.0/ahci/sata2/block/part-004/block 057 64K vbmeta_b vbmeta_b /dev/sys/pci/00:17.0/ahci/sata2/block/part-005/block 058 64K vbmeta_r vbmeta_r /dev/sys/pci/00:17.0/ahci/sata2/block/part-006/block 059 4K misc misc /dev/sys/pci/00:17.0/ahci/sata2/block/part-007/block 060 16G fuchsia-fvm fuchsia-fvm /dev/sys/pci/00:17.0/ahci/sata2/block/part-008/block </span>
  1. Install the ESP to the disk. Note that the “ID” column in lsblk corresponds to a file in /dev/class/block/. You should replace 002 with the ID of the partition that‘s labelled efi, and 052 with the ID of the partition that’s labelled efi-system.

<code class="devsite-terminal">dd if=/dev/class/block/<var>002</var> of=/dev/class/block/<var>052</var></code> <span class="no-select"> 2194+0 records in 2194+0 records out 1123328 bytes copied </span>
  1. Install the main kernel image. Replace 003 with the ID of the partition on the USB drive labelled zircon-a.

Note: A limitation in the block device protocol means we need to dd to an intermediary file before using install-disk-image.


<code class="devsite-terminal">dd if=/dev/class/block/<var>003</var> of=/tmp/tmp.img</code> <span class="no-select"> 52520+0 records in 52520+0 records out 26890240 bytes copied </span> <code class="devsite-terminal">install-disk-image install-zircona --file /tmp/tmp.img</code> <span class="no-select"> disk-pave: install-zircona operation succeeded. </span>
  1. Install the recovery kernel image. Replace 004 with the ID of the partition on the USB drive labelled zircon-r.

<code class="devsite-terminal">dd if=/dev/class/block/<var>004</var> of=/tmp/tmp.img</code> <span class="no-select"> 52520+0 records in 52520+0 records out 26890240 bytes copied <code class="devsite-terminal">install-disk-image install-zirconr --file /tmp/tmp.img</code> <span class="no-select"> disk-pave: install-zirconr operation succeeded. </span>
  1. Install the Fuchsia volume image. Replace 005 with the ID of the partition on the USB drive labelled storage-sparse.

Note: this image is much bigger than any of the others - this step may take a while!


<code class="devsite-terminal">dd if=/dev/class/block/<var>005</var> of=/tmp/tmp.img</code> <span class="no-select"> 658432+0 records in 658432+0 records out 337117184 bytes copied </span> <code class="devsite-terminal">install-disk-image install-fvm --file /tmp/tmp.img</code> <span class="no-select"> disk-pave: install-fvm operation succeeded. </span>