diff options
author | Janneke Nieuwenhuizen <janneke@gnu.org> | 2023-05-30 18:07:17 +0200 |
---|---|---|
committer | Janneke Nieuwenhuizen <janneke@gnu.org> | 2024-10-15 11:13:48 +0200 |
commit | 7c93145d9e027cb571bf7634192dfae5468ecde2 (patch) | |
tree | f46eccfce9f3d8d09973badfbd25aa4c82d5b362 /gnu/build | |
parent | 85130e1a752275aaa4030124e3d38ab502c62e0b (diff) | |
download | guix-7c93145d9e027cb571bf7634192dfae5468ecde2.tar guix-7c93145d9e027cb571bf7634192dfae5468ecde2.tar.gz |
hurd-boot: Support system init: Create essential device nodes.
* gnu/build/hurd-boot.scm (make-hurd-device-nodes): Cater for existing
directories (dev, servers).
(set-hurd-device-translators): Remove /servers/socket/1, that is created by
libexec/console-run. Cater for nonexistent /dev/console.
(boot-hurd-system): Call make-hurd-device-nodes on initial run.
Diffstat (limited to 'gnu/build')
-rw-r--r-- | gnu/build/hurd-boot.scm | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/gnu/build/hurd-boot.scm b/gnu/build/hurd-boot.scm index 4407284acb..daf4fb41ab 100644 --- a/gnu/build/hurd-boot.scm +++ b/gnu/build/hurd-boot.scm @@ -79,13 +79,13 @@ Return the value associated with OPTION, or #f on failure." (define (scope dir) (string-append root (if (string-suffix? "/" root) "" "/") dir)) - (mkdir (scope "dev")) + (mkdir-p (scope "dev")) ;; Don't create /dev/null etc just yet; the store ;; messes-up the permission bits. ;; Don't create /dev/console, /dev/vcs, etc.: they are created by ;; console-run on first boot. - (mkdir (scope "servers")) + (mkdir-p (scope "servers")) (for-each (lambda (file) (call-with-output-file (scope (string-append "servers/" file)) (lambda (port) @@ -100,7 +100,8 @@ Return the value associated with OPTION, or #f on failure." "kill" "suspend")) - (mkdir (scope "servers/socket")) + (mkdir-p (scope "servers/socket")) + ;; Don't create /servers/socket/1 & co: runsystem does that on first boot. ;; TODO: Set the 'gnu.translator' extended attribute for passive translator @@ -279,7 +280,8 @@ set." (for-each scope-set-translator servers) (mkdir* "dev/vcs/1") (mkdir* "dev/vcs/2") - (rename-file (scope "dev/console") (scope "dev/console-")) + (when (file-exists? (scope "dev/console")) + (rename-file (scope "dev/console") (scope "dev/console-"))) (for-each scope-set-translator devices) (false-if-EEXIST (symlink "/dev/random" (scope "dev/urandom"))) @@ -326,6 +328,10 @@ XXX TODO: use Linux xattr/setxattr to remove (settrans in) /libexec/RUNSYSTEM (let ((hurd/hurd (readlink* (string-append system "/profile/hurd")))) (symlink hurd/hurd "/hurd")) + (unless (file-exists? "/servers/startup") + (format #t "Creating essential device nodes...\n") + (make-hurd-device-nodes)) + (format #t "Setting-up essential translators...\n") (setenv "PATH" (string-append system "/profile/bin")) (set-hurd-device-translators) |