ExaGear 二进制动态翻译

环境

操作系统:Ubuntu Kylin 优麒麟 20.04、Debian 11 Bullseye

适用架构:ARM64(鲲鹏、飞腾)

 

前言

 

概述

本文档介绍了ExaGear的工作原理、技术约束、安装、升级、以及配置和安全加固等内容。

本文档中,host系统指ARM64位GNU/Linux,guest系统指运行在host系统上的x86 GNU/Linux。

本文档中的示例采用如下排版规范:

  • <os_version>表示支持的操作系统的版本号;
  • <package_version>表示ExaGear包的版本号,安装时,需根据实际获取的安装包版本号执行操作;

符号约定

在本文中可能出现下列标志,它们所代表的含义如下。

符号

说明

ExaGear 二进制动态翻译

用于传递设备或环境安全警示信息。如不避免则可能会导致设备损坏、数据丢失、设备性能降低或其它不可预知的结果。

“须知”不涉及人身伤害。

ExaGear 二进制动态翻译

对正文中重点信息的补充说明。

“说明”不是安全警示信息,不涉及人身、设备及环境伤害信息。

 

ExaGear概念

 

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

ExaGear安装完成后,主要有两个组件:指令翻译引擎和x86运行环境。

指令翻译引擎

ExaGear的指令翻译引擎是一个“中间件”软件解决方案,位于x86应用程序与ARMv8架构服务器之间(见图1)。x86应用启动时,ExaGear的指令翻译引擎接管x86应用的运行,使用二进制翻译技术将它们转换为兼容ARM的代码,再执行x86应用程序。对最终用户而言,整个过程是简易且透明的。

图1 ExaGear的概念性表示


ExaGear 二进制动态翻译

x86运行环境

x86运行环境是ExaGear创建的一个包含所有标准库、实用程序、配置文件的x86应用执行环境,这确保了x86应用程序运行所需的基础设施组件的可用性。从技术角度讲,x86运行环境是一个特定的文件目录,包含了x86库、命令、实用程序和其它系统文件(见图2)。x86应用程序的二进制文件也必须存放于x86运行环境中。

图2 x86运行环境的概念性表示


ExaGear 二进制动态翻译
 

关键特性

 

  • 支持多种部署方式:支持在物理机、虚拟机、容器等平台上部署;
  • 部署简单:一键式快速安装,x86应用部署和运行与迁移前保持一致;
  • 支持多版本Linux OS:目前支持CentOS 7、CentOS 8、Ubuntu18、Ubuntu20、OpenEuler 20.03,并且根据用户需求,未来可定制支持更多Linux OS发行;
  • 低损耗: 大多数场景的应用,翻译损耗在20%以内。

 

技术约束

 

  1. 只支持Linux on x86应用,不支持Windows应用,不支持Linux 驱动、虚拟化平台等内核程序的翻译。
  2. 支持x86通用指令和SSE、AVX扩展指令,不支持AVX-2和AVX 512指令。
  3. 当前只支持CentOS 7、CentOS 8、Ubuntu18、Ubuntu20、OpenEuler 20.03。
  4. x87(浮点)80位精度支持受限。
  5. Linux on x86应用,在运行时涉及的文件或文件夹的绝对路径的字符串长度不大于4KB。
  6. 在64KB page size的Linux系统上,部分Linux on x86应用可能存在4KB page size的兼容性问题。
  7. 不支持ExaGear for Server 和ExaGear for Docker同时部署在同一台机器上。

 

获取ExaGear

单击
下载获取获取
ExaGear软件包
https://mirrors.huaweicloud.com/kunpeng/archive/ExaGear/

软件包名称:ExaGear_1.2.1.1

目录结构示例

ExaGear_1.2.1.1

— ExaGear_Server_for_Centos7

—— release

— ExaGear_Server_for_Centos8

—— release

— ExaGear_Server_for_Ubuntu18

—— release

— ExaGear_Server_for_Ubuntu20

—— release

— Exagear4docker

—— deb

——— release

—— rpm

——— release

—— rpm_64k

——— release

ExaGear for Server

 

 

简介

 

ExaGear for Server 为用户提供一个虚拟的x86 Linux OS环境,支持运行Linux on x86应用,部署运行在ARM64 Linux OS上。本章主要介绍ExaGear for Server的基本操作和使用,包括ExaGear for Server的获取、安装、运行、配置、升级和卸载, 以及Linux on x86应用程序在ExaGear上的安装和运行。

