searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

ARM64平台二进制翻译实现分析(1)

2023-10-26 05:58:59
170
0

1 简介

       ExaGear是一款二进制指令动态翻译软件,运行在ARM64服务器上,通过将x86的指令在运行时翻译为ARM64指令并执行,使得绝大部分Linux on x86应用无需重新编译就可运行在ARM64服务器上。

      ExaGear主要有两个组件:指令翻译引擎和x86运行环境,指令翻译引擎是一个“中间件”软件解决方案,位于x86应用程序与ARMv8架构服务器之间。x86应用启动时,ExaGear的指令翻译引擎接管x86应用的运行,使用二进制翻译技术将它们转换为兼容ARM的代码,再执行x86应用程序;

x86运行环境是一个包含所有标准库、实用程序的x86应用执行环境。

       x86运行环境示意图如下:

       

2  exagear工具分析 

2.1 软件包构成

exagear安装包主要由组成: 1)exager-core-xxxxx: 指令翻译引擎 2)exager-guest-for-centos-XXXX: x86运行环境

 

2.2 技术起源

从exagear运行方式和二进制命名上看,应该是Eltechs的延续 

[root@localhost release]# rpm -qpl exagear-core-x64a64-2838-1.aarch64.rpm
/lib/systemd/system/exagear-x86_64-binfmt.service
/lib/systemd/system/exagear-x86_64-opt.service
/opt/exagear/bin/binary_pick_x64a64.sh
/opt/exagear/bin/ubt_x64a64_al
/opt/exagear/bin/ubt_x64a64_al_mem39
/opt/exagear/bin/ubt_x64a64_al_mem49
/opt/exagear/bin/ubt_x64a64_cb
/opt/exagear/bin/ubt_x64a64_opt
/opt/exagear/shared/exagear-x86_64.conf

 

2.3 使用限制

限制条件

说明

解决方案

操作系统种类

64 位Linux操作系统(CentOS 7、Ubuntu18、Ubuntu20)

 

CPU架构限制

CPU:ARMv8架构

 

PAGE SIZE大小

CentOS ARM 系统不支持64KB页,只支持4KB

替换PAGE SIZE4K内核

使用场景

只支持Linux on x86应用,不支持Windows应用,不支持Linux 驱动、虚拟化平台等内核程序的翻译

 

部署

可以物理机,虚拟机,容器部署但是不支持ExaGear for Server 和ExaGear for Docker同时部署在同一台机器上;

 

服务安装

禁止在同一台机器上同时安装同一服务的x86和ARM版本。另外,强烈建议不要从guest系统中运行host服务

 

 

2.4 简单使用

以centos系统为例,先安装exagear组件包后,运行exagear命令,即可启动一个x86 shell,也称为guest shell,进入到虚拟的x86 OS环境 

执行exagear后,已置身于x86运行环境,根目录在host系统上的绝对路径为:/opt/exagear/images/centos-7-x86_64 该路径也就是

exager-guest-for-centos-XXXX安装包提供的

 

2.5  文件目录共享

ExaGear Server整个文件系统对host系统应用程序可见,只有guest系统文件对Linux on x86应用程序可见 

配置文件/opt/exagear/images/centos-<os_version>-x86_64/.exagear/vpaths-list包含了host系统和guest系统共享的一系列目录和文件 

0条评论
0 / 1000
w****n
3文章数
1粉丝数
w****n
3 文章 | 1 粉丝
w****n
3文章数
1粉丝数
w****n
3 文章 | 1 粉丝
原创

ARM64平台二进制翻译实现分析(1)

2023-10-26 05:58:59
170
0

1 简介

       ExaGear是一款二进制指令动态翻译软件,运行在ARM64服务器上,通过将x86的指令在运行时翻译为ARM64指令并执行,使得绝大部分Linux on x86应用无需重新编译就可运行在ARM64服务器上。

      ExaGear主要有两个组件:指令翻译引擎和x86运行环境,指令翻译引擎是一个“中间件”软件解决方案,位于x86应用程序与ARMv8架构服务器之间。x86应用启动时,ExaGear的指令翻译引擎接管x86应用的运行,使用二进制翻译技术将它们转换为兼容ARM的代码,再执行x86应用程序;

x86运行环境是一个包含所有标准库、实用程序的x86应用执行环境。

       x86运行环境示意图如下:

       

2  exagear工具分析 

2.1 软件包构成

exagear安装包主要由组成: 1)exager-core-xxxxx: 指令翻译引擎 2)exager-guest-for-centos-XXXX: x86运行环境

 

2.2 技术起源

从exagear运行方式和二进制命名上看,应该是Eltechs的延续 

[root@localhost release]# rpm -qpl exagear-core-x64a64-2838-1.aarch64.rpm
/lib/systemd/system/exagear-x86_64-binfmt.service
/lib/systemd/system/exagear-x86_64-opt.service
/opt/exagear/bin/binary_pick_x64a64.sh
/opt/exagear/bin/ubt_x64a64_al
/opt/exagear/bin/ubt_x64a64_al_mem39
/opt/exagear/bin/ubt_x64a64_al_mem49
/opt/exagear/bin/ubt_x64a64_cb
/opt/exagear/bin/ubt_x64a64_opt
/opt/exagear/shared/exagear-x86_64.conf

 

2.3 使用限制

限制条件

说明

解决方案

操作系统种类

64 位Linux操作系统(CentOS 7、Ubuntu18、Ubuntu20)

 

CPU架构限制

CPU:ARMv8架构

 

PAGE SIZE大小

CentOS ARM 系统不支持64KB页,只支持4KB

替换PAGE SIZE4K内核

使用场景

只支持Linux on x86应用,不支持Windows应用,不支持Linux 驱动、虚拟化平台等内核程序的翻译

 

部署

可以物理机,虚拟机,容器部署但是不支持ExaGear for Server 和ExaGear for Docker同时部署在同一台机器上;

 

服务安装

禁止在同一台机器上同时安装同一服务的x86和ARM版本。另外,强烈建议不要从guest系统中运行host服务

 

 

2.4 简单使用

以centos系统为例,先安装exagear组件包后,运行exagear命令,即可启动一个x86 shell,也称为guest shell,进入到虚拟的x86 OS环境 

执行exagear后,已置身于x86运行环境,根目录在host系统上的绝对路径为:/opt/exagear/images/centos-7-x86_64 该路径也就是

exager-guest-for-centos-XXXX安装包提供的

 

2.5  文件目录共享

ExaGear Server整个文件系统对host系统应用程序可见,只有guest系统文件对Linux on x86应用程序可见 

配置文件/opt/exagear/images/centos-<os_version>-x86_64/.exagear/vpaths-list包含了host系统和guest系统共享的一系列目录和文件 

文章来自个人专栏
天翼云XC适配
3 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0