如何使用 Ruyi 包管理器安装 QEMU 模拟器(RISC-V 版本),并解决在 Ubuntu 24.04 上可能遇到的依赖问题。
1. 前提条件
确保您已经安装了 Ruyi 包管理器。如果尚未安装,请参考 Ruyi 官方文档进行安装。
检查 Ruyi 版本:
ruyi --version
2. 搜索 QEMU 软件包
使用以下命令搜索可用的 QEMU 软件包:
ruyi list --name-contains qemu
您将看到类似以下的输出:
* emulator/qemu-system-riscv-upstream
- 8.2.0-ruyi.20240128 (latest)
...
3. 安装 QEMU
我们将安装 emulator/qemu-system-riscv-upstream 软件包。运行以下命令:
ruyi install emulator/qemu-system-riscv-upstream
安装完成后,Ruyi 会提示安装路径,通常位于 ~/.local/share/ruyi/binaries/x86_64/ 目录下。
4. 解决依赖问题 (Ubuntu 24.04)
在 Ubuntu 24.04 (Noble Numbat) 上,运行 QEMU 可能会遇到以下错误:
error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
这是因为 Ubuntu 24.04 将 libaio1 升级为 libaio1t64,并且库文件名变更为 libaio.so.1t64。
要解决此问题,请执行以下步骤:
-
安装
libaio1t64(如果尚未安装):sudo apt-get install libaio1t64 -
创建符号链接:
sudo ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1
原因如下:
“2038年问题”修复 (time_t 64-bit transition):
Ubuntu 24.04 为了解决“2038年问题”(即 32 位时间戳溢出问题),将大量系统库进行了重新编译和重命名,以支持 64 位的时间类型 (time_t)。库文件名变更:
在这个过程中,异步 I/O 库 libaio 的包名从 libaio1 变成了 libaio1t64。更重要的是,它提供的共享库文件名也从传统的 libaio.so.1 变更为 libaio.so.1t64。二进制程序的依赖:
您通过 Ruyi 安装的 QEMU 二进制文件是在较旧的系统环境或者未采用此命名约定的环境中编译的。因此,该程序的“硬编码”依赖列表中写的是旧文件名 libaio.so.1。
5. 验证安装和使用
找到安装的 QEMU 二进制文件路径。您可以使用 ls 命令查看安装目录:
ls ~/.local/share/ruyi/binaries/x86_64/qemu-system-riscv-upstream-*/bin/
运行 QEMU 查看版本信息(请根据实际路径调整):
~/.local/share/ruyi/binaries/x86_64/qemu-system-riscv-upstream-8.2.0-ruyi.20240128/bin/qemu-system-riscv64 --version
如果输出类似以下内容,则说明安装成功:
QEMU emulator version 8.2.0 (RuyiSDK 20240128)
Copyright (c) 2003-2023 Fabrice Bellard and the QEMU Project developers