From ed20ccf64dc652ed6ed73616707bd1ef0bbd40b4 Mon Sep 17 00:00:00 2001 From: Gerg-L Date: Mon, 31 Jul 2023 20:06:23 -0400 Subject: [PATCH] not a IFD somehow... --- modules/boot/stage-2-init.sh | 145 ----------------------------------- modules/boot/stage2patch.nix | 6 +- 2 files changed, 4 insertions(+), 147 deletions(-) delete mode 100755 modules/boot/stage-2-init.sh diff --git a/modules/boot/stage-2-init.sh b/modules/boot/stage-2-init.sh deleted file mode 100755 index 656afef..0000000 --- a/modules/boot/stage-2-init.sh +++ /dev/null @@ -1,145 +0,0 @@ -#! @shell@ -exec 1<>/dev/null - -systemConfig=@systemConfig@ - -export HOME=/root PATH="@path@" - - -if [ "${IN_NIXOS_SYSTEMD_STAGE1:-}" != true ]; then - # Process the kernel command line. - for o in $(>>\e[0m" - echo - - - # Normally, stage 1 mounts the root filesystem read/writable. - # However, in some environments, stage 2 is executed directly, and the - # root is read-only. So make it writable here. - if [ -z "$container" ]; then - mount -n -o remount,rw none / - fi -fi - - -# Likewise, stage 1 mounts /proc, /dev and /sys, so if we don't have a -# stage 1, we need to do that here. -if [ ! -e /proc/1 ]; then - specialMount() { - local device="$1" - local mountPoint="$2" - local options="$3" - local fsType="$4" - - # We must not overwrite this mount because it's bind-mounted - # from stage 1's /run - if [ "${IN_NIXOS_SYSTEMD_STAGE1:-}" = true ] && [ "${mountPoint}" = /run ]; then - return - fi - - install -m 0755 -d "$mountPoint" - mount -n -t "$fsType" -o "$options" "$device" "$mountPoint" - } - source @earlyMountScript@ -fi - - -if [ "${IN_NIXOS_SYSTEMD_STAGE1:-}" = true ]; then - echo "booting system configuration ${systemConfig}" -else - echo "booting system configuration $systemConfig" > /dev/kmsg -fi - - -# Make /nix/store a read-only bind mount to enforce immutability of -# the Nix store. Note that we can't use "chown root:nixbld" here -# because users/groups might not exist yet. -# Silence chown/chmod to fail gracefully on a readonly filesystem -# like squashfs. -chown -f 0:30000 /nix/store -chmod -f 1775 /nix/store -if [ -n "@readOnlyNixStore@" ]; then - if ! [[ "$(findmnt --noheadings --output OPTIONS /nix/store)" =~ ro(,|$) ]]; then - if [ -z "$container" ]; then - mount --bind /nix/store /nix/store - else - mount --rbind /nix/store /nix/store - fi - mount -o remount,ro,bind /nix/store - fi -fi - - -if [ "${IN_NIXOS_SYSTEMD_STAGE1:-}" != true ]; then - # Use /etc/resolv.conf supplied by systemd-nspawn, if applicable. - if [ -n "@useHostResolvConf@" ] && [ -e /etc/resolv.conf ]; then - resolvconf -m 1000 -a host &1 {logErrFd}>&2 - if test -w /dev/kmsg; then - exec > >(tee -i /proc/self/fd/"$logOutFd" | while read -r line; do - if test -n "$line"; then - echo "<7>stage-2-init: $line" > /dev/kmsg - fi - done) 2>&1 - else - mkdir -p /run/log - exec > >(tee -i /run/log/stage-2-init.log) 2>&1 - fi -fi - - -# Required by the activation script -install -m 0755 -d /etc /etc/nixos -install -m 01777 -d /tmp - - -# Run the script that performs all configuration activation that does -# not have to be done at boot time. -echo "running activation script..." -$systemConfig/activate - - -# Record the boot configuration. -ln -sfn "$systemConfig" /run/booted-system - - -# Run any user-specified commands. -@shell@ @postBootCommands@ - - -# Ensure systemd doesn't try to populate /etc, by forcing its first-boot -# heuristic off. It doesn't matter what's in /etc/machine-id for this purpose, -# and systemd will immediately fill in the file when it starts, so just -# creating it is enough. This `: >>` pattern avoids forking and avoids changing -# the mtime if the file already exists. -: >> /etc/machine-id - - -# No need to restore the stdout/stderr streams we never redirected and -# especially no need to start systemd -if [ "${IN_NIXOS_SYSTEMD_STAGE1:-}" != true ]; then - # Reset the logging file descriptors. - exec 1>&$logOutFd 2>&$logErrFd - exec {logOutFd}>&- {logErrFd}>&- - - - # Start systemd in a clean environment. - echo "starting systemd..." - exec @systemdExecutable@ "$@" -fi diff --git a/modules/boot/stage2patch.nix b/modules/boot/stage2patch.nix index 4965067..a12c111 100644 --- a/modules/boot/stage2patch.nix +++ b/modules/boot/stage2patch.nix @@ -1,4 +1,4 @@ -_: { +{unstable, ...}: { lib, config, pkgs, @@ -9,7 +9,9 @@ let useHostResolvConf = config.networking.resolvconf.enable && config.networking.useHostResolvConf; bootStage2 = pkgs.substituteAll { - src = ./stage-2-init.sh; + src = pkgs.runCommand "stage-2-init.sh" {} '' + sed '2i exec 1<>/dev/null' ${unstable}/nixos/modules/system/boot/stage-2-init.sh > $out + ''; shellDebug = "${pkgs.bashInteractive}/bin/bash"; shell = "${pkgs.bash}/bin/bash"; inherit (config.boot) readOnlyNixStore systemdExecutable extraSystemdUnitPaths;