From 7c1d8146a770d6b37b35cefc0ad8662f4c07df62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 4 Sep 2013 23:21:37 +0200 Subject: [PATCH] gnu: vm: 'qemu-image' populates /dev on the target root file system. * gnu/system/vm.scm (qemu-image): Use (guix build linux-initrd). Remove 'mknod' calls; use 'make-essential-device-nodes' to populate /dev on the target image. * gnu/packages/linux-initrd.scm (qemu-initrd): When /root/dev exists, don't call 'make-essential-device-nodes'. --- gnu/packages/linux-initrd.scm | 5 +++-- gnu/system/vm.scm | 15 ++++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/gnu/packages/linux-initrd.scm b/gnu/packages/linux-initrd.scm index 4a4e437635..ab8787f02c 100644 --- a/gnu/packages/linux-initrd.scm +++ b/gnu/packages/linux-initrd.scm @@ -284,8 +284,9 @@ the Linux kernel.") (mkdir "/root/xchg") (mkdir-p "/root/nix/store") - (mkdir "/root/dev") - (make-essential-device-nodes #:root "/root/dev") + (unless (file-exists? "/root/dev") + (mkdir "/root/dev") + (make-essential-device-nodes #:root "/root")) ;; Mount the host's store and exchange directory. (mount-qemu-smb-share "/store" "/root/nix/store") diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index 3bc94f4575..596a697738 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -210,7 +210,8 @@ process." `(let () (use-modules (ice-9 rdelim) (srfi srfi-1) - (guix build utils)) + (guix build utils) + (guix build linux-initrd)) (let ((parted (string-append (assoc-ref %build-inputs "parted") "/sbin/parted")) @@ -223,9 +224,7 @@ process." (initrd (string-append (assoc-ref %build-inputs "initrd") "/initrd")) (linux (string-append (assoc-ref %build-inputs "linux") - "/bzImage")) - (makedev (lambda (major minor) - (+ (* major 256) minor)))) + "/bzImage"))) (define (read-reference-graph port) ;; Return a list of store paths from the reference graph at PORT. @@ -265,7 +264,6 @@ process." (assoc-ref %build-inputs "gawk") "/bin")) (display "creating partition table...\n") - (mknod "/dev/vda" 'block-special #o644 (makedev 8 0)) (and (zero? (system* parted "/dev/vda" "mklabel" "msdos" "mkpart" "primary" "ext2" "1MiB" ,(format #f "~aB" @@ -273,7 +271,6 @@ process." (* 5 (expt 2 20)))))) (begin (display "creating ext3 partition...\n") - (mknod "/dev/vda1" 'block-special #o644 (makedev 8 1)) (and (zero? (system* mkfs "-F" "/dev/vda1")) (begin (display "mounting partition...\n") @@ -291,6 +288,9 @@ process." thing))) (things-to-copy)) + ;; Populate /dev. + (make-essential-device-nodes #:root "/fs") + (call-with-output-file "/fs/boot/grub/grub.cfg" (lambda (p) (format p " @@ -335,7 +335,8 @@ menuentry \"Boot-to-Guile! (GNU System technology preview)\" { #:make-disk-image? #t #:disk-image-size disk-image-size #:references-graphs (map input->name+derivation inputs-to-copy) - #:modules '((guix build utils)))) + #:modules '((guix build utils) + (guix build linux-initrd)))) ;;;