diff options
| -rwxr-xr-x | scripts/runqemu | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/scripts/runqemu b/scripts/runqemu index 39bed038d5..5752ecda73 100755 --- a/scripts/runqemu +++ b/scripts/runqemu | |||
| @@ -491,12 +491,13 @@ class BaseConfig(object): | |||
| 491 | yocto_paravirt_kvm_wiki = "https://wiki.yoctoproject.org/wiki/Running_an_x86_Yocto_Linux_image_under_QEMU_KVM" | 491 | yocto_paravirt_kvm_wiki = "https://wiki.yoctoproject.org/wiki/Running_an_x86_Yocto_Linux_image_under_QEMU_KVM" |
| 492 | dev_kvm = '/dev/kvm' | 492 | dev_kvm = '/dev/kvm' |
| 493 | dev_vhost = '/dev/vhost-net' | 493 | dev_vhost = '/dev/vhost-net' |
| 494 | with open('/proc/cpuinfo', 'r') as f: | 494 | if self.qemu_system.endswith(('i386', 'x86_64')): |
| 495 | kvm_cap = re.search('vmx|svm', "".join(f.readlines())) | 495 | with open('/proc/cpuinfo', 'r') as f: |
| 496 | if not kvm_cap: | 496 | kvm_cap = re.search('vmx|svm', "".join(f.readlines())) |
| 497 | logger.error("You are trying to enable KVM on a cpu without VT support.") | 497 | if not kvm_cap: |
| 498 | logger.error("Remove kvm from the command-line, or refer:") | 498 | logger.error("You are trying to enable KVM on a cpu without VT support.") |
| 499 | raise RunQemuError(yocto_kvm_wiki) | 499 | logger.error("Remove kvm from the command-line, or refer:") |
| 500 | raise RunQemuError(yocto_kvm_wiki) | ||
| 500 | 501 | ||
| 501 | if not os.path.exists(dev_kvm): | 502 | if not os.path.exists(dev_kvm): |
| 502 | logger.error("Missing KVM device. Have you inserted kvm modules?") | 503 | logger.error("Missing KVM device. Have you inserted kvm modules?") |
| @@ -703,6 +704,7 @@ class BaseConfig(object): | |||
| 703 | else: | 704 | else: |
| 704 | os.putenv('QEMU_AUDIO_DRV', 'none') | 705 | os.putenv('QEMU_AUDIO_DRV', 'none') |
| 705 | 706 | ||
| 707 | self.check_qemu_system() | ||
| 706 | self.check_kvm() | 708 | self.check_kvm() |
| 707 | self.check_fstype() | 709 | self.check_fstype() |
| 708 | self.check_rootfs() | 710 | self.check_rootfs() |
| @@ -1128,21 +1130,23 @@ class BaseConfig(object): | |||
| 1128 | 1130 | ||
| 1129 | return 'qemu-system-%s' % qbsys | 1131 | return 'qemu-system-%s' % qbsys |
| 1130 | 1132 | ||
| 1131 | def setup_final(self): | 1133 | def check_qemu_system(self): |
| 1132 | qemu_system = self.get('QB_SYSTEM_NAME') | 1134 | qemu_system = self.get('QB_SYSTEM_NAME') |
| 1133 | if not qemu_system: | 1135 | if not qemu_system: |
| 1134 | qemu_system = self.guess_qb_system() | 1136 | qemu_system = self.guess_qb_system() |
| 1135 | if not qemu_system: | 1137 | if not qemu_system: |
| 1136 | raise RunQemuError("Failed to boot, QB_SYSTEM_NAME is NULL!") | 1138 | raise RunQemuError("Failed to boot, QB_SYSTEM_NAME is NULL!") |
| 1139 | self.qemu_system = qemu_system | ||
| 1137 | 1140 | ||
| 1138 | qemu_bin = os.path.join(self.bindir_native, qemu_system) | 1141 | def setup_final(self): |
| 1142 | qemu_bin = os.path.join(self.bindir_native, self.qemu_system) | ||
| 1139 | 1143 | ||
| 1140 | # It is possible to have qemu-native in ASSUME_PROVIDED, and it won't | 1144 | # It is possible to have qemu-native in ASSUME_PROVIDED, and it won't |
| 1141 | # find QEMU in sysroot, it needs to use host's qemu. | 1145 | # find QEMU in sysroot, it needs to use host's qemu. |
| 1142 | if not os.path.exists(qemu_bin): | 1146 | if not os.path.exists(qemu_bin): |
| 1143 | logger.info("QEMU binary not found in %s, trying host's QEMU" % qemu_bin) | 1147 | logger.info("QEMU binary not found in %s, trying host's QEMU" % qemu_bin) |
| 1144 | for path in (os.environ['PATH'] or '').split(':'): | 1148 | for path in (os.environ['PATH'] or '').split(':'): |
| 1145 | qemu_bin_tmp = os.path.join(path, qemu_system) | 1149 | qemu_bin_tmp = os.path.join(path, self.qemu_system) |
| 1146 | logger.info("Trying: %s" % qemu_bin_tmp) | 1150 | logger.info("Trying: %s" % qemu_bin_tmp) |
| 1147 | if os.path.exists(qemu_bin_tmp): | 1151 | if os.path.exists(qemu_bin_tmp): |
| 1148 | qemu_bin = qemu_bin_tmp | 1152 | qemu_bin = qemu_bin_tmp |
