Merge pull request #17822 from abbradar/systemd-mounts
nixos filesystems: unify special filesystems handling
This commit is contained in:
@@ -154,9 +154,15 @@ in
|
||||
|
||||
system.activationScripts.tmpfs =
|
||||
''
|
||||
${pkgs.utillinux}/bin/mount -o "remount,size=${config.boot.devSize}" none /dev
|
||||
${pkgs.utillinux}/bin/mount -o "remount,size=${config.boot.devShmSize}" none /dev/shm
|
||||
${pkgs.utillinux}/bin/mount -o "remount,size=${config.boot.runSize}" none /run
|
||||
specialMount() {
|
||||
local device="$1"
|
||||
local mountPoint="$2"
|
||||
local options="$3"
|
||||
local fsType="$4"
|
||||
|
||||
${pkgs.utillinux}/bin/mount -t "$fsType" -o "remount,$options" "$device" "$mountPoint"
|
||||
}
|
||||
source ${config.system.build.earlyMountScript}
|
||||
'';
|
||||
|
||||
};
|
||||
|
||||
@@ -59,22 +59,24 @@ echo
|
||||
echo "[1;32m<<< NixOS Stage 1 >>>[0m"
|
||||
echo
|
||||
|
||||
|
||||
# Mount special file systems.
|
||||
# Make several required directories.
|
||||
mkdir -p /etc/udev
|
||||
touch /etc/fstab # to shut up mount
|
||||
touch /etc/mtab # to shut up mke2fs
|
||||
ln -s /proc/mounts /etc/mtab # to shut up mke2fs
|
||||
touch /etc/udev/hwdb.bin # to shut up udev
|
||||
touch /etc/initrd-release
|
||||
mkdir -p /proc
|
||||
mount -t proc proc /proc
|
||||
mkdir -p /sys
|
||||
mount -t sysfs sysfs /sys
|
||||
mount -t devtmpfs -o "size=@devSize@" devtmpfs /dev
|
||||
mkdir -p /run
|
||||
mount -t tmpfs -o "mode=0755,size=@runSize@" tmpfs /run
|
||||
mkdir /dev/pts
|
||||
mount -t devpts devpts /dev/pts
|
||||
|
||||
# Mount special file systems.
|
||||
specialMount() {
|
||||
local device="$1"
|
||||
local mountPoint="$2"
|
||||
local options="$3"
|
||||
local fsType="$4"
|
||||
|
||||
mkdir -m 0755 -p "$mountPoint"
|
||||
mount -n -t "$fsType" -o "$options" "$device" "$mountPoint"
|
||||
}
|
||||
source @earlyMountScript@
|
||||
|
||||
# Log the script output to /dev/kmsg or /run/log/stage-1-init.log.
|
||||
mkdir -p /tmp
|
||||
|
||||
@@ -190,7 +190,9 @@ let
|
||||
|
||||
inherit udevRules extraUtils modulesClosure;
|
||||
|
||||
inherit (config.boot) resumeDevice devSize runSize;
|
||||
inherit (config.boot) resumeDevice;
|
||||
|
||||
inherit (config.system.build) earlyMountScript;
|
||||
|
||||
inherit (config.boot.initrd) checkJournalingFS
|
||||
preLVMCommands preDeviceCommands postDeviceCommands postMountCommands preFailCommands kernelModules;
|
||||
|
||||
@@ -37,12 +37,16 @@ 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
|
||||
mkdir -m 0755 -p /proc
|
||||
mount -n -t proc proc /proc
|
||||
mkdir -m 0755 -p /dev
|
||||
mount -t devtmpfs devtmpfs /dev
|
||||
mkdir -m 0755 -p /sys
|
||||
mount -t sysfs sysfs /sys
|
||||
specialMount() {
|
||||
local device="$1"
|
||||
local mountPoint="$2"
|
||||
local options="$3"
|
||||
local fsType="$4"
|
||||
|
||||
mkdir -m 0755 -p "$mountPoint"
|
||||
mount -n -t "$fsType" -o "$options" "$device" "$mountPoint"
|
||||
}
|
||||
source @earlyMountScript@
|
||||
fi
|
||||
|
||||
|
||||
@@ -87,11 +91,6 @@ done
|
||||
|
||||
|
||||
# More special file systems, initialise required directories.
|
||||
if ! mountpoint -q /dev/shm; then
|
||||
mkdir -m 0755 /dev/shm
|
||||
mount -t tmpfs -o "rw,nosuid,nodev,size=@devShmSize@" tmpfs /dev/shm
|
||||
fi
|
||||
mkdir -m 0755 -p /dev/pts
|
||||
[ -e /proc/bus/usb ] && mount -t usbfs usbfs /proc/bus/usb # UML doesn't have USB by default
|
||||
mkdir -m 01777 -p /tmp
|
||||
mkdir -m 0755 -p /var /var/log /var/lib /var/db
|
||||
@@ -112,14 +111,6 @@ rm -f /etc/{group,passwd,shadow}.lock
|
||||
rm -rf /nix/var/nix/gcroots/tmp /nix/var/nix/temproots
|
||||
|
||||
|
||||
# Create a tmpfs on /run to hold runtime state for programs such as
|
||||
# udev (if stage 1 hasn't already done so).
|
||||
if ! mountpoint -q /run; then
|
||||
rm -rf /run
|
||||
mkdir -m 0755 -p /run
|
||||
mount -t tmpfs -o "mode=0755,size=@runSize@" tmpfs /run
|
||||
fi
|
||||
|
||||
# Create a ramfs on /run/keys to hold secrets that shouldn't be
|
||||
# written to disk (generally used for NixOps, harmless elsewhere).
|
||||
if ! mountpoint -q /run/keys; then
|
||||
|
||||
@@ -20,10 +20,9 @@ let
|
||||
src = ./stage-2-init.sh;
|
||||
shellDebug = "${pkgs.bashInteractive}/bin/bash";
|
||||
isExecutable = true;
|
||||
inherit (config.boot) devShmSize runSize;
|
||||
inherit (config.nix) readOnlyStore;
|
||||
inherit (config.networking) useHostResolvConf;
|
||||
ttyGid = config.ids.gids.tty;
|
||||
inherit (config.system.build) earlyMountScript;
|
||||
path =
|
||||
[ pkgs.coreutils
|
||||
pkgs.utillinux
|
||||
|
||||
Reference in New Issue
Block a user