标签: qemu

基于qemu的低级调试

我将在ARM体系结构上测试一些低级代码.通常实验板上的实验非常复杂,所以我在想QEMU.

我想得到的是某种调试信息,如printfs或gdb.我知道这对于linux很简单,因为它实现了QEMU Integrator的设备驱动程序和gdb功能,但我不使用Linux.我还怀疑从Linux内核源代码中提取这种功能会很复杂.

我正在从一些已经实现其中一个功能的简单操作系统中搜索.你有什么建议吗?

embedded debugging gdb arm qemu

13
推荐指数
1
解决办法
8549
查看次数

在QEMU中,是否可以拦截Linux Guest OS发送/接收的数据包?

我们正在做一个涉及从虚拟机管理程序层(即QEMU)监控来宾操作系统(例如Linux)的小项目.我们要监控的一件事是进出客户操作系统的网络流量.是否可以在不修改Guest OS的情况下这样做?

一种方法是拦截在创建套接字时创建的相关系统调用,并在执行指令时从相关寄存器中获取值.但我们不太确定它是否容易,或者它是否是正确的方法.

sockets linux virtualization qemu system-calls

13
推荐指数
3
解决办法
1628
查看次数

在新的sdk工具v12中安装x86映像

我已经升级到android sdk工具12.作为发布说明谷歌说:AVD管理器和模拟器现在可以使用为ARM v7和x86 CPU编译的系统映像.

有没有人试图运行x86图像?有没有3.0+图像?

谢谢,

android qemu android-virtual-device android-emulator android-sdk-tools

13
推荐指数
3
解决办法
8727
查看次数

在qemu中使用gdb调试引导加载程序

Freedos引导程序似乎存在问题.(在某些情况下,似乎bootcode无法找到内核.)

所以我试图用gdb调试qemu中的bootloader.按照几个维基上的说明和免费提供的在线课程资料,我像这样运行qemu

qemu-system-i386 -fda fdboot.img -boot a -s -S
Run Code Online (Sandbox Code Playgroud)

然后像这样连接gdb

$ gdb
(gdb) target remote localhost:1234
Run Code Online (Sandbox Code Playgroud)

我可以逐步完成前面的10 - 12条指令si,我假设它是SeaBIOS.

但过去,当我尝试进入引导加载程序代码时,它会继续执行而不会中断,一直到FreeDos菜单提示符.这完全跳过了我想在执行时逐步检查的引导加载程序代码.

我需要做什么才能通过引导加载程序?

[如果您想尝试自己,可以从项目网站下载freedos软盘映像.]

debugging assembly gdb qemu bootloader

12
推荐指数
1
解决办法
7603
查看次数

使用Java进行Qemu用户仿真

我正在使用QEMU模拟器来跟踪用户程序的执行.我们添加了一个辅助函数,它打印所有执行指令的IP.我们已经测试了这个工具的工作原理,用于两个素数程序的变体 - 一个用C语言,另一个用Java语言.我们为每个程序尝试了4个不同的输入参数,期望在每种​​情况下执行不同数量的指令.素数程序的C版遵循预期的线性趋势,即线数随着输入的增加而增加.但是,Java程序每次都提供完全相同数量的指令.

我觉得Java执行跟踪只捕获JVM代码而不是正在运行的实际代码.

JVM修改的代码在QEMU上运行在哪里?QEMU是否有任何特殊方式捕获自修改代码的执行?

java kvm qemu

12
推荐指数
1
解决办法
966
查看次数

"xx-softmmu"和"xx-linux-user"之间有什么区别和关系?

qemu从源代码构建时,我发现对于每个CPU架构,目标列表有2个选项:xx-softmmuxx-linux-user.例如:

x86_64-softmmu
x86_64-linux-user
Run Code Online (Sandbox Code Playgroud)

我无法搜索两个选项之间的差异.任何人都可以介绍它们之间的区别和关系吗?

qemu

12
推荐指数
1
解决办法
3593
查看次数

如何使用GCC生成最小的BIOS hello world启动扇区,它可以在真实硬件上使用USB记忆棒?

我设法生成一个与QEMU 2.0.0 Ubuntu 14.04一起使用的最小引导扇区:

.code16
.global _start
_start:
    cli
    mov $msg, %si
    mov $0x0e, %ah
loop:
    lodsb
    or %al, %al
    jz halt
    int $0x10
    jmp loop
halt:
    hlt
msg:
    .asciz "hello world"
.org 510
.word 0xaa55
Run Code Online (Sandbox Code Playgroud)

编译:

as -o main.o main.S
ld --oformat binary -o main.img -Ttext 0x7C00 main.o
Run Code Online (Sandbox Code Playgroud)

这个例子可以在这个回购中找到:https://github.com/cirosantilli/x86-bare-metal-examples/tree/2b79ac21df801fbf4619d009411be6b9cd10e6e0/no-ld-script

一旦:

qemu -hda main.img
Run Code Online (Sandbox Code Playgroud)

hello world按预期在模拟器屏幕上显示.

但是,如果我尝试刻录到USB:

sudo dd if=main.img of=/dev/sdb
Run Code Online (Sandbox Code Playgroud)

然后将USB插入ThinkPad T400或T430,点击F12,然后选择我观察到的USB:

  • 一些启动消息很快显示出来
  • 然后屏幕变为空白,顶部只有一个下划线光标

我也用Ubuntu 14.04映像测试了相同的USB,它启动正常,因此USB工作正常.

我应该如何更改此示例,以便它将在硬件上启动并显示hello world消息?

Ubuntu图像和我创建的图像有什么区别?

这记录在哪里?

我已将sudo dmidecodeT400 …

x86 assembly qemu gnu-assembler bare-metal

12
推荐指数
1
解决办法
2402
查看次数

qemu:无法加载 PC BIOS 'bios-256k.bin'

我试图将 QEMU 与我正在构建的内核 ISO 一起使用,但我无法运行测试。

我正在使用 Windows 10 64 位,pc-bios如果重要的话,我已将该文件夹添加到 PATH。到目前为止,我已经尝试了以下命令: Windows 终端屏幕截图

virtualization qemu virtual-machine windows-10

12
推荐指数
1
解决办法
4991
查看次数

如何在KVM(libvirt/virsh)上设置启动顺序?

使用libvirt/virsh时,如何在KVM上设置启动顺序?(通过配置或命令)

virtualization kvm qemu libvirt

11
推荐指数
1
解决办法
3万
查看次数

将qcows2快照和后备文件转换为独立映像文件

我有一个qemu qcow2磁盘快照dev.img,它基于一个支持文件dev.bak.如何将两者合并为独立版devplus.img,同时保持dev.bak原样?

qemu

11
推荐指数
2
解决办法
5974
查看次数