基于QEMU测试Loongarch龙架构

💡 原文中文,约1800字,阅读约需5分钟。
📝

内容提要

客户希望在3A6000上使用QEMU进行产品测试。QEMU有system和user两种模式,system模式可启动Loongnix系统,而user模式需构建rootfs。LoongArch有旧世界和新世界两种不兼容的软件体系,对应不同的程序解释器路径。

🎯

关键要点

  • 客户希望在3A6000上使用QEMU进行产品测试。

  • QEMU有system和user两种模式,system模式可启动Loongnix系统,user模式需构建rootfs。

  • System模式可以直接下载龙芯官方的Loongnix系统的qemu磁盘镜像来启动Loongarch的系统。

  • 启动命令包括设置内存、CPU、机器类型和BIOS等参数。

  • User模式需要构建基本的rootfs,可以使用debootstrap构建或解压现成版本。

  • LoongArch有旧世界和新世界两种不兼容的软件体系,分别称为ABI 1.0和ABI 2.0。

  • 新旧世界的主要区别在于程序解释器路径不同,旧世界为/lib64/ld.so.1,新世界为/lib64/ld-linux-loongarch-lp64d.so.1。

  • 旧世界系统包括较老的Linux内核和一些特定的发行版,新世界系统包括社区的Debian、Arch和Loongnix 25。

  • 新世界系统可以通过liblol兼容旧世界软件,但反向兼容较为困难。

  • 编译支持某个世界系统的程序最好在目标系统上进行或使用对应的交叉编译工具链。

🔎

延伸解读

QEMU的使用模式

QEMU提供了system和user两种模式,适用于不同的测试需求。System模式适合需要完整硬件模拟的场景,用户可以直接下载Loongnix系统的镜像进行测试。而User模式则适合在现有环境中运行特定架构的程序,但需要构建基本的rootfs,这对用户的技术要求较高。

新旧世界的兼容性

LoongArch的旧世界和新世界软件体系不兼容,分别对应ABI 1.0和ABI 2.0。新世界系统通过liblol可以兼容旧世界软件,但反向兼容性较差。这意味着在开发和部署应用时,需特别注意所使用的系统版本,以避免兼容性问题。

编译注意事项

在编译支持特定LoongArch系统的程序时,建议在目标系统上进行编译,或使用相应的交叉编译工具链。这可以有效避免因环境不匹配导致的运行错误,确保程序在目标架构上的稳定性和性能。

延伸问答

如何在3A6000上使用QEMU进行产品测试?

可以使用QEMU的system模式,下载龙芯官方的Loongnix系统的qemu磁盘镜像,并通过特定命令启动。

QEMU的system模式和user模式有什么区别?

System模式模拟整个硬件环境,而user模式则在当前环境中执行另一个架构的程序。

如何构建QEMU的user模式的rootfs?

可以使用debootstrap构建rootfs,或解压现成的版本,如CLFS-for-LoongArch。

LoongArch的旧世界和新世界有什么不同?

旧世界和新世界是两套不兼容的软件体系,主要区别在于程序解释器路径和支持的系统版本。

如何启动Loongnix系统的QEMU镜像?

使用命令行设置内存、CPU、机器类型和BIOS等参数,然后运行QEMU命令启动镜像。

新旧世界的程序兼容性如何?

新世界系统可以通过liblol兼容旧世界软件,但旧世界兼容新世界较为困难。

🏷️

标签

➡️

继续阅读