summary refs log tree commit diff
path: root/nixos/modules/system
diff options
context:
space:
mode:
authorJörg Thalheim <joerg@thalheim.io>2017-04-04 23:27:51 +0200
committerJörg Thalheim <joerg@thalheim.io>2017-04-05 09:05:18 +0200
commitb42af252238d8e5a4b737ad39fda503f9d93c36f (patch)
tree74fba44c23f88d05f3920eedeb5f85d4688136e8 /nixos/modules/system
parenta5ad8b4f69d541f1b8e456eb5d405b1558df9885 (diff)
downloadnixpkgs-b42af252238d8e5a4b737ad39fda503f9d93c36f.tar
nixpkgs-b42af252238d8e5a4b737ad39fda503f9d93c36f.tar.gz
nixpkgs-b42af252238d8e5a4b737ad39fda503f9d93c36f.tar.bz2
nixpkgs-b42af252238d8e5a4b737ad39fda503f9d93c36f.tar.lz
nixpkgs-b42af252238d8e5a4b737ad39fda503f9d93c36f.tar.xz
nixpkgs-b42af252238d8e5a4b737ad39fda503f9d93c36f.tar.zst
nixpkgs-b42af252238d8e5a4b737ad39fda503f9d93c36f.zip
stage-2: replace readonly-mountpoint by findmnt
Diffstat (limited to 'nixos/modules/system')
-rw-r--r--nixos/modules/system/boot/readonly-mountpoint.c20
-rw-r--r--nixos/modules/system/boot/stage-2-init.sh4
-rw-r--r--nixos/modules/system/boot/stage-2.nix13
3 files changed, 5 insertions, 32 deletions
diff --git a/nixos/modules/system/boot/readonly-mountpoint.c b/nixos/modules/system/boot/readonly-mountpoint.c
deleted file mode 100644
index 27b66687382..00000000000
--- a/nixos/modules/system/boot/readonly-mountpoint.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#include <sys/statvfs.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char ** argv) {
-	struct statvfs stat;
-	if (argc != 2) {
-		fprintf(stderr, "Usage: %s PATH", argv[0]);
-		exit(2);
-	}
-	if (statvfs(argv[1], &stat) != 0) {
-		perror("statvfs");
-		exit(3);
-	}
-	if (stat.f_flag & ST_RDONLY)
-		exit(0);
-	else
-		exit(1);
-}
-
diff --git a/nixos/modules/system/boot/stage-2-init.sh b/nixos/modules/system/boot/stage-2-init.sh
index 99930fb95a6..b5b2acf86ab 100644
--- a/nixos/modules/system/boot/stage-2-init.sh
+++ b/nixos/modules/system/boot/stage-2-init.sh
@@ -46,7 +46,9 @@ echo "booting system configuration $systemConfig" > /dev/kmsg
 chown -f 0:30000 /nix/store
 chmod -f 1775 /nix/store
 if [ -n "@readOnlyStore@" ]; then
-    if ! readonly-mountpoint /nix/store; then
+    if ! [[ "$(findmnt --noheadings --output OPTIONS /nix/store)" =~ ro(,|$) ]]; then
+        # FIXME when linux < 4.5 is EOL, switch to atomic bind mounts
+        #mount /nix/store /nix/store -o bind,remount,ro
         mount --bind /nix/store /nix/store
         mount -o remount,ro,bind /nix/store
     fi
diff --git a/nixos/modules/system/boot/stage-2.nix b/nixos/modules/system/boot/stage-2.nix
index a6864bf80c3..8db6d2d2f73 100644
--- a/nixos/modules/system/boot/stage-2.nix
+++ b/nixos/modules/system/boot/stage-2.nix
@@ -7,15 +7,6 @@ let
   kernel = config.boot.kernelPackages.kernel;
   activateConfiguration = config.system.activationScripts.script;
 
-  readonlyMountpoint = pkgs.stdenv.mkDerivation {
-    name = "readonly-mountpoint";
-    unpackPhase = "true";
-    installPhase = ''
-      mkdir -p $out/bin
-      cc -O3 ${./readonly-mountpoint.c} -o $out/bin/readonly-mountpoint
-    '';
-  };
-
   bootStage2 = pkgs.substituteAll {
     src = ./stage-2-init.sh;
     shellDebug = "${pkgs.bashInteractive}/bin/bash";
@@ -23,11 +14,11 @@ let
     inherit (config.nix) readOnlyStore;
     inherit (config.networking) useHostResolvConf;
     inherit (config.system.build) earlyMountScript;
-    path = lib.makeBinPath ([
+    path = lib.makeBinPath [
       pkgs.coreutils
       pkgs.utillinux
       pkgs.openresolv
-    ] ++ optional config.nix.readOnlyStore readonlyMountpoint);
+    ];
     postBootCommands = pkgs.writeText "local-cmds"
       ''
         ${config.boot.postBootCommands}