前提条件

 

系统要求

Host系统需满足如下要求:

  • CPU:ARMv8架构;
  • RAM:512 MB及以上;
  • 磁盘空间:默认安装路径为/opt/exagear,需保证该目录所在磁盘的空余空间满足如下条件:
    • 600 MB: 含x86系统库和基础文件系统,在ExaGear安装包中提供,
    • 用户所运行的x86应用程序需要额外占用空间,包括依赖库文件和相关系统配置文件;
  • 操作系统:64 位Linux操作系统(CentOS 7、CentOS 8、Ubuntu18、Ubuntu20、OpenEuler 20.03),允许的虚拟地址长度至少为48bit。
    ExaGear 二进制动态翻译注意:

    OpenEuler 20.03 作为鲲鹏服务器Host OS场景下,ExaGear的安装包需要使用支持ExaGear for Server on CentOS的64K pageSize的安装包进行安装。

用户权限检查

确保已获取执行后续操作所需的sudo权限或者以root用户完成后续操作。

ExaGear for Server on Ubuntu

 

 

安装ExaGear for Server on Ubuntu

 

包含如下五个安装包:

  1. exagear-core-x32a64-<package_version>_arm64.deb
  2. exagear-core-x64a64-<package_version>_arm64.deb
  3. exagear-guest-for-ubuntu-<os_version>-x86_64-<package_version>_all.deb
  4. exagear-integration-<package_version>_all.deb
  5. exagear-utils-<package_version>_all.deb

 

安装前,检查host系统的/opt/exagear目录是否存在。如存在,则应按照“升级ExaGear for Server on Ubuntu”进行操作。

执行以下命令安装exagear:

sudo dpkg -i exagear-utils_<package_version>_all.deb exagear-core-x64a64_<package_version>_arm64.deb exagear-core-x32a64_<package_version>_arm64.deb exagear-guest-for-ubuntu-<os_version>-x86_64-<package_version>_all.deb exagear-integration_<package_version>_all.deb
sudo apt-get install -f

 

ExaGear 二进制动态翻译须知:

上述命令中的<package_version>表示ExaGear包的版本号,例如1738。安装时需根据实际获取的安装包版本号执行操作,否则会提示失败。

上述命令中的<os_version>表示guest系统的版本号,安装时需根据实际获取的安装包版本号执行操作,否则会提示失败。此处<os_version>以for Ubuntu 18.04为例,则<os_version>为1804。

本文后续涉及<package_version><os_version>的描述同理,不再赘述。

至此,ExaGear的指令翻译引擎,x86运行环境,以及工具套件已完成部署安装,你可以开始使用ExaGear for Server提供的x86 OS环境,及安装和运行x86应用程序。

 

运行guest系统

 

运行exagear命令,即可启动一个x86 shell,也称为guest shell,进入到虚拟的x86 OS环境。

exagear

 

显示:Starting the shell in the guest image /opt/exagear/images/ubuntu-<os_version>-x86_64

arch

 

显示:x86_64

至此,你已置身于x86运行环境,根目录在host系统上的绝对路径为:/opt/exagear/images/ubuntu-<os_version>-x86_64。

在这里,guest shell的运行情况和在x86机器上一样。

ExaGear 二进制动态翻译须知:

用户帐号在host系统和guest系统之间是共享的。在guest系统中增加或删除用户时,host上也会进行相应的修改。/home目录也在host系统和guest系统之间共享(更多host和guest系统之间共享目录的详细信息,请参考配置ExaGear for Server on Ubuntu)。

运行exit命令即可退出guest会话。

exit

 

至此,你又回到了host系统。执行如下命令:

arch

 

显示:aarch64

ExaGear 二进制动态翻译说明:

系统一般默认的是bash shell,调用exagear之前,用户还可以通过设置SHELL环境变量在guest系统中使用自己偏好的shell,比如csh,ksh等。

 

安装Linux on x86应用程序

 

ExaGear 二进制动态翻译须知:

  • 禁止在同一台机器上同时安装同一服务的x86和ARM版本。另外,强烈建议不要从guest系统中运行host服务,因为这种操作未经测试,也不被支持。

