From e4fb2bb0c51f6e7fadef6f46b2fe50a6f02e0a38 Mon Sep 17 00:00:00 2001
From: Franz Pletz <fpletz@fnordicwalking.de>
Date: Tue, 10 Jan 2017 17:29:19 +0100
Subject: [PATCH] Revert "nixos/stage2: Check for each special mount
 individually and mount missing ones. (#21370)"

This reverts commit 712e62c2608908cfda471cb8fe409ac65c4844e4.

This commit broke NixOS containers. Systemd wouldn't detect if a container
started successfully and would kill it again after a grace period.

Additionally this prints mount errors due to already mounted filesystems
at boot.
---
 nixos/modules/system/boot/stage-2-init.sh | 28 ++++++++++-------------
 1 file changed, 12 insertions(+), 16 deletions(-)

diff --git a/nixos/modules/system/boot/stage-2-init.sh b/nixos/modules/system/boot/stage-2-init.sh
index 7a54bb03e297..f827e530f877 100644
--- a/nixos/modules/system/boot/stage-2-init.sh
+++ b/nixos/modules/system/boot/stage-2-init.sh
@@ -34,24 +34,20 @@ if [ -z "$container" ]; then
 fi
 
 
-# Likewise, stage 1 mounts /proc, /dev, /sys and /run, so if we don't have a
+# Likewise, stage 1 mounts /proc, /dev and /sys, so if we don't have a
 # stage 1, we need to do that here.
-# We check for each mountpoint separately to avoid esoteric failure modes
-# if only a subset was mounted by whatever called us.
-specialMount() {
-    local device="$1"
-    local mountPoint="$2"
-    local options="$3"
-    local fsType="$4"
+if [ ! -e /proc/1 ]; then
+    specialMount() {
+        local device="$1"
+        local mountPoint="$2"
+        local options="$3"
+        local fsType="$4"
 
-    if mountpoint -q "$mountpoint"; then
-        return 0
-    fi
-
-    mkdir -m 0755 -p "$mountPoint"
-    mount -n -t "$fsType" -o "$options" "$device" "$mountPoint"
-}
-source @earlyMountScript@
+        mkdir -m 0755 -p "$mountPoint"
+        mount -n -t "$fsType" -o "$options" "$device" "$mountPoint"
+    }
+    source @earlyMountScript@
+fi
 
 
 echo "booting system configuration $systemConfig" > /dev/kmsg