From e97a7d69f08703c385b72ce7fdce0bf94ce2b208 Mon Sep 17 00:00:00 2001 From: Luke Granger-Brown Date: Tue, 8 Aug 2023 23:28:42 +0100 Subject: [PATCH] kerrigan: switch to systemd-boot --- ops/nixos/kerrigan/boot-builder.nix | 8 -- ops/nixos/kerrigan/boot-builder.sh | 110 ---------------------------- ops/nixos/kerrigan/default.nix | 18 +---- 3 files changed, 3 insertions(+), 133 deletions(-) delete mode 100644 ops/nixos/kerrigan/boot-builder.nix delete mode 100755 ops/nixos/kerrigan/boot-builder.sh diff --git a/ops/nixos/kerrigan/boot-builder.nix b/ops/nixos/kerrigan/boot-builder.nix deleted file mode 100644 index bad0c44ef1..0000000000 --- a/ops/nixos/kerrigan/boot-builder.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ substituteAll, coreutils, gnused, gnugrep, bash, ubootTools }: - -substituteAll { - src = ./boot-builder.sh; - isExecutable = true; - path = [coreutils gnused gnugrep ubootTools]; - inherit bash; -} diff --git a/ops/nixos/kerrigan/boot-builder.sh b/ops/nixos/kerrigan/boot-builder.sh deleted file mode 100755 index 28e9d2387f..0000000000 --- a/ops/nixos/kerrigan/boot-builder.sh +++ /dev/null @@ -1,110 +0,0 @@ -#! @bash@/bin/sh -e - -shopt -s nullglob - -export PATH=/empty -for i in @path@; do PATH=$PATH:$i/bin; done - -usage() { - echo "usage: $0 -c [-d ] [-g ]" >&2 - exit 1 -} - -default= # Default configuration -target=/boot # Target directory -numGenerations=0 # Number of other generations to include in the menu - -while getopts "c:d:g:" opt; do - case "$opt" in - c) default="$OPTARG" ;; - d) target="$OPTARG" ;; - g) numGenerations="$OPTARG" ;; - \?) usage ;; - esac -done - -[ "$default" = "" ] && usage - -mkdir -p $target/nixos - -# Convert a path to a file in the Nix store such as -# /nix/store/-/file to --. -cleanName() { - local path="$1" - echo "$path" | sed 's|^/nix/store/||' | sed 's|/|-|g' -} - -# Copy a file from the Nix store to $target/nixos. -declare -A filesCopied - -copyToKernelsDir() { - local src=$(readlink -f "$1") - local dst="$target/nixos/$(cleanName $src)" - # Don't copy the file if $dst already exists. This means that we - # have to create $dst atomically to prevent partially copied - # kernels or initrd if this script is ever interrupted. - if ! test -e $dst; then - local dstTmp=$dst.tmp.$$ - cp -r $src $dstTmp - mv $dstTmp $dst - fi - filesCopied[$dst]=1 - result=$dst -} - -# Copy its kernel, initrd and dtbs to $target/nixos, and echo out an -# extlinux menu entry -addEntry() { - local path=$(readlink -f "$1") - local tag="$2" # Generation number or 'default' - - if ! test -e $path/kernel -a -e $path/initrd; then - return - fi - - copyToKernelsDir "$path/kernel"; kernel=$result - copyToKernelsDir "$path/initrd"; initrd=$result - dtbDir=$(readlink -m "$path/dtbs") - if [ -e "$dtbDir" ]; then - copyToKernelsDir "$dtbDir"; dtbs=$result - fi - - timestampEpoch=$(stat -L -c '%Z' $path) - - timestamp=$(date "+%Y-%m-%d %H:%M" -d @$timestampEpoch) - nixosLabel="$(cat $path/nixos-version)" - extraParams="$(cat $path/kernel-params)" - - filesCopied[$target/nixos/$tag]=1 - echo > $target/nixos/$tag.tmp - echo "ext4load usb 0:2 \$kernel_addr_r boot/nixos/$(basename $kernel)" >> $target/nixos/$tag.tmp - echo "ext4load usb 0:2 \$fdt_addr_r boot/nixos/$(basename $dtbs)/marvell/armada-7040-mochabin.dtb" >> $target/nixos/$tag.tmp - echo "ext4load usb 0:2 0xa700000 boot/nixos/$(basename $initrd)" >> $target/nixos/$tag.tmp - echo "setenv bootargs \$console init=$path/init $extraParams" >> $target/nixos/$tag.tmp - echo "booti \$kernel_addr_r 0xa700000:\$filesize \$fdt_addr_r" >> $target/nixos/$tag.tmp - mkimage -A arm64 -O u-boot -T script -C none -a 0 -e 0 -n "Boot Script ${nixosLabel} ${timestamp}" -d $target/nixos/$tag.tmp $target/nixos/$tag -} - -addEntry $default default - -if [ "$numGenerations" -gt 0 ]; then - # Add up to $numGenerations generations of the system profile to the menu, - # in reverse (most recent to least recent) order. - for generation in $( - (cd /nix/var/nix/profiles && ls -d system-*-link) \ - | sed 's/system-\([0-9]\+\)-link/\1/' \ - | sort -n -r \ - | head -n $numGenerations); do - link=/nix/var/nix/profiles/system-$generation-link - addEntry $link $generation - done -fi - -# Remove obsolete files from $target/nixos. -for fn in $target/nixos/*; do - if ! test "${filesCopied[$fn]}" = 1; then - echo "Removing no longer needed boot file: $fn" - chmod +w -- "$fn" - rm -rf -- "$fn" - fi -done diff --git a/ops/nixos/kerrigan/default.nix b/ops/nixos/kerrigan/default.nix index 0dfd7cd4a7..f53382e4a6 100644 --- a/ops/nixos/kerrigan/default.nix +++ b/ops/nixos/kerrigan/default.nix @@ -17,13 +17,9 @@ let populate-boot-builder = pkgs.buildPackages.callPackage ./boot-builder.nix { }; in { - imports = [ - "${modulesPath}/installer/sd-card/sd-image.nix" - ]; - fileSystems = { "/" = { device = "/dev/disk/by-label/NIXOS_SD"; fsType = "ext4"; }; - "/boot/firmware" = { device = "/dev/disk/by-label/FIRMWARE"; fsType = "vfat"; }; + "/boot" = { device = "/dev/disk/by-label/ESP"; fsType = "vfat"; }; }; boot.kernelPackages = pkgs.linuxPackages_latest; @@ -105,16 +101,8 @@ in }; environment.etc = nmBits; - sdImage.populateFirmwareCommands = lib.mkForce ""; - - boot.loader.grub.enable = false; - boot.loader.generic-extlinux-compatible.enable = lib.mkForce false; - boot.consoleLogLevel = lib.mkDefault 7; - system.build.installBootLoader = "${boot-builder} -g 10 -c"; - sdImage.populateRootCommands = lib.mkAfter '' - mkdir -p ./files/boot - ${populate-boot-builder} -c ${config.system.build.toplevel} -d ./files/boot - ''; + boot.loader.efi.canTouchEfiVariables = false; + boot.loader.systemd-boot.enable = true; services.radvd = { enable = true;