x86或x86-64应用程序以及依赖库的安装等,需要在guest环境中进行。推荐使用yum工具安装x86应用,首先要配置yum源,需要进入guest环境后进行配置,相关操作和在x86机器上的操作一样。

ExaGear 二进制动态翻译说明:

如果你需要在本地网络中通过/etc/environment使用代理配置,确保你已经通过如下命令将配置复制到了guest系统(更多请参考“配置ExaGear for Server on Ubuntu”)。

sudo cp /etc/environment
/opt/exagear/images/ubuntu-<os_version>-x86_64/etc/environment

 

运行exagear命令进入guest环境,以安装x86的nginx为例:

exagear

 

显示:Starting the shell in the guest image /opt/exagear/images/ubuntu-<os_version>-x86_64

通过apt-get进行安装:

sudo apt-get update
sudo apt-get install nginx

 

在guest环境中安装x86应用程序,guest 环境中查看到的路径如果是/path/to/binary,则实际路径是:/opt/exagear/images/ubuntu-<os_version>-x86_64/path/to/binary。

比如,在guest环境中 nignx的路径为 /usr/sbin/nginx,在host 环境上的实际路径为/opt/exagear/images/ubuntu-<os_version>-x86_64/usr/sbin/nginx。

 

如果x86应用是以deb安装包方式提供的,需要将该安装包拷贝至guest系统可见的目录,推荐个人home目录“~/”,然后进入guest环境,通过apt-get进行安装,以安装x86 xxx.deb包为例:

exagear

 

显示:Starting the shell in the guest image /opt/exagear/images/ubuntu-<os_version>-x86_64

通过apt-get进行安装:

sudo apt-get install xxx

 

运行Linux on x86应用程序

 

x86应用程序安装完成后,在guest和host中均可运行。

你可以运行exagear命令启动guest shell,并运行任何x86应用程序,运行方式和在x86系统中一样。例如:

exagear

 

显示:Starting the shell in the guest image /opt/exagear/images/ubuntu-<os_version>-x86_64

which nginx

 

显示:/usr/sbin/nginx

/usr/sbin/nginx -h

 

在host会话中,你有如下两种选择:

  1. 在同一行中输入exagear — 命令和guest系统内部的x86应用程序路径。例如:
    exagear -- /usr/sbin/nginx -h

  •  

  • 输入x86应用程序二进制文件的完整路径。这个文件位于一个特定的目录下:/opt/exagear/images/ubuntu-<os_version>-x86_64,即x86运行环境。例如:
    /opt/exagear/images/ubuntu-<os_version>-x86_64/usr/sbin/nginx -h

  1.  

默认配置下,x86应用程序只能访问x86运行环境中的文件,如果需要访问host系统上的某些文件,可以通过设置host与guest共享目录文件方式。详细配置方法请参考“配置ExaGear for Server on Ubuntu”中的host系统和guest系统共享的共享章节。

 

注:

对于脚本程序,推荐进入guest环境后运行,或者在host上运行该命令:

exagear -- /path/to/script

 

以test.sh脚本为例,脚本内容:

#!/bin/bash
if [ `arch` == 'x86_64' ]
then   
    echo "ok"
else   
    echo "fail"
fi

 

运行结果对比:

./test.sh

 

显示:fail

exagear -- ./test.sh

 

显示:ok

ExaGear 二进制动态翻译说明:

在guest系统中Linux on x86 32位和64位应用程序的安装和运行与在支持多进制的x86计算机上的运行是相同的。

 

配置ExaGear for Server on Ubuntu

 

host系统和guest系统共享的目录

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

图1 host系统和guest系统的文件系统(以Ubuntu 18为例)


ExaGear 二进制动态翻译

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

cat /opt/exagear/images/ubuntu-<os_version>-x86_64/.exagear/vpaths-list

 

显示:

/home/

/etc/adduser.conf

/etc/deluser.conf

以下文件及配置会在host系统和guest系统中共享使用:

  • User accounts
  • user groups
  • user privileges
  • /home directories
  • host configurations
  • system information provided by Linux kernel
  • devices and disks
  • sockets
  • pidfiles
  • mount points
  • logs
  • temporary files

 

