我想要一个软件环境,我可以使用特定资源在硬件上测试我的软件速度.例如,当我的主机硬件是带有12GB内存的3GHz四核amd64时,这个程序在带有24 Mb RAM的800MHz x86上运行的速度有多快?像qemu这样的仿真器可以像"底层硬件"一样"快速"运行.我想让它运行得慢一些.有没有办法做到这一点?
我想修改qemu源代码以从Android模拟器获取一些较低级别的信息.
我在哪里可以获得Android模拟器源代码?(我假设源代码也可能包含qemu源代码)
提前致谢
在QEMU中,操作系统可以在软件模拟CPU之上运行.如何通过软件模拟CPU?我想知道细节.
如果CPU是由软件模拟的,寄存器是用主机系统内存模拟的吗?说有ARM汇编代码
LDRB r0,[r1],#1
如何在x86环境中模拟?我的猜测是仿真软件为r0(4byte),r1(4byte)保留内存映射空间,然后更新相应内存位置的寄存器值...我错了吗?我想详细说明......
先感谢您
我有一台带有Intel CPU的Windows机器(启动菜单上启用了VMX).我正在使用VirtualBox运行Ubuntu Guest.我正在运行qemu以运行另一个客户操作系统,使用kvm(-enable-kvm选项).
尝试插入kvm-intel模块时出现以下错误:
FATAL: Error inserting kvm_intel (/lib/modules/2.6.20-ARCH/kernel/drivers/kvm/kvm-intel.ko): Operation not supported
Run Code Online (Sandbox Code Playgroud)
我在客户操作系统中检查了vmx标志,我也没看到
$ grep vmx /proc/cpuinfo
$
Run Code Online (Sandbox Code Playgroud)
无论如何在客户端Ubuntu操作系统中启用kvm支持,以便我可以在Ubuntu客户机上运行支持kvm的qemu?
我试图在Docker容器中运行emulator64-arm,但它报告:
$ emulator64-arm -avd t2 -no-window -no-accel -gpu off
qemu: could not open disk image /home/testuser/.android/avd/t2.avd/sdcard.img: Interrupted system cal
Run Code Online (Sandbox Code Playgroud)
我认为qemu-aarch64应该是一个纯粹的软件模拟器,没有任何花哨的东西,但我错了.我也尝试启动容器,--privileged但仍然没有运气.
在我的情况下,我们需要为我们的Android APK运行一些冒烟测试,速度并不重要,但Android-X86不是一个选项.
已经提到,当在 M1 Mac 上使用 x86_64 Docker 镜像时,当没有可用的 ARM64 镜像时,该容器将在qemu仿真下启动以实现兼容性。(以性能为代价。)
很多时候,当我运行一组容器(以及针对该批次的集成测试)时,我会看到qemu-system-aarch64一些核心。
我的问题:对于给定的运行容器列表(即docker ps),我如何确定哪些是本机运行的,哪些是被模拟的?
我正在使用我的gentoo作为主机操作系统用于vv passthrough用于在Windows上播放,但我有声音问题,质量不好,我听到声音中的噼啪声.我在主机操作系统上使用pulseaudio(带--system模式),并尝试了不同的采样率,但没有帮助.我对vm的命令:
qemu-system-x86_64 \
-vga none \
-enable-kvm -m 10000 -cpu host -smp 8,cores=4,threads=2,sockets=1 \
-device ioh3420,bus=pci.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 \
-device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on \
-net nic,macaddr=50:E5:49:57:74:E3 -net bridge,vlan=0 \
-soundhw hda \
-boot d \
-hda /dev/sdb \
-usb -usbdevice host:09da:000a
Run Code Online (Sandbox Code Playgroud)
我尝试设置PULSE_LATENCY_MSEC,QEMU_PA_SAMPLES,但没有帮助.我还检查了客户虚拟机上的live cd,以确定它是否不是Windows问题,但结果是一样的.我也试过设置-soundhw ac97,但是在Windows 10上没有官方支持ac97,我有一些声音延迟,但干扰较少.
我的音频是:
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31) (snd_hda_intel on msi z170a m7),
Run Code Online (Sandbox Code Playgroud)
以及qemu和pulseaudio的版本:
QEMU emulator version 2.3.0, Copyright (c) 2003-2008 Fabrice Bellard
pulseaudio 5.0
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮忙吗?
尝试按照https://azeria-labs.com/emulate-raspberry-pi-with-qemu/设置实验室。以下命令出现错误
qemu-system-arm -kernel '/root/Documents/Raspbian qemu/qemu-rpi-kernel-master/kernel-qemu-4.4.34-jessie' -cpu arm1176 -m 256 -M versatilepb -serial stdio -append "root=/dev/sda2 rootfstype=ext4 rw" -hda '/root/Documents/Raspbian qemu/2017-04-10-raspbian-jessie.img' -redir tcp:5022::22 -no-reboot
qemu-system-arm: -redir: invalid option
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用套接字网络和名为 Scapy 的 Python 库的组合在我的主机中创建一个接口的桥接器,就像 Virtualbox 和 VMWare 的桥接适配器一样,在 Windows 操作系统或Unix 操作系统上的 libpcap 幕后)。这是我创建的桥接脚本,用于将socketQEMU的网络后端创建的 VLAN 连接到外部接口:
import argparse
import scapy
import threading
import socket
import struct
import scapy.sendrecv
import scapy.packet
import scapy.config
import scapy.layers.l2
MAX_PACKET_SIZE = 65535
send_lock = threading.Lock()
qemu_senders = set()
iface_senders = set()
def qemu_in_iface_out_traffic_thread_func(iface, mcast_addr, mcast_port, local_addr):
global MAX_PACKET_SIZE
global send_lock
global qemu_senders
global iface_senders
# Create the multicast listen socket.
listener_addr = (local_addr, mcast_port)
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(listener_addr)
mcast_group …Run Code Online (Sandbox Code Playgroud) 我碰巧发现在我的 macos(x86) 上可以为 arm 图像 arm64v8/alpine 运行 docker 容器,但有警告,见下文
docker run -it arm64v8/alpine uname -a
警告:请求的映像平台 (linux/arm64) 与检测到的主机平台 (linux/amd64) 不匹配,并且未请求特定平台 Linux d5509c57dd24 4.19.121-linuxkit #1 SMP Tue Dec 1 17:50:32 UTC 2020 aarch64 Linux
而且我很确定该图像不是多架构图像(docker manifest inspect --verbose arm64v8/alpine)。为什么 x86 可以运行 arm 容器?
提前致谢
qemu ×10
emulation ×4
docker ×3
android ×2
arm ×2
kvm ×2
linux ×2
gentoo ×1
lan ×1
linux-kernel ×1
macos ×1
networking ×1
performance ×1
pulseaudio ×1
python ×1
raspberry-pi ×1
virtualbox ×1