标签: qemu

如何在 qemu 上安装 Apple iOS

Qemu 支持 ARM(以及许多其他平台)。那么,在 qemu 上安装 Apple iOS 需要什么(除了安装介质之外)?有没有办法创建适合 Qemu 的 iOS 镜像?

更新:

苹果 A4 = Cortex-A8 + PowerVR SGX535
苹果 A5 = Cortex-A9 MPCore + PowerVR SGX543MP2

两个 Cortex 均使用 Qemu 支持的 ARM v7 指令集。问题是:

  • iOS 不支持任何可以由 Qemu 模拟的显卡
  • Qemu 无法模拟 PowerVR GPU。

qemu emulation device-emulation ios

6
推荐指数
1
解决办法
2万
查看次数

如何在没有 TCG 和 KVM 的情况下运行 QEMU

我试图在 QEMU 虚拟机运行时关闭虚拟核心。

为此,我需要使用qemu_cpu_kick()cpus.c 中的函数:

void qemu_cpu_kick(CPUState *cpu)
{
    qemu_cond_broadcast(cpu->halt_cond);
    if (!tcg_enabled() && !cpu->thread_kicked) {
            qemu_cpu_kick_thread(cpu);
            cpu->thread_kicked = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

它运行良好 - 仅当我启用 KVM 时。但是,我需要禁用 KVM,一旦禁用 KVM,该tcg_enabled()函数就会返回 true,并且 cpu 不会关闭。

可以禁用TCG吗?

我没有找到任何关于 TCG 的旋钮;--disable-tcg以及其他试验都不起作用。我尝试使用 重新配置我的编译--disable-tcg-interpreter,但仍然没有任何变化。

那么,如何禁用 TCG 呢?或者,有没有更好的方法来关闭虚拟CPU?

谢谢!

kvm qemu

6
推荐指数
1
解决办法
4028
查看次数

Homebrew,-bash:qemu:找不到命令 OSX El Capitan

我正在尝试在我的 Mac 上安装 qemu。我用的是Homebrew,看起来已经安装成功了。

\n\n
==> Installing qemu\n==> Downloading https://homebrew.bintray.com/bottles/qemu-2.6.0.el_capitan.bottle.tar.gz\n######################################################################## 100.0%\n==> Pouring qemu-2.6.0.el_capitan.bottle.tar.gz\n  /usr/local/Cellar/qemu/2.6.0: 123 files, 127.4M\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是当我尝试使用它时,我有:

\n\n
-bash: qemu: command not found\n
Run Code Online (Sandbox Code Playgroud)\n\n

的输出ls /usr/local/Cellar/qemu/2.6.0/bin是:

\n\n
| \xe2\x88\xae -> ls /usr/local/Cellar/qemu/2.6.0/bin\nivshmem-client          qemu-system-aarch64     qemu-system-lm32        qemu-system-mips64      qemu-system-ppc         qemu-system-sh4eb       qemu-system-x86_64\nivshmem-server          qemu-system-alpha       qemu-system-m68k        qemu-system-mips64el        qemu-system-ppc64       qemu-system-sparc       qemu-system-xtensa\nqemu-img            qemu-system-arm         qemu-system-microblaze      qemu-system-mipsel      qemu-system-ppcemb      qemu-system-sparc64     qemu-system-xtensaeb\nqemu-io             qemu-system-cris        qemu-system-microblazeel    qemu-system-moxie       qemu-system-s390x       qemu-system-tricore\nqemu-nbd            qemu-system-i386        qemu-system-mips        qemu-system-or32        qemu-system-sh4         qemu-system-unicore32\n
Run Code Online (Sandbox Code Playgroud)\n\n

我现在的问题是 qemu 文件丢失。我仍然想知道为什么以及如何解决它

\n\n

先感谢您。

\n

bash terminal homebrew qemu path

6
推荐指数
1
解决办法
9916
查看次数

将软件包添加到 yocto 主机 sdk

我正在尝试使用 Yocto 的 sdk 工具交叉编译 Yocto qemu 程序。设置 sdk 并获取它后,尝试交叉编译程序失败,因此:

*** Unable to find the ncurses libraries or the
*** required header files.
*** 'make menuconfig' requires the ncurses libraries.
*** 
*** Install ncurses (ncurses-devel) and try again.
*** 
Run Code Online (Sandbox Code Playgroud)

因此,我将其添加ncursesIMAGE_INSTALL图像配方中的列表中,就像我安装了 dropbear 等其他软件包一样,并确认meta提供这些软件包的层已包含在bblayers.conf文件中。然后

TOOLCHAIN_HOST_TASK += "nativesdk-ncurses nativesdk-ncurses-dev"
Run Code Online (Sandbox Code Playgroud)

还被添加到图像的配方中,以告诉 bitbake 为主机的 sdk 提供对 ncurses 的访问权限。我尝试添加几个变体nativesdk-ncurses-devel,以更接近地匹配错误所要求的内容,但图像无法用它来构建。之后,重新构建了镜像和sdk并重新获取了源代码,但在尝试交叉编译程序时,它仍然要求Install ncurses (ncurses-devel) and try again.

所以我的问题是:

ncurses如何正确添加到Yocto的主机sdk环境中?我缺少一个步骤吗?所需的 ncurses 文件与层中找到的文件不一样吗meta

任何帮助将不胜感激。

-补丁

sdk qemu ncurses bitbake yocto

6
推荐指数
1
解决办法
8447
查看次数

为什么 BIOS 需要在第二条指令中将(看似)随机地址中的值与零进行比较?

我试图通过深入了解操作系统的低级细节来学习它。我现在上的课程是MIT 6.828 操作系统工程。实验室要求学生进入 BIOS 以获取一些说明。BIOS 的前三个汇编指令如下:

0xffff0:    ljmp    $0xf000,$0xe05b
0xfe05b:    cmpl    $0x0,%cs:0x6c48
0xfe062:    jne     0xfd2e1
Run Code Online (Sandbox Code Playgroud)

我想不通的是第二个:cmpl $0x0,%cs:0x6c48. 它有什么作用?为什么需要这个条件才能jmp到特定的地方?我在网上搜索了一段时间,但仍然找不到解释。更棘手的是,我发现不同的人会得到不同的地址来进行比较,比如0x6ac80x65a4或者0x6c48这里。

x86 assembly qemu bios osdev

6
推荐指数
1
解决办法
187
查看次数

Mac OS X 中的 QEMU .qcow2 mmu_gva_to_gpa 崩溃

我正在尝试.qcow2在 Mac OS X 中运行我的映像qemu-system-x86_64,它在我的 Debian 机器上运行得非常好,但由于内存问题,我需要将其移动到 Mac OS X Catalina 机器上。我安装qemu-system-x86_64通过brew,然后当我启动我的机器时

qemu-system-x86_64 \
>   -m 8G \
>   -vga virtio \
>   -show-cursor \
>   -usb \
>   -device usb-tablet \
>   -enable-kvm \
>   -drive file=/Volumes/enricoWD/transfer_home_laptop/dxcator_home_backup_feb2020/diag-stage.qcow2,if=virtio \
>   -accel hvf \
>   -cpu host
Run Code Online (Sandbox Code Playgroud)

它启动,但 4 秒后崩溃:

vmx_write_mem:mmu_gva_to_gpa ffff9ac27b23fcdc 失败

中止陷阱:6

我看到其他用户在这里遇到了这个问题,但没有提供答案。

如果有人有线索或建议在 Mac OS X 上运行我的 .qcow2 机器的其他方法,那就太棒了!预先非常感谢!

macos kvm qemu

6
推荐指数
2
解决办法
2512
查看次数

是否可以在 x86_64 主机上运行 ARM64 vagrant 实例

我正在尝试在 x86_64 主机上运行 ARM64 Ubuntu VM 以用于开发目的。我在他们的网站上搜索了 vagrant box 只找到了这个:

https://app.vagrantup.com/boxes/search?provider=libvirt&q=arm64&sort=downloads&utf8=%E2%9C%93

但是,我未能启动该 VM(使用vagrant up --provider libvirt),因为它似乎使用qemu-system-x86_64用作模拟器而不是qemu-system-aarch64. 我用的vagrantfile?

Vagrant.configure("2") do |config|
  config.vm.box = "MalibuKoKo/ubuntu-18.04.3-server-arm64-raspberry-4"
  config.vm.define "ubuntu18.04-aarch64"
  config.vm.provider :libvirt do |libvirt|
    libvirt.machine_arch = "aarch64"
    libvirt.uri = 'qemu:///system'
    libvirt.emulator_path = "/usr/bin/qemu-system-aarch64"
  end
end
Run Code Online (Sandbox Code Playgroud)

任何建议如何提出它?谢谢

linux qemu libvirt vagrant vagrantfile

6
推荐指数
0
解决办法
631
查看次数

无法在 Windows 10 上的 WSL2(适用于 Linux 2 的 Windows 子系统)内实例化 qemu-kvm VM

我目前正在 Windows 10 Fast Ring 版本(Build 20161)上尝试适用于 Linux v2 的 Windows 子系统。更具体地说,我尝试使用嵌套虚拟化运行 qemu-kvm 虚拟机,但每次使用 virt-manager 创建新虚拟机的尝试都以失败告终。

\n

我在 WSL2 实例中使用 Ubuntu 18.04,带有自定义构建的内核(其中包括与虚拟化相关的所有内容 - 请参阅本指南: https: //boxofcables.dev/accelerated-kvm-guests-on-wsl-2/)和“在我的 WSL 配置文件中,“nestedVirtualization”设置为“true”。更重要的是,“sudo kvm-ok”在 Ubuntu 实例中运行时会返回积极的结果。

\n

我确实在 Ubuntu WSL 中安装了 DBUS,并且该服务正在运行,所以我相信这不是问题的根源。我正在使用 VcXsrv 来显示 X11 窗口。

\n

以下是我每次尝试时遇到的错误:

\n

Libvirtd.log

\n
2020-07-07 03:33:24.507+0000: 1273: info : libvirt version: 4.0.0, package: 1ubuntu8.17 (Marc Deslauriers <marc.deslauriers@ubuntu.com> Wed, 06 May 2020 14:18:23 -0400)\n2020-07-07 03:33:24.507+0000: 1273: info : hostname: LAPTOP-DRAGOS\n2020-07-07 03:33:24.507+0000: 1273: error : udevGetDMIData:1818 : internal error: …
Run Code Online (Sandbox Code Playgroud)

kvm qemu libvirt windows-subsystem-for-linux ubuntu-18.04

6
推荐指数
1
解决办法
2万
查看次数

在linux下构建edk2

我开始用 edk2 编写一个小而简单的应用程序。

因此,要编写一个简单的 edk2 UEFI 应用程序,我是这样开始的:

#git 克隆https://github.com/tianocore/edk2.git

#. edksetup.sh BaseTools

Loading previous configuration from /media/ledoux/Data/osdev/devos/edk2/edk2/Conf/BuildEnv.sh
WORKSPACE: /media/ledoux/Data/osdev/devos/edk2/edk2
EDK_TOOLS_PATH: /media/ledoux/Data/osdev/devos/edk2/edk2/BaseTools
CONF_PATH: /media/ledoux/Data/osdev/devos/edk2/edk2/Conf

#vi Conf/target.txt
Run Code Online (Sandbox Code Playgroud)

(在那里,我输入了:TARGET_ARCH = IA32 X64 TOOL_CHAIN_TAG = VS2017)

# BUILD -a X64

Build environment: Linux-5.7.0-kali1-amd64-x86_64-with-glibc2.29
Build start time: 08:32:11, Sep.03 2020

WORKSPACE        = /media/ledoux/Data/osdev/devos/edk2/edk2
EDK_TOOLS_PATH   = /media/ledoux/Data/osdev/devos/edk2/edk2/BaseTools
CONF_PATH        = /media/ledoux/Data/osdev/devos/edk2/edk2/Conf
PYTHON_COMMAND   = /usr/bin/python3.8


Processing meta-data 
Architecture(s)  = X64
Build target     = DEBUG
Toolchain        = VS2017

Active Platform          = /media/ledoux/Data/osdev/devos/edk2/edk2/EmulatorPkg/EmulatorPkg.dsc
.................. 

- Failed -
Build end …
Run Code Online (Sandbox Code Playgroud)

qemu uefi edk2

6
推荐指数
2
解决办法
1万
查看次数

无法在 qemu 或 gem5 中打开 /lib/ld-linux-aarch64.so.1

我正在尝试在我的台式计算机上模拟一个简单的 Hello world ARM 示例。我尝试了 qemu 和 gem5。两者都给出了类似的错误。他们找不到ld-linux-aarch64.so.1。其实我也找不到。如果我能找到它,我将用 -L (在 qemu 中)或 --redirects (在 gem5 中)显示它。

该文件是:

armhello: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=23a21b7a545ac510923b6b3713d2bbee092f820a, for GNU/Linux 3.7.0, not stripped
Run Code Online (Sandbox Code Playgroud)

它是用以下内容编译的:aarch64-linux-gnu-gcc

我正在尝试在 qemu 中运行它:

qemu-aarch64 armhello
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

/lib/ld-linux-aarch64.so.1: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我尝试在 gem5 中运行它:(simpleARM.py 指向我的可执行文件(名为armhello))

build/ARM/gem5.opt configs/tutorial/simpleARM.py
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

panic: panic condition fd < 0 occurred: Failed to open file /lib/ld-linux-aarch64.so.1.
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

注意:我知道它在编译时有效--static。但我需要运行动态链接的更复杂的二进制文件,并且我无法更改它们。这只是一个例子。

qemu arm64 gem5

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