From 61b94b8c32e23d83f805ad349060c56b165ea401 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 7 Jan 2018 15:06:36 +0100 Subject: vm: 'vm-image' images refer to the root file system by UUID. This avoids the hard-coded "/dev/sda1", which only made sense when the image is run with "qemu-system-x86_64 -hda", not when it's passed to Xen, etc. Reported by Andreas Enge . * gnu/system/vm.scm (system-qemu-image): Define 'root-uuid', use it as the 'device' field for "/", and pass it to 'qemu-image'. --- gnu/system/vm.scm | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'gnu/system/vm.scm') diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index 53629daa90..496f2ac4e1 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès ;;; Copyright © 2016 Christopher Allan Webber ;;; Copyright © 2016, 2017 Leo Famulari ;;; Copyright © 2017 Mathieu Othacehe @@ -503,6 +503,14 @@ of the GNU system as described by OS." (string-prefix? "/dev/" source)))) (operating-system-file-systems os))) + (define root-uuid + ;; UUID of the root file system. + (operating-system-uuid os + (if (string=? file-system-type "iso9660") + 'iso9660 + 'dce))) + + (let ((os (operating-system (inherit os) ;; Use an initrd with the whole QEMU shebang. (initrd (lambda (file-systems . rest) @@ -511,10 +519,13 @@ of the GNU system as described by OS." #:virtio? #t rest))) - ;; Force our own root file system. + ;; Force our own root file system. Refer to it by UUID so that + ;; it works regardless of how the image is used ("qemu -hda", + ;; Xen, etc.). (file-systems (cons (file-system (mount-point "/") - (device "/dev/sda1") + (device root-uuid) + (title 'uuid) (type file-system-type)) file-systems-to-keep))))) (mlet* %store-monad @@ -526,6 +537,7 @@ of the GNU system as described by OS." (operating-system-bootloader os)) #:disk-image-size disk-image-size #:file-system-type file-system-type + #:file-system-uuid root-uuid #:inputs `(("system" ,os-drv) ("bootcfg" ,bootcfg)) #:copy-inputs? #t)))) -- cgit v1.2.3