如需创建一个在host系统和guest系统之间共享的目录或文件,可以选择如下两种方法:

  • 方法1:修改vpaths-list配置文件。

    修改vpaths-list配置文件的操作步骤如下:

    1. 确保host系统中存在所需的目录(或文件)。
    2. 在guest系统中创建同名的假目录(或文件)。
    3. 将目录(或文件)的完整路径另取一行添加到配置文件opt/exagear/images/ubuntu-<os_version>-x86_64/.exagear/vpaths-list中。

      请注意,配置文件的目录应以“/”结尾

  • 方法2:将host系统要共享的目录挂载到guest系统

    以/newdir为例,使用coreutils中的mount实用程序将host系统要共享的目录挂载到guest系统:

    1. 在x86运行环境中创建挂载点:
      sudo mkdir /opt/exagear/images/ubuntu-<os_version>-x86_64/shareddir

  •  

  • 将newdir挂载到shareddir挂载点下:
    sudo mount --bind /newdir /opt/exagear/images/ubuntu-<os_version>-x86_64/shareddir

  1.  

ExaGear 二进制动态翻译说明:

在卸载ExaGear Server前,需要卸载挂载的目录:

sudo umount /opt/exagear/images/ubuntu-<os_version>-x86_64/shareddir

  •  

代理配置

/etc/environment在host系统和guest系统之间不共享。因此,如果你需要在本地网络中通过/etc/environment使用代理配置,确保你已经使用如下命令将配置复制到guest系统:

sudo cp /etc/environment /opt/exagear/images/ubuntu-<os_version>-x86_64/etc/environment

 

sysctl和网络配置

guest系统可以访问/proc/sys/中的sysctl设置,但不能修改/etc/sysctl.conf或/etc/sysctl.d/。sysctl参数的配置应在host系统上进行。

guest系统可以访问描述网络配置的文件(例如/etc/resolv.conf)但guest系统不可修改网络设置。网络设置的配置应在host系统上进行。

guest SysV风格的init脚本和systemd在host中的集成

Ubuntu采用systemd作为init系统,并支持SysV风格的init脚本作为legacy。许多Ubuntu包中会提供这些服务的配置。

默认情况下,系统采用全自动集成机制将guest服务表示为host服务。guest服务被注册为host服务,服务名称相同。因此,你可以从guest和host shell来管理guest服务(在这种情况下,host服务会将所有start/stop/testconfig等请求委托给各自的guest服务)。以Ubuntu为例:

exagear

 

显示:Starting the shell in the guest image /opt/exagear/images/ubuntu-<os_version>-x86_64

sudo apt-get update
sudo apt-get install nginx
exit
arch aarch64
sudo service nginx start
service nginx status

 

显示:

● nginx.service – nginx – high performance web server

Loaded: loaded (/run/systemd/generator.late/nginx.service; generated)

Active: active (running) since Fri 2019-05-17 11:56:35 EDT; 2h 54min ago …

你可以通过列出guest系统的/opt/exagear/images/ubuntu-<os_version>-x86_64/etc/init.d/和

/opt/exagear/images/ubuntu-<os_version>-x86_64/lib/systemd/system/目录中的文件来查看guest系统中注册了哪些服务。

内存顺序模型

ExaGear Server 默认为Linux on x86应用程序提供弱内存顺序模型。 如果软件依赖于x86强内存顺序模型,则可能需要强制ExaGear严格遵循x86强内存顺序模型。可以通过修改Exagear Server配置文件来完成:

sudo sed -i -e '/EXAGEAR_SMO_MODE="/s/fbase"/all"/' /etc/exagear-x86_32.conf
sudo sed -i -e '/EXAGEAR_SMO_MODE="/s/fbase"/all"/' /etc/exagear-x86_64.conf

 

使用以下命令恢复弱内存序模型:

sudo sed -i -e '/EXAGEAR_SMO_MODE="/s/all"/fbase"/' /etc/exagear-x86_32.conf
sudo sed -i -e '/EXAGEAR_SMO_MODE="/s/all"/fbase"/' /etc/exagear-x86_64.conf

 

升级ExaGear for Server on Ubuntu

 

升级前准备

1. 确保host 系统已安装ExaGear Server

2. 将ExaGear Server的所有配置文件拷贝至host系统目录备份:

cp -r /opt/exagear/images/ubuntu-<os_version>-x86_64/.exagear/* /tmp

 

升级步骤

1. 运行命令升级ExaGear Server软件包。

sudo dpkg -i exagear-utils_<package_version>_all.deb exagear-core-x64a64_<package_version>_arm64.deb exagear-core-x32a64_<package_version>_arm64.deb exagear-guest-for-ubuntu-<os_version>-x86_64-<package_version>_all.deb exagear-integration_<package_version>_all.deb
sudo apt-get install -f

 

2. 将备份的ExaGear Server配置文件与升级后的默认配置文件合并,以共享目录vpath-list配置文件为例,执行以下命令:

cat /tmp/vpath-list /opt/exagear/images/ubuntu-<os_version>-x86_64/.exagear/vpaths-list |sort|uniq > /opt/exagear/images/ubuntu-<os_version>-x86_64/.exagear/vpaths-list

 

升级后检查

通过以下命令确认升级后的ExaGear Server 版本:

cat /opt/exagear/cmcversion

 

ExaGear 二进制动态翻译说明:

新版本ExaGear Server将安装在旧版本上。所有guest系统中的Linux on x86 应用程序及ExaGear Server的相关配置均将保留

卸载ExaGear for Server on Ubuntu

 

ExaGear 二进制动态翻译须知:

卸载ExaGear for Server on Ubuntu会导致guest系统中的所有文件都会被删除,包括ExaGear for Server on Ubuntu安装时留下的文件以及后来由用户创建的文件。

在移除ExaGear for Server on Ubuntu之前,应确保已安装的所有Linux on x86 应用程序都已停止,如果你已经在guest系统中将host目录挂载到挂载点上,那么在卸载ExaGear for Server on Ubuntu之前,需要先卸载这些挂载点,更多请参考“配置ExaGear for Server on Ubuntu

运行以下命令卸载ExaGear for Server on Ubuntu:

sudo dpkg -r exagear-core-x64a64 exagear-core-x32a64 exagear-guest-for-ubuntu-<os_version>-x86-64 exagear-integration exagear-utils
sudo rm -rf /opt/exagear

 

至此,ExaGear及其支撑工具已被移除,guest系统的目录和文件也将被移除。

日志记录

 

本章描述了ExaGear的日志记录功能。

Exagear Server的日志文件路径为/var/log/exagear目录下,日志文件格式如下所示:

[time stamp][ log type ][ guest executable name ][ PID ] [Message]

 

例如:

[2020-01-19 02:01:46][MEMORY][/opt/exagear/images/centos-7-x86_64/usr/bin/bash] [55060]TCache: 1824 Kb AddrMap: 20516 Kb HostMman: 34816 Kb TOTAL: 57156 Kb

 

 

ExaGear Server日志类型:

  • ERROR:Exagear Errors;
  • MEMORY:内存使用信息(通过–log-meminfo选项启用,详见附录内容);
  • INFO:–verbose选项启用的附加信息。
ExaGear 二进制动态翻译说明:

  • 只有ERROR日志类型消息是Exagear error消息,除附加info消息外其他日志类型消息是note error消息。
  • 必须事先在host系统中手动创建文件夹 /Log/exagear,ExaGear才能使用该文件夹存储日志文件。

漏洞更新与安全加固

 

漏洞更新

ExaGear在发布之前会将涉及的Guest系统漏洞更新,保持与Guest OS的官网同步,在发布之后请用户自行根据Guest OS官方提供的补丁进行修复,例如CentOS的漏洞更新可参考官网(https://www.centos.org/)针对漏洞补丁的更新说明。涉及到ExaGear软件自身的漏洞修复,请通过鲲鹏社区获取ExaGear的最新进展。

安全加固

  • 帐户口令

    Guest系统的系统账户共享自Host系统,权限与Host系统保持一致,用户若加固,建议从Host系统上进行加固。

  • 文件权限

    Linux将所有对象都当作文件来处理,即使一个目录也被看作是包含有多个其他文件的大文件。因此,Linux中最重要的就是文件和目录的安全性。文件和目录的安全性主要通过权限和属主来保证。

    该默认策略对系统中的常用目录、可执行文件和配置文件设置了权限和属主。

    /usr/bin/readelf、/usr/bin/objdump属于binutils rpm包,该rpm包被rpm-build、 kmod等依赖,因此ExaGear安装包中涉及到的Guest系统必需包含此工具。为了尽量避免安全风险,这些文件的权限建议设置为750,属主被设置为root。

    另外,Guest系统中如下的文件和Host系统共享,其权限和属主与Host系统保持一致,用户若加固,建议从Host系统进行加固。其他与Host系统非共享的文件,可直接在Guset系统进行加固:

    表1
    各目录结构

    etc目录

    usr目录

    其他目录

    /etc/host.conf

    /usr/share/icons/

    /home/

    /etc/hostname

    /usr/share/pixmaps/

    /root/

    /etc/hosts

    /usr/share/X11/

    /proc/

    /etc/hosts.allow

      

    /dev/

    /etc/hosts.deny

      

    /sys/

    /etc/hosts.equiv

      

    /tmp/

    /etc/resolvconf/

      

    /run/

    /etc/resolv.conf

      

    /mnt/

    /etc/yp.conf

      

    /media/

    /etc/nscd.conf

      

    /var/log/

    /etc/nslcd.conf

      

    /var/lib/dbus/

    /etc/nsswitch.conf

         

    /etc/adduser.conf

         

    /etc/deluser.conf

         

    /etc/netgroup

         

    /etc/netgroup-

         

    /etc/group

         

    /etc/group-

         

    /etc/group+

         

    /etc/passwd

         

    /etc/passwd-

         

    /etc/passwd+

         

    /etc/gshadow

         

    /etc/gshadow-

         

    /etc/gshadow+

         

    /etc/shadow

         

    /etc/shadow-

         

    /etc/shadow+

         

    /etc/login.defs

         

    /etc/machine-id

         

    /etc/ldap.conf

         

    /etc/ldap/

         

    /etc/sudoers

         

    /etc/sudoers.d/

         

    /etc/securetty

         

    /etc/fstab

         

    /etc/fstab.d/

         

    /etc/fuse.conf

         

    /etc/mtab

         

    /etc/mtab.fuselock

         

    /etc/mtab.old

         

    /etc/blkid.conf

         

    /etc/blkid.tab

         

    /etc/mke2fs.conf

         

    /etc/services

         

    /etc/protocols

         

    /etc/security/

         

    /etc/inputrc

         

 

FAQ

 

Q1:指令翻译后的应用,重新启动后需要重新翻译吗?

A:需要重新翻译,ExaGear是动态翻译,不会改变x86应用二进制文件内容,只有执行过程中才会进行翻译。

 

Q2:指令翻译会有多大的性能损失?

A :通过SPEC CPU 2006工具测试,CPU性能损失20%,具体实际应用性能损失可能会比20%高,或者比20%低,需要实际测试。

 

Q3:当前只支持CentOS吗?是否支持其它OS?

A:当前支持CentOS 7、CentOS 8、Ubuntu18、Ubuntu20、OpenEuler 20.03。

 

Q4:可以在虚拟机中安装吗?

A:可以支持在虚拟机中安装ExaGear,需要注意,虚拟机的OS类型和ExaGear支持的Guest OS类型相同,虚拟机必须是ARM的虚拟机。

 

Q5:支持windows应用翻译吗?

A:不支持。

 

Q6: ExaGear for Server 和ExaGear for Docker可以部署在同一台机器上吗?

A: 不可以。

 

Q7: ExaGear使用的虚拟地址范围?

A: 当前版本使用的虚拟地址长度是48bit,如果内核允许的虚拟地址空间小于该长度,启动时会发生segment fault.

 

Q8: 安装时遇到错误:”Error: Problem: conflicting requests – nothing provides tar needed by exagear-guest-centos-7-x86_64-xxxx-1.noarch” 或者 “error: Failed dependencies: tar is needed by exagear-guest-centos-7-x86_64-xxxx-1.noarch”

A: 在host系统上,安装tar工具,或者若使用yum安装,需要配置好yum源。

 

技术支持

 

在使用过程中遇到问题,需提供技术支持时,请反馈如下信息至指令翻译工具论坛

  1. 硬件信息

信息类型

获取命令

CPU信息

lscpu 和/或者 cat /proc/cpuinfo

RAM信息

cat /proc/meminfo 和 free -h

驱动信息

mount

sudo parted -l

sudo fdisk -l

df -h

  1. 操作系统信息

信息类型

获取命令

操作系统整体信息

cat /etc/os-release

内核信息

uname -a

系统页大小

getconf PAGE_SIZE

内存映射信息

cat /proc/self/maps

cat /etc/issue

  1. ExaGear软件信息

信息类型

获取命令

已安装的ExaGear软件包

dpkg -l | grep exagear

日志文件

该路径下的所有文件 /var/log/exagear/

ExaGear二进制文件的Checksum信息

shasum -a 256 /opt/exagear/bin/ubt_x64a64_al

shasum -a 256 /opt/exagear/bin/ubt_x32a64_al

  1. 使用ExaGear运行的软件信息

信息类型

运行软件的完整版本信息

获取该软件的方式,比如下载链接等

该软件依赖的其它软件或者系统库等

  1. 复现问题的详细步骤
  2. 完整的测试命令及问题复现时的所有错误信息
  3. 如果问题出在运行benchmark中,请提供准确的启动命令,包括涉及的相关参数(比如运行数据库benchmark的相关参数)

 

附录

 

 

二进制选项

 

这些选项是ExaGear二进制的实现-特定的选项。对于一般的ExaGear运行,用户应该很少需要使用这些选项。

表1
ExaGear二进制选项

类别

命令

说明

一般选项

 

 

 

 

 

–help/-h

显示包含所有exagear内部选项的描述。

–version/-v

显示产品构建版本。

-f <param>

执行给定的文件,而不是argv[0]。

–program-fd <param>

从给定的文件描述符中读取已执行的应用程序文件内容。

–use-binfmt_misc

使用binfmt_misc取代execve()实现。

–force-binfmt_misc

强制通过binfmt_misc执行execve()。

虚拟文件系统 (VFS) 选项

 

 

 

 

 

 

 

 

 

 

 

 

 

 

–path-prefix <param>

Guest FS镜像路径。

–opaths-list <param>

重写的FS元素列表的路径。如果guest对“=”符号左边的二进制文件执行execve,那么“=”符号右边的host二进制文件也被执行。

–vpaths-list <param>

被替代的FS元素列表的路径。此列表中的路径是guest可见的host路径。有关更多详细信息,以Ubuntu 18为例,请参阅host系统和guest系统共享的目录一节。

–utmp-paths-list <param>

系统utmp路径列表的路径。Utmp文件是包含C结构体的文件,在guest和host架构中,这些C结构体可能不同。这些文件需要特殊控制后在此文件中列出。

–vfs-kind <param>

fs的一级根和二级根的选择(有效值为’host-first’和’guest-first’)。

–fs-root <param>

Guest文件系统的根路径(chroot仿真)。

–hifd-base <param>

HiFd区域最高文件描述符。这个区域的文件描述符由exagear自己使用。

–tmp-dir <param>

存放临时文件的目录路径。

–foreign-ubt-binary <param>

外部guest架构的ubt路径。

–foreign-opt-binary <param>

外部guest架构的优化器的路径。

–fast-math

允许更快地执行数学计算,但在某些情况下可能导致不准确的结果。

–smo-mode (none/*fbase*/all)

