在Ubuntu下安装QEMU 9.1 AARCH64环境

目录

引言

华为云开发者主机

QEMU-system-aarch64的安装

准备开发环境

下载QEMU 9.1源码并编译

测试QEMU 9.1


引言

最近在写一本关于ARM64的书,所以想用QEMU模拟AARCH64环境并测试一下相关代码,在此记录下整个过程。

华为云开发者主机

我的测试主机采用的是华为云开发者主机,它是个云桌面,和阿里的无影云电脑差不多。熟悉我的朋友都知道,我很喜欢云桌面,使用方便,随处可用。目前华为开展免费领取活动,感兴趣的同学可以去领一下:华为云开发者官网_华为云 (huaweicloud.com)

配置环境是这样的:

使用的系统是Ubuntu 22.04.4 LTS。编译程序啥的,性能还不错,而且下载软件的速度很快,不想无影云电脑那样有限速。

唯一的缺点就是这玩意特别难进入,打开桌面时显示“环境准备中,大约需要1分钟,请您耐心等待...”,但是实际情况下你多长时间能进去完全是运气。我一定以为死机了,还提交了工单,不过后来发现只要你有足够的耐心,一定能够进去的。

QEMU-system-aarch64的安装

Ubuntu的仓库里面是带了QEMU-system-aarch64的,但是版本特别老,是6.0。现在最新的版本都9.1了。所以我决定采用自己编译源源代码的方式来进行安装。在这个过程中,参考了

手把手教你搭建ARM64 QEMU环境 - 知乎 (zhihu.com)

准备开发环境

由于是给开发者准备的云主机,所以一些最基本的软件已经安装了,像gcc、make、Python 3.10。如果你是在自己的虚拟机上进行测试,可能需要先安装这些。不过还是有一些第三方软件需要安装一下。

大致的步骤如下:

pip3 install --upgrade pip
pip3 install sphinx
pip3 install sphinx_rtd_theme
pip3 install Ninja
sudo apt-get install libglib2.0-0 libglib2.0-dev ninja-build libpixman-1-dev

 

下载QEMU 9.1源码并编译

接下来就是现在QEMU 9.1的源码并进行编译。大致的步骤如下:

wget https://download.qemu.org/qemu-9.1.0.tar.xz
tar xvJf qemu-9.1.0.tar.xz
cd qemu-9.1.0
mkdir build/
cd build/
../configure --target-list=aarch64-softmmu --audio-drv-list=
make -j8 && make install

有大概3000个文件需要编译,所以还是需要花一点时间的,不过华为的云主机还挺快,等不了太久。

安装后在/usr/local/bin目录下可以找到qemu-system-aarch64。安装的过程中如果出现没有权限,无法拷贝文件的情况,可以用sudo chmod 777修改目标路径的权限。 

测试QEMU 9.1

下面简单的测试一下QEMU,运行如下命令

developer@ecs-cloud-host-ubuntu-img-make:~$ qemu-system-aarch64 --version
QEMU emulator version 9.1.0
Copyright (c) 2003-2024 Fabrice Bellard and the QEMU Project developers

System模式的QEMU编译成功了。

