标签: qemu

qemu on Raspberry Pi Arch Linux最新的sd图像

我正在尝试设置一个Arch图像并使用qemu来交叉编译一些东西,然后我将图像加载到Pi上.我认为最简单的方法是使用最新的初始图像,用我需要的任何东西做好准备,然后在完成时将它写入Pi.

我从下载的拱门图像http://downloads.raspberrypi.org/arch_latest,想的Qemu下运行它类似于http://xecdesign.com/qemu-emulating-raspberry-pi-the-easy-way/.

我在他们提供的qemu命令行上尝试了很多变体

qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1" -hda 2013-05-25-wheezy-raspbian.img
Run Code Online (Sandbox Code Playgroud)

用archlinux-hf-2013-07-22.img代替.但这最终导致"内核恐慌 - 没有同步:没有找到init.尝试将init =选项传递给内核"

我确定这意味着我下载的kernel-qemu无法使用Arch映像,但我不确定解决问题的正确方法.

编辑:

当我使用上面的命令行时,即使最新的Raspbian图像内核也会发生恐慌.我想这应该不会让我感到惊讶,因为它很可能是一个旧内核.

所以我想我真正的问题是,我如何使用图像中包含的任何内核,而不是必须构建我自己的内核?

linux qemu raspberry-pi raspbian

7
推荐指数
1
解决办法
6603
查看次数

如何在QEMU中使用单步模式?

我是qemu的新手,我读到它允许单步模式仿真.这很有用,因为我试图在每个周期转储一些物理ram的地址.不幸的是,qemu文档非常糟糕.我知道如何从qemu监视器启用单步操作模式,但我不知道在每一步都放置我想要执行的代码.有没有人有这方面的信息?

processor kvm qemu emulation

7
推荐指数
1
解决办法
3211
查看次数

如何在libvirt中创建瞬态域?

如何使用libvirt创建瞬态域?(使用QEMU/KVM作为后端)

该文档讨论了此链接上的瞬态域和持久域之间的区别:http://wiki.libvirt.org/page/VM_lifecycle#Transient_guest_domains_vs_Persistent_guest_domains

尽管如此,我还没有找到任何关于如何创建一个的具体例子.

我找到的唯一指针是在这封电子邮件中:https://www.redhat.com/archives/libvirt-users/2011-August/msg00057.html,其中维护者建议在XML的描述字段中添加<transient/>标记<disk>.

当我尝试时,我得到了这个令人失望的答案:"libvirtError: unsupported configuration: transient disks not supported yet".

这个功能真的"还不支持",还是我错过了什么?该文档让我觉得应该支持这一点.

任何与C或Python绑定,virsh或virt-manager相关的答案都将受到高度赞赏!

virtualization kvm qemu libvirt

7
推荐指数
1
解决办法
3323
查看次数

Android模拟器上的qemu vnc没有响应键盘和鼠标

我试图通过VNC访问Android模拟器.Android应用程序(如droid-vnc服务器)无法正常运行.所以,我使用了qemu vnc

emulator -avd VNCvd -qemu -vnc :4
    (running at port 5904)
Run Code Online (Sandbox Code Playgroud)

在tightvnc查看器上显示效果很好,但我无法输入任何东西,如触摸和键盘.我还没有通过锁屏.我试过-usbdevice平板电脑的说法没有运气.如何让它完全奏效?任何帮助,将不胜感激 :)

android vnc qemu

7
推荐指数
0
解决办法
498
查看次数

如何用"x/i $ pc"在GDB中反汇编16位x86引导扇区代码?它被视为32位

例如,使用BIOS打印a到屏幕的引导扇区main.asm:

org 0x7c00
bits 16
cli
mov ax, 0x0E61
int 0x10
hlt
times 510 - ($-$$) db 0
dw 0xaa55
Run Code Online (Sandbox Code Playgroud)

然后:

nasm -o main.img main.asm
qemu-system-i386 -hda main.img -S -s &
gdb -ex 'target remote localhost:1234' \
    -ex 'break *0x7c00' \
    -ex 'continue' \
    -ex 'x/3i $pc'
Run Code Online (Sandbox Code Playgroud)

我明白了:

