<section xmlns="http://docbook.org/ns/docbook"
         xmlns:xlink="http://www.w3.org/1999/xlink"
         xmlns:xi="http://www.w3.org/2001/XInclude"
         version="5.0"
         xml:id="sec-booting-from-usb">
 <title>Booting from a USB Drive</title>

 <para>
  For systems without CD drive, the NixOS live CD can be booted from a USB
  stick. You can use the <command>dd</command> utility to write the image:
  <command>dd if=<replaceable>path-to-image</replaceable>
  of=<replaceable>/dev/sdb</replaceable></command>. Be careful about specifying
  the correct drive; you can use the <command>lsblk</command> command to get a
  list of block devices.
 </para>

 <para>
  On macOS:
<programlisting>
$ diskutil list
[..]
/dev/diskN (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
[..]
$ diskutil unmountDisk diskN
Unmount of all volumes on diskN was successful
$ sudo dd bs=1m if=nix.iso of=/dev/rdiskN
</programlisting>
  Using the 'raw' <command>rdiskN</command> device instead of
  <command>diskN</command> completes in minutes instead of hours. After
  <command>dd</command> completes, a GUI dialog "The disk you inserted was not
  readable by this computer" will pop up, which can be ignored.
 </para>

 <para>
  The <command>dd</command> utility will write the image verbatim to the drive,
  making it the recommended option for both UEFI and non-UEFI installations.
  For non-UEFI installations, you can alternatively use
  <link xlink:href="http://unetbootin.sourceforge.net/">unetbootin</link>. If
  you cannot use <command>dd</command> for a UEFI installation, you can also
  mount the ISO, copy its contents verbatim to your drive, then either:
  <itemizedlist>
   <listitem>
    <para>
     Change the label of the disk partition to the label of the ISO (visible
     with the blkid command), or
    </para>
   </listitem>
   <listitem>
    <para>
     Edit <filename>loader/entries/nixos-livecd.conf</filename> on the drive
     and change the <literal>root=</literal> field in the
     <literal>options</literal> line to point to your drive (see the
     documentation on <literal>root=</literal> in
     <link xlink:href="https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt">
     the kernel documentation</link> for more details).
    </para>
   </listitem>
   <listitem>
    <para>
     If you want to load the contents of the ISO to ram after bootin (So you
     can remove the stick after bootup) you can append the parameter
     <literal>copytoram</literal>to the <literal>options</literal> field.
    </para>
   </listitem>
  </itemizedlist>
 </para>
</section>
