e9affb4274
The old boot.spl.hostid option was not working correctly due to an upstream bug. Instead, now we will create the /etc/hostid file so that all applications (including the ZFS kernel modules, ZFS user-space applications and other unrelated programs) pick-up the same system-wide host id. Note that glibc (and by extension, the `hostid` program) also respect the host id configured in /etc/hostid, if it exists. The hostid option is now mandatory when using ZFS because otherwise, ZFS will require you to force-import your ZFS pools if you want to use them, which is undesirable because it disables some of the checks that ZFS does to make sure it is safe to import a ZFS pool. The /etc/hostid file must also exist when booting the initrd, before the SPL kernel module is loaded, so that ZFS picks up the hostid correctly. The complexity in creating the /etc/hostid file is due to having to write the host ID as a 32-bit binary value, taking into account the endianness of the machine, while using only shell commands and/or simple utilities (to avoid exploding the size of the initrd).
54 lines
1.6 KiB
Nix
54 lines
1.6 KiB
Nix
# This module contains the basic configuration for building a NixOS
|
|
# installation CD.
|
|
|
|
{ config, lib, pkgs, ... }:
|
|
|
|
with lib;
|
|
|
|
{
|
|
imports =
|
|
[ ./channel.nix
|
|
./iso-image.nix
|
|
|
|
# Profiles of this basic installation CD.
|
|
../../profiles/all-hardware.nix
|
|
../../profiles/base.nix
|
|
../../profiles/installation-device.nix
|
|
];
|
|
|
|
# ISO naming.
|
|
isoImage.isoName = "${config.isoImage.isoBaseName}-${config.system.nixosVersion}-${pkgs.stdenv.system}.iso";
|
|
|
|
isoImage.volumeID = substring 0 11 "NIXOS_ISO";
|
|
|
|
# Make the installer more likely to succeed in low memory
|
|
# environments. The kernel's overcommit heustistics bite us
|
|
# fairly often, preventing processes such as nix-worker or
|
|
# download-using-manifests.pl from forking even if there is
|
|
# plenty of free memory.
|
|
boot.kernel.sysctl."vm.overcommit_memory" = "1";
|
|
|
|
# To speed up installation a little bit, include the complete stdenv
|
|
# in the Nix store on the CD. Archive::Cpio is needed for the
|
|
# initrd builder.
|
|
isoImage.storeContents = [ pkgs.stdenv pkgs.busybox pkgs.perlPackages.ArchiveCpio ];
|
|
|
|
# EFI booting
|
|
isoImage.makeEfiBootable = true;
|
|
|
|
# Add Memtest86+ to the CD.
|
|
boot.loader.grub.memtest86.enable = true;
|
|
|
|
# Get a console as soon as the initrd loads fbcon on EFI boot.
|
|
boot.initrd.kernelModules = [ "fbcon" ];
|
|
|
|
# Add support for cow filesystems and their utilities
|
|
boot.supportedFilesystems = [ /* "zfs" */ "btrfs" ];
|
|
|
|
# Configure host id for ZFS to work
|
|
networking.hostId = "8425e349";
|
|
|
|
# Allow the user to log in as root without a password.
|
|
users.extraUsers.root.initialHashedPassword = "";
|
|
}
|