0x7c00:      cli    
0x7c01:      mov    $0x10cd0e61,%eax
0x7c06:      hlt 
Run Code Online (Sandbox Code Playgroud)

所以看起来它mov ax, 0x0E61被解释为32位mov %eax并且将下一条指令int 0x10作为数据.

我怎么能告诉GDB这是16位代码?

也可以看看:

x86 assembly gdb qemu disassembly

7
推荐指数
3
解决办法
3732
查看次数

QEMU没有安装在Ubuntu中

./configure它显示此错误后:

ERROR: pixman >= 0.21.8 not present. Your options:
         (1) Preferred: Install the pixman devel package (any recent
             distro should have packages as Xorg needs pixman too).
         (2) Fetch the pixman submodule, using:
             git submodule update --init pixman
Run Code Online (Sandbox Code Playgroud)

installation ubuntu qemu failed-installation ubuntu-14.04

7
推荐指数
1
解决办法
8933
查看次数

为什么virtio-scsi比我实验中的virtio-blk慢得多(over和ceph rbd image)?

嗨我最近做了一个关于rbd到qemu目标的virtio-scsi实验(用于它的DISCARD/TRIM支持),并将吞吐量和iops与同一台机器上的rbd设置中的virtio-blk进行了比较,在客户端使用fio .连续读写的吞吐量小7倍(42.3MB/s vs 309MB/s),随机读写中的iops小10倍(546 vs 5705).

我所做的是使用OpenStack Juno设置一个虚拟机,它给了我rbd设置的virtio-blk.然后我修改了libvirt configure xml中的相关部分,由此:

<disk type='network' device='disk'>
  <driver name='qemu' type='raw' cache='writeback'/>
  <auth username='cinder'>
    <secret type='ceph' uuid='482b83f9-be95-448e-87cc-9fa602196590'/>
  </auth>
  <source protocol='rbd' name='vms/c504ea8b-18e6-491e-9470-41c60aa50b81_disk'>
    <host name='192.168.20.105' port='6789'/>
  </source>
  <target dev='vda' bus='virtio'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
Run Code Online (Sandbox Code Playgroud)

对此:

<disk type='network' device='disk'>
  <driver name='qemu' type='raw' cache='writeback' discard='unmap'/>
  <auth username='cinder'>
    <secret type='ceph' uuid='482b83f9-be95-448e-87cc-9fa602196590'/>
  </auth>
  <source protocol='rbd' name='vms/c504ea8b-18e6-491e-9470-41c60aa50b81_disk'>
    <host name='192.168.20.105' port='6789'/>
  </source>
  <target dev='vda' bus='scsi'/>
  <controller type='scsi' model='virtio-scsi' index='0'/>
</disk>
Run Code Online (Sandbox Code Playgroud)

软件版本是:

qemu 2.5.1

libvirt 1.2.2

内核 3.18.0-031800-generic#201412071935 SMP Mon Dec …

performance qemu scsi libvirt block-device

7
推荐指数
1
解决办法
6093
查看次数

无法在vfio pci设备的文件描述符上使用pread

所以我和qemu kvm合作了一段时间,现在我需要通过PCI设备.我做了所有必要的程序来完成这项工作:启用iommu,modprobed vfio模块,绑定设备到vfio并检查vfio组确实是创建的等等...但是当我用任何pci设备启动qemu时,我收到错误消息:

vfio:无法读取设备配置空间

我深入研究qemu的代码,看看问题可能是什么,并发现问题出现在设备的pread上.即使偏移量为0,也会发生这种情况,并且对文件描述符执行正常读取时没有问题,因为我更改了代码以进行测试.检查errno因为pread失败的原因给我一个' 非法搜索 '错误消息.

我写了一些代码,看看这是否发生在qemu上下文之外(认为它可能是qemu代码中干扰设备的东西),并且有同样的问题.我也尝试用pread读取一个普通的文件,并且完美地工作......这是我编写的代码来测试它,我把它分解了一下,以便能够指出更相关的部分:

#define BUF_SIZE 4096

