Hello, Tobias Geerinckx-Rice <[email protected]> skribis:
> ERROR: In procedure copy-file: > In procedure copy-file: No space left on device > ^MESC[Kcopying 422 store items > boot program > '/gnu/store/lbvrvrlqab4qpw9f907na445kppmknab-linux-vm-loader' > terminated, rebooting > [ 1071.512054] Unregister pv shared memory for cpu 0 > [ 1071.522414] reboot: Restarting system > [ 1071.542285] reboot: machine restart > successfully built > /gnu/store/lbyq5790j5hfq3spbm76i1yw3sj41l8b-disk-image.drv I investigated a bit. I managed to get our code to cause a kernel panic upon failure (patch below). However I fail to turn that guest kernel panic into a different QEMU exit code. I tried to use the “pvpanic” paravirtualized device (the ‘pvpanic.ko’ module in the guest, and “-device pvpanic” on the QEMU command line), but unfortunately that thing is almost undocumented and I can’t get it to turn the panic into a non-zero exit code, nor do I know if it’s possible. Thoughts anyone? The other option would be to create a special file in the 9p mount that’s shared with the host upon success, but that seems a bit hacky. Thanks, Ludo’.
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm index 983c6d81c8..cb29a656b9 100644 --- a/gnu/system/linux-initrd.scm +++ b/gnu/system/linux-initrd.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <[email protected]> +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <[email protected]> ;;; Copyright © 2016 Mark H Weaver <[email protected]> ;;; Copyright © 2016 Jan Nieuwenhuizen <[email protected]> ;;; Copyright © 2017 Mathieu Othacehe <[email protected]> @@ -279,6 +279,7 @@ FILE-SYSTEMS." "isci") ;for SAS controllers like Intel C602 '()) + "pvpanic" ,@virtio-modules)) (define-syntax %base-initrd-modules diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index e561285964..b671c74ab8 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -187,8 +187,9 @@ made available under the /xchg CIFS share." ;; When USER-BUILDER succeeds, reboot (indicating a ;; success), otherwise die, which causes a kernel panic ;; ("Attempted to kill init!"). - #~(when (zero? (system* #$user-builder)) - (reboot)))) + #~(if (zero? (system* #$user-builder)) + (reboot) + (exit 1)))) (let ((initrd (or initrd (base-initrd file-systems
