vm: Only pass "-enable-kvm" to qemu if /dev/kvm is present.

Fixes <http://bugs.gnu.org/22633>.

* gnu/build/vm.scm (load-in-linux-vm): Only pass "-enable-kvm" flag to qemu
  if "/dev/kvm" is present.
* gnu/system/vm.scm (common-kvm-options): Same as above.
This commit is contained in:
Christopher Allan Webber 2016-02-22 11:23:14 -08:00
parent 8b16a5e199
commit 944d2b17b5
2 changed files with 23 additions and 6 deletions

View File

@ -1,5 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;;
;;; This file is part of GNU Guix.
;;;
@ -97,7 +99,7 @@ the #:references-graphs parameter of 'derivation'."
(_ #f))
(unless (zero?
(apply system* qemu "-enable-kvm" "-nographic" "-no-reboot"
(apply system* qemu "-nographic" "-no-reboot"
"-m" (number->string memory-size)
"-net" "nic,model=virtio"
"-virtfs"
@ -111,10 +113,17 @@ the #:references-graphs parameter of 'derivation'."
"-initrd" initrd
"-append" (string-append "console=ttyS0 --load="
builder)
(if make-disk-image?
`("-drive" ,(string-append "file=" image-file
",if=virtio"))
'())))
(append
(if make-disk-image?
`("-drive" ,(string-append "file=" image-file
",if=virtio"))
'())
;; 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")
'("-enable-kvm")
'()))))
(error "qemu failed" qemu))
(if make-disk-image?

View File

@ -1,5 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;;
;;; This file is part of GNU Guix.
;;;
@ -457,7 +459,13 @@ with '-virtfs' options for the host file systems listed in SHARED-FS."
"\" "))
#~(string-append
" -enable-kvm -no-reboot -net nic,model=virtio \
;; 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")
" -enable-kvm "
"")
" -no-reboot -net nic,model=virtio \
" #$@(map virtfs-option shared-fs) " \
-net user \
-serial stdio -vga std \