%binary-format-file-system
%shared-memory-file-system
%pseudo-terminal-file-system
- %devtmpfs-file-system
%immutable-store
%control-groups
+ %elogind-file-systems
%base-file-systems
%container-file-systems
(default #t))
(create-mount-point? file-system-create-mount-point? ; Boolean
(default #f))
- (dependencies file-system-dependencies ; list of strings (mount
- ; points depended on)
- (default '())))
+ (dependencies file-system-dependencies ; list of <file-system>
+ (default '()))) ; or <mapped-device>
(define-inlinable (file-system-needed-for-boot? fs)
"Return true if FS has the 'needed-for-boot?' flag set, or if it's the root
(type "binfmt_misc")
(check? #f)))
-(define %devtmpfs-file-system
- ;; /dev as a 'devtmpfs' file system, needed for udev.
- (file-system
- (device "none")
- (mount-point "/dev")
- (type "devtmpfs")
- (check? #f)
-
- ;; Mount it from the initrd so /dev/pts & co. can then be mounted over it.
- (needed-for-boot? #t)))
-
(define %tty-gid
;; ID of the 'tty' group. Allocate it statically to make it easy to refer
;; to it from here and from the 'tty' group definitions.
(flags '(read-only bind-mount))))
(define %control-groups
- (cons (file-system
- (device "cgroup")
- (mount-point "/sys/fs/cgroup")
+ (let ((parent (file-system
+ (device "cgroup")
+ (mount-point "/sys/fs/cgroup")
+ (type "tmpfs")
+ (check? #f))))
+ (cons parent
+ (map (lambda (subsystem)
+ (file-system
+ (device "cgroup")
+ (mount-point (string-append "/sys/fs/cgroup/" subsystem))
+ (type "cgroup")
+ (check? #f)
+ (options subsystem)
+ (create-mount-point? #t)
+
+ ;; This must be mounted after, and unmounted before the
+ ;; parent directory.
+ (dependencies (list parent))))
+ '("cpuset" "cpu" "cpuacct" "memory" "devices" "freezer"
+ "blkio" "perf_event" "hugetlb")))))
+
+(define %elogind-file-systems
+ ;; We don't use systemd, but these file systems are needed for elogind,
+ ;; which was extracted from systemd.
+ (list (file-system
+ (device "none")
+ (mount-point "/run/systemd")
+ (type "tmpfs")
+ (check? #f)
+ (flags '(no-suid no-dev no-exec))
+ (options "mode=0755")
+ (create-mount-point? #t))
+ (file-system
+ (device "none")
+ (mount-point "/run/user")
(type "tmpfs")
- (check? #f))
- (map (lambda (subsystem)
- (file-system
- (device "cgroup")
- (mount-point (string-append "/sys/fs/cgroup/" subsystem))
- (type "cgroup")
- (check? #f)
- (options subsystem)
- (create-mount-point? #t)))
- '("cpuset" "cpu" "cpuacct" "memory" "devices" "freezer"
- "blkio" "perf_event" "hugetlb"))))
+ (check? #f)
+ (flags '(no-suid no-dev no-exec))
+ (options "mode=0755")
+ (create-mount-point? #t))))
(define %base-file-systems
;; List of basic file systems to be mounted. Note that /proc and /sys are
;; currently mounted by the initrd.
- (append (list %devtmpfs-file-system
- %pseudo-terminal-file-system
+ (append (list %pseudo-terminal-file-system
%shared-memory-file-system
%immutable-store)
+ %elogind-file-systems
%control-groups))
;; File systems for Linux containers differ from %base-file-systems in that