Merge pull request #47697 from samueldr/fix/47602-new-partitioning-steps

Manual: reviews partitioning steps
This commit is contained in:
Graham Christensen 2018-10-03 22:55:55 -04:00 committed by GitHub
commit a8878f4aef
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 421 additions and 338 deletions

View file

@ -4,7 +4,7 @@ all: manual-combined.xml format
.PHONY: debug .PHONY: debug
debug: generated manual-combined.xml debug: generated manual-combined.xml
manual-combined.xml: generated *.xml manual-combined.xml: generated *.xml **/*.xml
rm -f ./manual-combined.xml rm -f ./manual-combined.xml
nix-shell --packages xmloscopy \ nix-shell --packages xmloscopy \
--run "xmloscopy --docbook5 ./manual.xml ./manual-combined.xml" --run "xmloscopy --docbook5 ./manual.xml ./manual-combined.xml"

View file

@ -9,13 +9,12 @@
For systems without CD drive, the NixOS live CD can be booted from a USB 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: stick. You can use the <command>dd</command> utility to write the image:
<command>dd if=<replaceable>path-to-image</replaceable> <command>dd if=<replaceable>path-to-image</replaceable>
of=<replaceable>/dev/sdb</replaceable></command>. Be careful about specifying of=<replaceable>/dev/sdX</replaceable></command>. Be careful about specifying
the correct drive; you can use the <command>lsblk</command> command to get a the correct drive; you can use the <command>lsblk</command> command to get a
list of block devices. list of block devices.
</para> <note>
<title>On macOS</title>
<para> <para>
On macOS:
<programlisting> <programlisting>
$ diskutil list $ diskutil list
[..] [..]
@ -26,43 +25,16 @@ $ diskutil unmountDisk diskN
Unmount of all volumes on diskN was successful Unmount of all volumes on diskN was successful
$ sudo dd bs=1m if=nix.iso of=/dev/rdiskN $ sudo dd bs=1m if=nix.iso of=/dev/rdiskN
</programlisting> </programlisting>
Using the 'raw' <command>rdiskN</command> device instead of Using the 'raw' <command>rdiskN</command> device instead of
<command>diskN</command> completes in minutes instead of hours. After <command>diskN</command> completes in minutes instead of hours. After
<command>dd</command> completes, a GUI dialog "The disk you inserted was not <command>dd</command> completes, a GUI dialog "The disk you inserted was
readable by this computer" will pop up, which can be ignored. not readable by this computer" will pop up, which can be ignored.
</para>
</note>
</para> </para>
<para> <para>
The <command>dd</command> utility will write the image verbatim to the drive, 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. 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> </para>
</section> </section>

View file

@ -4,60 +4,46 @@
version="5.0" version="5.0"
xml:id="sec-installation"> xml:id="sec-installation">
<title>Installing NixOS</title> <title>Installing NixOS</title>
<para> <section xml:id="sec-installation-booting">
NixOS can be installed on BIOS or UEFI systems. The procedure for a UEFI <title>Booting the system</title>
installation is by and large the same as a BIOS installation. The differences
are mentioned in the steps that follow. <para>
</para> NixOS can be installed on BIOS or UEFI systems. The procedure for a UEFI
<orderedlist> installation is by and large the same as a BIOS installation. The
<listitem> differences are mentioned in the steps that follow.
<para> </para>
Boot from the CD.
</para> <para>
<variablelist> The installation media can be burned to a CD, or now more commonly, "burned"
<varlistentry> to a USB drive (see <xref linkend="sec-booting-from-usb"/>).
<term> </para>
UEFI systems
</term> <para>
<listitem> The installation media contains a basic NixOS installation. When its
<para> finished booting, it should have detected most of your hardware.
You should boot the live CD in UEFI mode (consult your specific </para>
hardware's documentation for instructions). You may find the
<link xlink:href="http://www.rodsbooks.com/refind">rEFInd boot <para>
manager</link> useful. The NixOS manual is available on virtual console 8 (press Alt+F8 to access)
</para> or by running <command>nixos-help</command>.
</listitem> </para>
</varlistentry>
</variablelist> <para>
</listitem> You are logged-in automatically as <literal>root</literal>. (The
<listitem> <literal>root</literal> user account has an empty password.)
<para> </para>
The CD contains a basic NixOS installation. (It also contains Memtest86+,
useful if you want to test new hardware). When its finished booting, it <para>
should have detected most of your hardware. If you downloaded the graphical ISO image, you can run <command>systemctl
</para> start display-manager</command> to start KDE. If you want to continue on the
</listitem> terminal, you can use <command>loadkeys</command> to switch to your
<listitem> preferred keyboard layout. (We even provide neo2 via <command>loadkeys de
<para> neo</command>!)
The NixOS manual is available on virtual console 8 (press Alt+F8 to access) </para>
or by running <command>nixos-help</command>.
</para> <section xml:id="sec-installation-booting-networking">
</listitem> <title>Networking in the installer</title>
<listitem>
<para>
You get logged in as <literal>root</literal> (with empty password).
</para>
</listitem>
<listitem>
<para>
If you downloaded the graphical ISO image, you can run <command>systemctl
start display-manager</command> to start KDE. If you want to continue on
the terminal, you can use <command>loadkeys</command> to switch to your
preferred keyboard layout. (We even provide neo2 via <command>loadkeys de
neo</command>!)
</para>
</listitem>
<listitem>
<para> <para>
The boot process should have brought up networking (check <command>ip The boot process should have brought up networking (check <command>ip
a</command>). Networking is necessary for the installer, since it will a</command>). Networking is necessary for the installer, since it will
@ -65,58 +51,165 @@
binaries). Its best if you have a DHCP server on your network. Otherwise binaries). Its best if you have a DHCP server on your network. Otherwise
configure networking manually using <command>ifconfig</command>. configure networking manually using <command>ifconfig</command>.
</para> </para>
<para> <para>
To manually configure the network on the graphical installer, first disable To manually configure the network on the graphical installer, first disable
network-manager with <command>systemctl stop network-manager</command>. network-manager with <command>systemctl stop network-manager</command>.
</para> </para>
<para> <para>
To manually configure the wifi on the minimal installer, run To manually configure the wifi on the minimal installer, run
<command>wpa_supplicant -B -i interface -c &lt;(wpa_passphrase 'SSID' <command>wpa_supplicant -B -i interface -c &lt;(wpa_passphrase 'SSID'
'key')</command>. 'key')</command>.
</para> </para>
</listitem>
<listitem>
<para> <para>
If you would like to continue the installation from a different machine you If you would like to continue the installation from a different machine you
need to activate the SSH daemon via <literal>systemctl start need to activate the SSH daemon via <literal>systemctl start
sshd</literal>. In order to be able to login you also need to set a sshd</literal>. In order to be able to login you also need to set a
password for <literal>root</literal> using <literal>passwd</literal>. password for <literal>root</literal> using <literal>passwd</literal>.
</para> </para>
</listitem> </section>
<listitem> </section>
<section xml:id="sec-installation-partitioning">
<title>Partitioning and formatting</title>
<para>
The NixOS installer doesnt do any partitioning or formatting, so you need
to do that yourself.
</para>
<para>
The NixOS installer ships with multiple partitioning tools. The examples
below use <command>parted</command>, but also provides
<command>fdisk</command>, <command>gdisk</command>,
<command>cfdisk</command>, and <command>cgdisk</command>.
</para>
<para>
The recommended partition scheme differs depending if the computer uses
<emphasis>Legacy Boot</emphasis> or <emphasis>UEFI</emphasis>.
</para>
<section xml:id="sec-installation-partitioning-UEFI">
<title>UEFI (GPT)</title>
<para> <para>
The NixOS installer doesnt do any partitioning or formatting yet, so you Here's an example partition scheme for UEFI, using
need to do that yourself. Use the following commands: <filename>/dev/sda</filename> as the device.
<itemizedlist> <note>
<para>
You can safely ignore <command>parted</command>'s informational message
about needing to update /etc/fstab.
</para>
</note>
</para>
<para>
<orderedlist>
<listitem> <listitem>
<para> <para>
For partitioning: <command>fdisk</command>. Create a <emphasis>GPT</emphasis> partition table.
<screen> <screen language="commands"># parted /dev/sda -- mklabel gpt</screen>
# fdisk /dev/sda # <lineannotation>(or whatever device you want to install on)</lineannotation>
-- for UEFI systems only
> n # <lineannotation>(create a new partition for /boot)</lineannotation>
> 3 # <lineannotation>(make it a partition number 3)</lineannotation>
> # <lineannotation>(press enter to accept the default)</lineannotation>
> +512M # <lineannotation>(the size of the UEFI boot partition)</lineannotation>
> t # <lineannotation>(change the partition type ...)</lineannotation>
> 3 # <lineannotation>(... of the boot partition ...)</lineannotation>
> 1 # <lineannotation>(... to 'UEFI System')</lineannotation>
-- for BIOS or UEFI systems
> n # <lineannotation>(create a new partition for /swap)</lineannotation>
> 2 # <lineannotation>(make it a partition number 2)</lineannotation>
> # <lineannotation>(press enter to accept the default)</lineannotation>
> +8G # <lineannotation>(the size of the swap partition, set to whatever you like)</lineannotation>
> n # <lineannotation>(create a new partition for /)</lineannotation>
> 1 # <lineannotation>(make it a partition number 1)</lineannotation>
> # <lineannotation>(press enter to accept the default)</lineannotation>
> # <lineannotation>(press enter to accept the default and use the rest of the remaining space)</lineannotation>
> a # <lineannotation>(make the partition bootable)</lineannotation>
> x # <lineannotation>(enter expert mode)</lineannotation>
> f # <lineannotation>(fix up the partition ordering)</lineannotation>
> r # <lineannotation>(exit expert mode)</lineannotation>
> w # <lineannotation>(write the partition table to disk and exit)</lineannotation></screen>
</para> </para>
</listitem> </listitem>
<listitem>
<para>
Add a <emphasis>swap</emphasis> partition. The size required will vary
according to needs, here a 8GiB one is created. The space left in front
(512MiB) will be used by the boot partition.
<screen language="commands"># parted /dev/sda -- mkpart primary linux-swap 512MiB 8.5GiB</screen>
<note>
<para>
The swap partition size rules are no different than for other Linux
distributions.
</para>
</note>
</para>
</listitem>
<listitem>
<para>
Next, add the <emphasis>root</emphasis> partition. This will fill the
remainder ending part of the disk.
<screen language="commands"># parted /dev/sda -- mkpart primary 8.5GiB -1MiB</screen>
</para>
</listitem>
<listitem>
<para>
Finally, the <emphasis>boot</emphasis> partition. NixOS by default uses
the ESP (EFI system partition) as its <emphasis>/boot</emphasis>
partition. It uses the initially reserved 512MiB at the start of the
disk.
<screen language="commands"># parted /dev/sda -- mkpart ESP fat32 1M 512MiB
# parted /dev/sda -- set 3 boot on</screen>
</para>
</listitem>
</orderedlist>
</para>
<para>
Once complete, you can follow with
<xref linkend="sec-installation-partitioning-formatting"/>.
</para>
</section>
<section xml:id="sec-installation-partitioning-MBR">
<title>Legacy Boot (MBR)</title>
<para>
Here's an example partition scheme for Legacy Boot, using
<filename>/dev/sda</filename> as the device.
<note>
<para>
You can safely ignore <command>parted</command>'s informational message
about needing to update /etc/fstab.
</para>
</note>
</para>
<para>
<orderedlist>
<listitem>
<para>
Create a <emphasis>MBR</emphasis> partition table.
<screen language="commands"># parted /dev/sda -- mklabel msdos</screen>
</para>
</listitem>
<listitem>
<para>
Add a <emphasis>swap</emphasis> partition. The size required will vary
according to needs, here a 8GiB one is created.
<screen language="commands"># parted /dev/sda -- mkpart primary linux-swap 1M 8GiB</screen>
<note>
<para>
The swap partition size rules are no different than for other Linux
distributions.
</para>
</note>
</para>
</listitem>
<listitem>
<para>
Finally, add the <emphasis>root</emphasis> partition. This will fill the
remainder of the disk.
<screen language="commands"># parted /dev/sda -- mkpart primary 8GiB -1s</screen>
</para>
</listitem>
</orderedlist>
</para>
<para>
Once complete, you can follow with
<xref linkend="sec-installation-partitioning-formatting"/>.
</para>
</section>
<section xml:id="sec-installation-partitioning-formatting">
<title>Formatting</title>
<para>
Use the following commands:
<itemizedlist>
<listitem> <listitem>
<para> <para>
For initialising Ext4 partitions: <command>mkfs.ext4</command>. It is For initialising Ext4 partitions: <command>mkfs.ext4</command>. It is
@ -169,242 +262,249 @@
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</para> </para>
</listitem> </section>
<listitem> </section>
<para> <section xml:id="sec-installation-installing">
Mount the target file system on which NixOS should be installed on <title>Installing</title>
<filename>/mnt</filename>, e.g.
<orderedlist>
<listitem>
<para>
Mount the target file system on which NixOS should be installed on
<filename>/mnt</filename>, e.g.
<screen> <screen>
# mount /dev/disk/by-label/nixos /mnt # mount /dev/disk/by-label/nixos /mnt
</screen> </screen>
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term> <term>
UEFI systems UEFI systems
</term> </term>
<listitem> <listitem>
<para> <para>
Mount the boot file system on <filename>/mnt/boot</filename>, e.g. Mount the boot file system on <filename>/mnt/boot</filename>, e.g.
<screen> <screen>
# mkdir -p /mnt/boot # mkdir -p /mnt/boot
# mount /dev/disk/by-label/boot /mnt/boot # mount /dev/disk/by-label/boot /mnt/boot
</screen> </screen>
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
If your machine has a limited amount of memory, you may want to activate If your machine has a limited amount of memory, you may want to activate
swap devices now (<command>swapon swap devices now (<command>swapon
<replaceable>device</replaceable></command>). The installer (or rather, the <replaceable>device</replaceable></command>). The installer (or rather,
build actions that it may spawn) may need quite a bit of RAM, depending on the build actions that it may spawn) may need quite a bit of RAM,
your configuration. depending on your configuration.
<screen> <screen>
# swapon /dev/sda2</screen> # swapon /dev/sda2</screen>
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
You now need to create a file You now need to create a file
<filename>/mnt/etc/nixos/configuration.nix</filename> that specifies the <filename>/mnt/etc/nixos/configuration.nix</filename> that specifies the
intended configuration of the system. This is because NixOS has a intended configuration of the system. This is because NixOS has a
<emphasis>declarative</emphasis> configuration model: you create or edit a <emphasis>declarative</emphasis> configuration model: you create or edit a
description of the desired configuration of your system, and then NixOS description of the desired configuration of your system, and then NixOS
takes care of making it happen. The syntax of the NixOS configuration file takes care of making it happen. The syntax of the NixOS configuration file
is described in <xref linkend="sec-configuration-syntax"/>, while a list of is described in <xref linkend="sec-configuration-syntax"/>, while a list
available configuration options appears in of available configuration options appears in
<xref <xref
linkend="ch-options"/>. A minimal example is shown in linkend="ch-options"/>. A minimal example is shown in
<xref <xref
linkend="ex-config"/>. linkend="ex-config"/>.
</para> </para>
<para> <para>
The command <command>nixos-generate-config</command> can generate an The command <command>nixos-generate-config</command> can generate an
initial configuration file for you: initial configuration file for you:
<screen> <screen>
# nixos-generate-config --root /mnt</screen> # nixos-generate-config --root /mnt</screen>
You should then edit <filename>/mnt/etc/nixos/configuration.nix</filename> You should then edit <filename>/mnt/etc/nixos/configuration.nix</filename>
to suit your needs: to suit your needs:
<screen> <screen>
# nano /mnt/etc/nixos/configuration.nix # nano /mnt/etc/nixos/configuration.nix
</screen> </screen>
If youre using the graphical ISO image, other editors may be available If youre using the graphical ISO image, other editors may be available
(such as <command>vim</command>). If you have network access, you can also (such as <command>vim</command>). If you have network access, you can also
install other editors — for instance, you can install Emacs by running install other editors — for instance, you can install Emacs by running
<literal>nix-env -i emacs</literal>. <literal>nix-env -i emacs</literal>.
</para>
<variablelist>
<varlistentry>
<term>
BIOS systems
</term>
<listitem>
<para>
You <emphasis>must</emphasis> set the option
<xref linkend="opt-boot.loader.grub.device"/> to specify on which disk
the GRUB boot loader is to be installed. Without it, NixOS cannot boot.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
UEFI systems
</term>
<listitem>
<para>
You <emphasis>must</emphasis> set the option
<xref linkend="opt-boot.loader.systemd-boot.enable"/> to
<literal>true</literal>. <command>nixos-generate-config</command> should
do this automatically for new configurations when booted in UEFI mode.
</para>
<para>
You may want to look at the options starting with
<option><link linkend="opt-boot.loader.efi.canTouchEfiVariables">boot.loader.efi</link></option>
and
<option><link linkend="opt-boot.loader.systemd-boot.enable">boot.loader.systemd</link></option>
as well.
</para>
</listitem>
</varlistentry>
</variablelist>
<para>
If there are other operating systems running on the machine before
installing NixOS, the <xref linkend="opt-boot.loader.grub.useOSProber"/>
option can be set to <literal>true</literal> to automatically add them to
the grub menu.
</para>
<para>
Another critical option is <option>fileSystems</option>, specifying the
file systems that need to be mounted by NixOS. However, you typically
dont need to set it yourself, because
<command>nixos-generate-config</command> sets it automatically in
<filename>/mnt/etc/nixos/hardware-configuration.nix</filename> from your
currently mounted file systems. (The configuration file
<filename>hardware-configuration.nix</filename> is included from
<filename>configuration.nix</filename> and will be overwritten by future
invocations of <command>nixos-generate-config</command>; thus, you
generally should not modify it.)
</para>
<note>
<para>
Depending on your hardware configuration or type of file system, you may
need to set the option <option>boot.initrd.kernelModules</option> to
include the kernel modules that are necessary for mounting the root file
system, otherwise the installed system will not be able to boot. (If this
happens, boot from the CD again, mount the target file system on
<filename>/mnt</filename>, fix
<filename>/mnt/etc/nixos/configuration.nix</filename> and rerun
<filename>nixos-install</filename>.) In most cases,
<command>nixos-generate-config</command> will figure out the required
modules.
</para> </para>
</note> <variablelist>
</listitem> <varlistentry>
<listitem> <term>
<para> BIOS systems
Do the installation: </term>
<listitem>
<para>
You <emphasis>must</emphasis> set the option
<xref linkend="opt-boot.loader.grub.device"/> to specify on which disk
the GRUB boot loader is to be installed. Without it, NixOS cannot boot.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
UEFI systems
</term>
<listitem>
<para>
You <emphasis>must</emphasis> set the option
<xref linkend="opt-boot.loader.systemd-boot.enable"/> to
<literal>true</literal>. <command>nixos-generate-config</command>
should do this automatically for new configurations when booted in UEFI
mode.
</para>
<para>
You may want to look at the options starting with
<option><link linkend="opt-boot.loader.efi.canTouchEfiVariables">boot.loader.efi</link></option>
and
<option><link linkend="opt-boot.loader.systemd-boot.enable">boot.loader.systemd</link></option>
as well.
</para>
</listitem>
</varlistentry>
</variablelist>
<para>
If there are other operating systems running on the machine before
installing NixOS, the <xref linkend="opt-boot.loader.grub.useOSProber"/>
option can be set to <literal>true</literal> to automatically add them to
the grub menu.
</para>
<para>
Another critical option is <option>fileSystems</option>, specifying the
file systems that need to be mounted by NixOS. However, you typically
dont need to set it yourself, because
<command>nixos-generate-config</command> sets it automatically in
<filename>/mnt/etc/nixos/hardware-configuration.nix</filename> from your
currently mounted file systems. (The configuration file
<filename>hardware-configuration.nix</filename> is included from
<filename>configuration.nix</filename> and will be overwritten by future
invocations of <command>nixos-generate-config</command>; thus, you
generally should not modify it.)
</para>
<note>
<para>
Depending on your hardware configuration or type of file system, you may
need to set the option <option>boot.initrd.kernelModules</option> to
include the kernel modules that are necessary for mounting the root file
system, otherwise the installed system will not be able to boot. (If this
happens, boot from the installation media again, mount the target file
system on <filename>/mnt</filename>, fix
<filename>/mnt/etc/nixos/configuration.nix</filename> and rerun
<filename>nixos-install</filename>.) In most cases,
<command>nixos-generate-config</command> will figure out the required
modules.
</para>
</note>
</listitem>
<listitem>
<para>
Do the installation:
<screen> <screen>
# nixos-install</screen> # nixos-install</screen>
Cross fingers. If this fails due to a temporary problem (such as a network Cross fingers. If this fails due to a temporary problem (such as a network
issue while downloading binaries from the NixOS binary cache), you can just issue while downloading binaries from the NixOS binary cache), you can
re-run <command>nixos-install</command>. Otherwise, fix your just re-run <command>nixos-install</command>. Otherwise, fix your
<filename>configuration.nix</filename> and then re-run <filename>configuration.nix</filename> and then re-run
<command>nixos-install</command>. <command>nixos-install</command>.
</para> </para>
<para> <para>
As the last step, <command>nixos-install</command> will ask you to set the As the last step, <command>nixos-install</command> will ask you to set the
password for the <literal>root</literal> user, e.g. password for the <literal>root</literal> user, e.g.
<screen> <screen>
setting root password... setting root password...
Enter new UNIX password: *** Enter new UNIX password: ***
Retype new UNIX password: *** Retype new UNIX password: ***</screen>
</screen> <note>
<note> <para>
<para> For unattended installations, it is possible to use
For unattended installations, it is possible to use <command>nixos-install --no-root-passwd</command> in order to disable
<command>nixos-install --no-root-passwd</command> in order to disable the the password prompt entirely.
password prompt entirely. </para>
</para> </note>
</note> </para>
</para> </listitem>
</listitem> <listitem>
<listitem> <para>
<para> If everything went well:
If everything went well:
<screen> <screen>
# reboot</screen> # reboot</screen>
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
You should now be able to boot into the installed NixOS. The GRUB boot menu You should now be able to boot into the installed NixOS. The GRUB boot
shows a list of <emphasis>available configurations</emphasis> (initially menu shows a list of <emphasis>available configurations</emphasis>
just one). Every time you change the NixOS configuration (see (initially just one). Every time you change the NixOS configuration (see
<link <link
linkend="sec-changing-config">Changing Configuration</link> linkend="sec-changing-config">Changing Configuration</link>
), a new item is added to the menu. This allows you to easily roll back to ), a new item is added to the menu. This allows you to easily roll back to
a previous configuration if something goes wrong. a previous configuration if something goes wrong.
</para> </para>
<para> <para>
You should log in and change the <literal>root</literal> password with You should log in and change the <literal>root</literal> password with
<command>passwd</command>. <command>passwd</command>.
</para> </para>
<para> <para>
Youll probably want to create some user accounts as well, which can be Youll probably want to create some user accounts as well, which can be
done with <command>useradd</command>: done with <command>useradd</command>:
<screen> <screen>
$ useradd -c 'Eelco Dolstra' -m eelco $ useradd -c 'Eelco Dolstra' -m eelco
$ passwd eelco</screen> $ passwd eelco</screen>
</para> </para>
<para> <para>
You may also want to install some software. For instance, You may also want to install some software. For instance,
<screen> <screen>
$ nix-env -qa \*</screen> $ nix-env -qa \*</screen>
shows what packages are available, and shows what packages are available, and
<screen> <screen>
$ nix-env -i w3m</screen> $ nix-env -i w3m</screen>
install the <literal>w3m</literal> browser. install the <literal>w3m</literal> browser.
</para> </para>
</listitem> </listitem>
</orderedlist> </orderedlist>
<para> </section>
To summarise, <xref linkend="ex-install-sequence" /> shows a typical sequence <section xml:id="sec-installation-summary">
of commands for installing NixOS on an empty hard drive (here <title>Installation summary</title>
<filename>/dev/sda</filename>). <xref linkend="ex-config"
<para>
To summarise, <xref linkend="ex-install-sequence" /> shows a typical
sequence of commands for installing NixOS on an empty hard drive (here
<filename>/dev/sda</filename>). <xref linkend="ex-config"
/> shows a /> shows a
corresponding configuration Nix expression. corresponding configuration Nix expression.
</para> </para>
<example xml:id='ex-install-sequence'>
<title>Commands for Installing NixOS on <filename>/dev/sda</filename></title> <example xml:id="ex-partition-scheme-MBR">
<screen> <title>Example partition schemes for NixOS on <filename>/dev/sda</filename> (MBR)</title>
# fdisk /dev/sda # <lineannotation>(or whatever device you want to install on)</lineannotation> <screen language="commands">
-- for UEFI systems only # parted /dev/sda -- mklabel msdos
> n # <lineannotation>(create a new partition for /boot)</lineannotation> # parted /dev/sda -- mkpart primary linux-swap 1M 8GiB
> 3 # <lineannotation>(make it a partition number 3)</lineannotation> # parted /dev/sda -- mkpart primary 8GiB -1s</screen>
> # <lineannotation>(press enter to accept the default)</lineannotation> </example>
> +512M # <lineannotation>(the size of the UEFI boot partition)</lineannotation>
> t # <lineannotation>(change the partition type ...)</lineannotation> <example xml:id="ex-partition-scheme-UEFI">
> 3 # <lineannotation>(... of the boot partition ...)</lineannotation> <title>Example partition schemes for NixOS on <filename>/dev/sda</filename> (UEFI)</title>
> 1 # <lineannotation>(... to 'UEFI System')</lineannotation> <screen language="commands">
-- for BIOS or UEFI systems # parted /dev/sda -- mklabel gpt
> n # <lineannotation>(create a new partition for /swap)</lineannotation> # parted /dev/sda -- mkpart primary linux-swap 512MiB 8.5GiB
> 2 # <lineannotation>(make it a partition number 2)</lineannotation> # parted /dev/sda -- mkpart primary 8.5GiB -1MiB
> # <lineannotation>(press enter to accept the default)</lineannotation> # parted /dev/sda -- mkpart ESP fat32 1M 512MiB
> +8G # <lineannotation>(the size of the swap partition)</lineannotation> # parted /dev/sda -- set 3 boot on</screen>
> n # <lineannotation>(create a new partition for /)</lineannotation> </example>
> 1 # <lineannotation>(make it a partition number 1)</lineannotation>
> # <lineannotation>(press enter to accept the default)</lineannotation> <example xml:id="ex-install-sequence">
> # <lineannotation>(press enter to accept the default and use the rest of the remaining space)</lineannotation> <title>Commands for Installing NixOS on <filename>/dev/sda</filename></title>
> a # <lineannotation>(make the partition bootable)</lineannotation> <para>
> x # <lineannotation>(enter expert mode)</lineannotation> With a partitioned disk.
> f # <lineannotation>(fix up the partition ordering)</lineannotation> <screen language="commands">
> r # <lineannotation>(exit expert mode)</lineannotation>
> w # <lineannotation>(write the partition table to disk and exit)</lineannotation>
# mkfs.ext4 -L nixos /dev/sda1 # mkfs.ext4 -L nixos /dev/sda1
# mkswap -L swap /dev/sda2 # mkswap -L swap /dev/sda2
# swapon /dev/sda2 # swapon /dev/sda2
@ -416,9 +516,11 @@ $ nix-env -i w3m</screen>
# nano /mnt/etc/nixos/configuration.nix # nano /mnt/etc/nixos/configuration.nix
# nixos-install # nixos-install
# reboot</screen> # reboot</screen>
</example> </para>
<example xml:id='ex-config'> </example>
<title>NixOS Configuration</title>
<example xml:id='ex-config'>
<title>NixOS Configuration</title>
<screen> <screen>
{ config, pkgs, ... }: { { config, pkgs, ... }: {
imports = [ imports = [
@ -438,10 +540,19 @@ $ nix-env -i w3m</screen>
services.sshd.enable = true; services.sshd.enable = true;
} }
</screen> </screen>
</example> </example>
<xi:include href="installing-usb.xml" /> </section>
<xi:include href="installing-pxe.xml" /> <section xml:id="sec-installation-additional-notes">
<xi:include href="installing-virtualbox-guest.xml" /> <title>Additional installation notes</title>
<xi:include href="installing-from-other-distro.xml" />
<xi:include href="installing-behind-a-proxy.xml" /> <xi:include href="installing-usb.xml" />
<xi:include href="installing-pxe.xml" />
<xi:include href="installing-virtualbox-guest.xml" />
<xi:include href="installing-from-other-distro.xml" />
<xi:include href="installing-behind-a-proxy.xml" />
</section>
</chapter> </chapter>