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.
This commit is contained in:
Ludovic Courtès 2014-03-10 23:16:02 +01:00
parent 58cbbe4b55
commit c9c88118a1
2 changed files with 15 additions and 1 deletions

View file

@ -383,7 +383,13 @@ (define (graph-from-file file)
(system* grub "--no-floppy" (system* grub "--no-floppy"
"--boot-directory" "/fs/boot" "--boot-directory" "/fs/boot"
"/dev/sda")) "/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)))))))) (reboot))))))))
#:system system #:system system
#:inputs `(("parted" ,parted) #:inputs `(("parted" ,parted)

View file

@ -114,6 +114,14 @@ (define (scope dir)
(device-number 4 n)) (device-number 4 n))
(loop (+ 1 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. ;; Rendez-vous point for syslogd.
(mknod (scope "dev/log") 'socket #o666 0) (mknod (scope "dev/log") 'socket #o666 0)
(mknod (scope "dev/kmsg") 'char-special #o600 (device-number 1 11)) (mknod (scope "dev/kmsg") 'char-special #o600 (device-number 1 11))