int main(){     
    char buf[BUF_SIZE], buf1[BUF_SIZE], buf2[BUF_SIZE];         
    int ret,group_fd, fd, fd2;  
    size_t nbytes = 4096;   
    ssize_t bytes_read;     
    int iommu1, iommu2;

    int container, group, device, i;
    struct vfio_group_status group_status = { .argsz = sizeof(group_status) };
    struct vfio_iommu_type1_info iommu_info = { .argsz = sizeof(iommu_info) };
    struct vfio_iommu_type1_dma_map dma_map = { .argsz = sizeof(dma_map) };
    struct vfio_device_info device_info = { .argsz = sizeof(device_info) };    
    container = open("/dev/vfio/vfio",O_RDWR);        

    if(ioctl(container,VFIO_GET_API_VERSION)!=VFIO_API_VERSION){
        printf("Unknown api version: %m\n");    
    } …
Run Code Online (Sandbox Code Playgroud)

c linux virtualization qemu vfio

7
推荐指数
1
解决办法
399
查看次数

ldd:在 docker 中使用 qemu 时以未知退出代码退出

我正在尝试使用 docker 和 qemu 在我的 x86 主机上构建arm镜像

我使用arm64v8/ubuntu作为基础镜像

我制作了一个简单的 opencv 程序并尝试使用 ldd 命令来查看依赖关系。

然而,ldd总是显示:

ldd:退出,退出代码未知 (132)

如果我保存此图像并将其加载到 Arm 计算机中,ldd 就会起作用。

但是,我的主项目太大(或者我的arm计算机空间太小),无法导入到arm计算机,我想使用ldd来找出该项目真正需要哪些库。

我还尝试 nvcr.io/nvidia/l4t-base:r32.4.4 作为基础图像和 ldd 显示

ldd:退出,退出代码未知 (139)

如果我在 docker 中的 arm 镜像中并且我的主机是 x86,我应该怎么做才能使用 ldd 命令?

我的 dockerfile 是这样的:

FROM arm64v8/ubuntu
ENV TZ=Asia/Taipei
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN apt-get update && apt-get install -y  \ 
    build-essential -y  \
    cmake -y  \
    git -y  \
    libgtk2.0-dev -y  \
    libjpeg-dev -y  \
    libpng-dev -y  \
    libtiff-dev …
Run Code Online (Sandbox Code Playgroud)

qemu ldd docker

7
推荐指数
0
解决办法
1199
查看次数

Android 模拟器 USB 直通无法连接

Android Studio 附带的标准 Android 模拟器是 QEMU CPU 模拟器的衍生版本。QEMU 支持USB 直通。即,您可以将 USB 设备连接到计算机,Android 模拟器应该会拾取该设备,就像它已连接到模拟手机一样。我需要让它工作,以便我可以通过 Android 模拟器调试传输到 USB 设备( Trezor 硬件钱包)。

显然,我们可以使用参数将 QEMU 命令行参数传递给 Android 模拟器-qemu。我拼凑了这个我认为正确的电话:

emulator -avd pixel_2_pie_9_0_-_api_28 -qemu -usb -device usb-host,vendorid=4617,productid=21441

但是,我收到这些错误:

C:\Program Files (x86)\Android\android-sdk\emulator>emulator -avd Pixel_2_pie_9_0_-_api_28 -qemu -usb -device usb-host,vendorid=4617,productid=21441 无法打开 /qemu.conf,错误: 2 Windows Hypervisor Platform 加速器可运行 C:\Program Files (x86)\Android\android-sdk\emulator\qemu\windows-x86_64\qemu-system-x86_64.exe: libusb_kernel_driver_active: -12 [NOT_SUPPORTED] C:\Program Files (x86)\Android\android-sdk\emulator\qemu\windows-x86_64\qemu-system-x86_64.exe: libusb_kernel_driver_active: -12 [不支持] C:\Program Files (x86)\Android\android-sdk\emulator\ qemu\windows-x86_64\qemu-system-x86_64.exe: libusb_kernel_driver_active: -12 [不支持] C:\Program Files (x86)\Android\android-sdk\emulator\qemu\windows-x86_64\qemu-system-x86_64。 exe: libusb_kernel_driver_active: -12 [不支持] C:\Program Files …

windows usb android qemu android-studio

7
推荐指数
0
解决办法
2220
查看次数