<think>好的,用户想在没有root权限的情况下安装qemu-aarch64。我之前提供的引用里提到过使用qemu-user-static来运行arm64的容器,但用户现在可能需要直接安装qemu-aarch64而不需要root权限。首先,我需要确认qemu-aarch64是否属于哪个软件包。通常,在Ubuntu中,qemu-system-arm和qemu-system-aarch64可能包含所需的二进制文件。但是用户没有root权限,无法通过apt安装,所以需要考虑其他方法。 接下来想到的是从源码编译安装。用户可能需要下载qemu的源代码,配置时指定安装路径到用户目录,这样不需要root权限。但编译qemu可能会有依赖项的问题,比如需要安装一些开发库,这同样可能需要root权限。不过如果用户的环境已经有这些库,或者可以通过其他途径安装到用户目录下,可能可行。 另外,用户是否可以使用预编译的二进制文件?比如从QEMU官网或其他镜像站下载静态编译的版本,解压到用户目录,然后添加到PATH中。例如,引用[1]中提到从GitHub下载qemu-aarch64-static的tar.gz包,解压后手动挂载到容器里。这可能是一个可行的办法,但需要确认这个静态二进制文件是否可以直接运行而不需要额外的依赖。 步骤可能包括:下载预编译qemu-aarch64-static,解压到用户目录,然后配置环境变量或直接使用路径执行。或者下载qemu的源码,配置--prefix=$HOME/qemu,然后编译安装。不过编译可能需要安装依赖项,比如glib、pixman等,用户是否有权限安装这些到本地目录? 还需要考虑是否使用容器或其他虚拟化技术。比如使用docker时,用户虽然没有root权限,但可能有权限运行docker命令?不过用户的问题可能是在宿主机上安装qemu-aarch64,而不是在容器内运行。或者用户可能想在没有root权限的宿主机上运行arm64的虚拟机,这时候使用qemu-system-aarch64需要安装。 总结可能的解决方案: 1. 下载预编译的静态二进制文件,如qemu-aarch64-static,直接使用。 2. 从源码编译QEMU安装到用户目录。 3. 使用容器技术,如docker,但需要用户有权限运行容器(可能需要root)。 4. 利用用户空间包管理器,如conda,可能提供qemu的包,允许用户安装到自己的目录。 检查引用内容,引用[1]提到通过docker运行arm64容器需要qemu-user-static,但用户可能没有权限进行docker的--privileged操作。用户的问题是无root安装qemu-aarch64,所以可能解决方案是方法1或2。 例如,用户可以从GitHub的multiarch/qemu-user-static仓库下载预编译的二进制文件,解压到~/bin目录,然后添加到PATH。或者从QEMU官网下载源码,配置时使用--prefix=$HOME/.local,然后make install。需要指导用户处理可能的依赖问题,比如如果缺少库,可能需要用户自己编译这些库并安装到用户目录,或者使用静态编译选项。 此外,需要注意qemu-system-aarch64qemu-aarch64-static的区别。用户可能需要的是前者来运行完整的虚拟机,而后者是用户模式的模拟。根据引用中的例子,用户可能在尝试运行UEFI或虚拟机,所以需要qemu-system-aarch64。 所以,正确的步骤可能包括: - 下载QEMU源码,配置时指定安装路径到用户目录,处理依赖项,然后编译安装。 - 或者找到预编译的二进制包,解压到用户目录。 需要详细说明这些步骤,并指出可能遇到的依赖问题及解决方法,如使用--static选项编译,或者指导用户如何设置库路径(LD_LIBRARY_PATH)等。</think>以下是无root权限安装$qemu$-$aarch64$的解决方案: ### 方法1:使用预编译静态二进制文件 1. **下载静态编译版本** 从multiarch/qemu-user-static仓库获取预编译的$qemu$-$aarch64$-$static$: ```bash wget https://github.com/multiarch/qemu-user-static/releases/download/v7.2.0-1/qemu-aarch64-static.tar.gz tar -xzvf qemu-aarch64-static.tar.gz -C ~/.local/bin/ ``` 2. **配置环境变量** 将二进制文件路径加入$PATH$: ```bash echo &#39;export PATH="$HOME/.local/bin:$PATH"&#39; >> ~/.bashrc source ~/.bashrc ``` ### 方法2:源码编译安装 1. **下载QEMU源码** ```bash wget https://download.qemu.org/qemu-8.0.0.tar.xz tar xvf qemu-8.0.0.tar.xz cd qemu-8.0.0 ``` 2. **配置编译选项** 指定安装路径到用户目录,并启用静态链接: ```bash ./configure --prefix=$HOME/qemu --static --target-list=aarch64-softmmu ``` 3. **解决依赖问题** 若提示缺少库(如$glib$/$pixman$),需在用户目录手动安装: ```bash # 示例:编译安装pixman wget https://cairographics.org/releases/pixman-0.42.2.tar.gz tar xvf pixman-0.42.2.tar.gz cd pixman-0.42.2 ./configure --prefix=$HOME/.local make && make install ``` 4. **编译安装** ```bash make -j$(nproc) make install ``` ### 验证安装 ```bash $HOME/qemu/bin/qemu-system-aarch64 --version ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神一样的老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值