强内存排序支持机制(默认启用’fbase’)。

–smo-severity (*smart*/full)

强内存排序支持机制(默认启用’smart’)。

–use_opt <param>

使用区域优化器(启用性能分析)。

–opt_fd <param>

优化器区域I/O的文件描述符。

 

修订记录

 

发布日期

修订记录

2021-04-30

第七次正式发布。文档内容更新如下:

重构文档架构,增加ExaGear Server on Ubuntu章节;

增加ExaGear Docker on Ubuntu章节。

2020-12-07

第六次正式发布。文档内容更新如下:

增加 关键特性 子章节。

2020-12-03

第五次正式发布。文档内容更新如下:

增加 获取ExaGear for Server 子章节;

调整 配置/升级/卸载ExaGear for Server 子章节目录顺序;

正文中增加对<package_version><guest_system_version>的描述。

2020-11-19

第四次正式发布。文档内容更新如下:

更新前言;统一代码描述格式。

2020-11-06

第三次正式发布。文档内容更新如下:

FAQ章节 增加Q7、Q8。

2020-10-29

第二次正式发布。文档内容更新如下:

图片规范整改更新。

2020-09-30

第一次正式发布。

 

参考文献

《二进制翻译》,https://support.huaweicloud.com/ug-exagear-kunpengdevps/kunpengexagear_06_0001.html

{{o.name}}


{{m.name}}

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/84015.html

(0)
上一篇 2021年8月12日 19:43
下一篇 2021年8月12日

相关推荐

发表回复

登录后才能评论