[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#29409] [PATCH 3/4] build: vm: Adapt qemu command to ARM.
From: |
Ludovic Courtès |
Subject: |
[bug#29409] [PATCH 3/4] build: vm: Adapt qemu command to ARM. |
Date: |
Mon, 11 Dec 2017 17:38:21 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux) |
address@hidden skribis:
> From: Mathieu Othacehe <address@hidden>
>
> * gnu/build/vm.scm (load-in-linux-vm): New argument #:target-arm32.
> Use it to adapt command for qemu-system-arm. This implies to choose a
> machine ("virt"), use the correct console port "ttyAMA0" and disable KVM use
> that is buggy on some ARM boards (Odroid XU4 for example).
> * gnu/system/vm.scm (expression->derivation-in-linux-vm): Pass
> to load-in-linux-vm "#:target-arm32?" argument.
> ---
> gnu/build/vm.scm | 19 ++++++++++++++++---
> gnu/system/vm.scm | 4 ++++
> 2 files changed, 20 insertions(+), 3 deletions(-)
>
> diff --git a/gnu/build/vm.scm b/gnu/build/vm.scm
> index 0b1b9da..0fbba62 100644
> --- a/gnu/build/vm.scm
> +++ b/gnu/build/vm.scm
> @@ -77,6 +77,7 @@
> linux initrd
> make-disk-image?
> single-file-output?
> + target-arm32?
Do we really need this new parameter and could we use the
‘target-arm32?’ procedure that you added directly?
> + (if target-arm32?
> + (string-append "console=ttyAMA0 --load=" builder)
> + (string-append "console=ttyS0 --load=" builder))
Could you add a short comment explaining this?
> "-device" "virtio-blk,drive=myhd"
> (append
> (if make-disk-image?
> @@ -133,10 +136,20 @@ the #:references-graphs parameter of 'derivation'."
> ",format="
> disk-image-format
> ",id=myhd"))
> '())
> + ;; On ARM, a machine has to be specified. Use
> + ;; "virt" machine to avoid hardware limits imposed
> + ;; by other machines.
> + (if target-arm32?
> + '("-M" "virt")
> + '())
> ;; Only enable kvm if we see /dev/kvm exists.
> ;; This allows users without hardware virtualization to
> still
> ;; use these commands.
> - (if (file-exists? "/dev/kvm")
> + ;;
> + ;; KVM support is still buggy on some ARM32 boards. Do not
> + ;; use it even if available.
> + (if (and (file-exists? "/dev/kvm")
> + (not target-arm32?))
> '("-enable-kvm")
> '()))))
For clarity, it might be best to collect all the platform-specific
options separately, like:
(define arch-specific-flags
`(,@(if target-arm32? '("-M" "virt") '())
,@(if (and (file-exists? "/dev/kvm") …) …)
…))
WDYT?
Ludo’.
[bug#29409] [PATCH 2/4] build: vm: Use qemu drive device parameter., m . othacehe, 2017/12/06