diff options
author | Ludovic Courtès <ludo@gnu.org> | 2014-03-10 23:16:02 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2014-03-10 23:43:31 +0100 |
commit | c9c88118a12b0e22b7369b1dc6b0e2f9db894986 (patch) | |
tree | 9117f528281381bfad9053f8e78644bc3d054188 | |
parent | 58cbbe4b5562ed8be5c7c6fbdf2b2d8384a5dc8a (diff) | |
download | guix-c9c88118a12b0e22b7369b1dc6b0e2f9db894986.tar.gz |
gnu: linux-initrd: Make the pseudo-tty device nodes.
* guix/build/linux-initrd.scm (make-essential-device-nodes): Create /dev/ptmx and /dev/pts. * gnu/system/vm.scm (qemu-image): Umount /fs/dev/pts before /fs.
-rw-r--r-- | gnu/system/vm.scm | 8 | ||||
-rw-r--r-- | guix/build/linux-initrd.scm | 8 |
2 files changed, 15 insertions, 1 deletions
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index b8b0274f1f..b6a777353f 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -383,7 +383,13 @@ such as /etc files." (system* grub "--no-floppy" "--boot-directory" "/fs/boot" "/dev/sda")) - (zero? (system* umount "/fs")) + (begin + (when (file-exists? "/fs/dev/pts") + ;; Unmount devpts so /fs itself can be + ;; unmounted (failing to do that leads to + ;; EBUSY.) + (system* umount "/fs/dev/pts")) + (zero? (system* umount "/fs"))) (reboot)))))))) #:system system #:inputs `(("parted" ,parted) diff --git a/guix/build/linux-initrd.scm b/guix/build/linux-initrd.scm index 80ce679496..9a8ea0ed4f 100644 --- a/guix/build/linux-initrd.scm +++ b/guix/build/linux-initrd.scm @@ -114,6 +114,14 @@ (device-number 4 n)) (loop (+ 1 n))))) + ;; Pseudo ttys. + (mknod (scope "dev/ptmx") 'char-special #o666 + (device-number 5 2)) + + (unless (file-exists? (scope "dev/pts")) + (mkdir (scope "dev/pts"))) + (mount "none" (scope "dev/pts") "devpts") + ;; Rendez-vous point for syslogd. (mknod (scope "dev/log") 'socket #o666 0) (mknod (scope "dev/kmsg") 'char-special #o600 (device-number 1 11)) |