[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: |
m . othacehe |
Subject: |
[bug#29409] [PATCH 3/4] build: vm: Adapt qemu command to ARM. |
Date: |
Wed, 6 Dec 2017 13:59:52 +0100 |
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?
(disk-image-size (* 100 (expt 2 20)))
(disk-image-format "qcow2")
(references-graphs '()))
@@ -124,8 +125,10 @@ the #:references-graphs parameter of 'derivation'."
",security_model=none,mount_tag=xchg")
"-kernel" linux
"-initrd" initrd
- "-append" (string-append "console=ttyS0 --load="
- builder)
+ "-append"
+ (if target-arm32?
+ (string-append "console=ttyAMA0 --load=" builder)
+ (string-append "console=ttyS0 --load=" builder))
"-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")
'()))))
(error "qemu failed" qemu))
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index d754ac7..33c65de 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -175,6 +175,10 @@ made available under the /xchg CIFS share."
#:memory-size #$memory-size
#:make-disk-image? #$make-disk-image?
#:single-file-output? #$single-file-output?
+ ;; FIXME: ‘target-arm32?’ may be not operate
+ ;; on the right system/target values. Rewrite
+ ;; using ‘let-system’ when available.
+ #:target-arm32? #$(target-arm32?)
#:disk-image-format #$disk-image-format
#:disk-image-size size
#:references-graphs graphs)))))
--
2.7.4
[bug#29409] [PATCH 2/4] build: vm: Use qemu drive device parameter., m . othacehe, 2017/12/06