环境
操作系统: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是一款二进制指令动态翻译软件,运行在ARM64服务器上,通过将x86的指令在运行时翻译为ARM64指令并执行,使得绝大部分Linux on x86应用无需重新编译就可运行在ARM64服务器上,实现低成本、快速迁移Linux on x86应用到ARM64服务器。
ExaGear安装完成后,主要有两个组件:指令翻译引擎和x86运行环境。
指令翻译引擎
ExaGear的指令翻译引擎是一个“中间件”软件解决方案,位于x86应用程序与ARMv8架构服务器之间(见图1)。x86应用启动时,ExaGear的指令翻译引擎接管x86应用的运行,使用二进制翻译技术将它们转换为兼容ARM的代码,再执行x86应用程序。对最终用户而言,整个过程是简易且透明的。
x86运行环境
x86运行环境是ExaGear创建的一个包含所有标准库、实用程序、配置文件的x86应用执行环境,这确保了x86应用程序运行所需的基础设施组件的可用性。从技术角度讲,x86运行环境是一个特定的文件目录,包含了x86库、命令、实用程序和其它系统文件(见图2)。x86应用程序的二进制文件也必须存放于x86运行环境中。
关键特性
- 支持多种部署方式:支持在物理机、虚拟机、容器等平台上部署;
- 部署简单:一键式快速安装,x86应用部署和运行与迁移前保持一致;
- 支持多版本Linux OS:目前支持CentOS 7、CentOS 8、Ubuntu18、Ubuntu20、OpenEuler 20.03,并且根据用户需求,未来可定制支持更多Linux OS发行;
- 低损耗: 大多数场景的应用,翻译损耗在20%以内。
技术约束
- 只支持Linux on x86应用,不支持Windows应用,不支持Linux 驱动、虚拟化平台等内核程序的翻译。
- 支持x86通用指令和SSE、AVX扩展指令,不支持AVX-2和AVX 512指令。
- 当前只支持CentOS 7、CentOS 8、Ubuntu18、Ubuntu20、OpenEuler 20.03。
- x87(浮点)80位精度支持受限。
- Linux on x86应用,在运行时涉及的文件或文件夹的绝对路径的字符串长度不大于4KB。
- 在64KB page size的Linux系统上,部分Linux on x86应用可能存在4KB page size的兼容性问题。
- 不支持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。
注意:
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
- 运行guest系统
- 安装Linux on x86应用程序
- 运行Linux on x86应用程序
- 配置ExaGear for Server on Ubuntu
- 升级ExaGear for Server on Ubuntu
- 卸载ExaGear for Server on Ubuntu
安装ExaGear for Server on Ubuntu
包含如下五个安装包:
- exagear-core-x32a64-<package_version>_arm64.deb
- exagear-core-x64a64-<package_version>_arm64.deb
- exagear-guest-for-ubuntu-<os_version>-x86_64-<package_version>_all.deb
- exagear-integration-<package_version>_all.deb
- 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
须知:
上述命令中的<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机器上一样。
须知:
用户帐号在host系统和guest系统之间是共享的。在guest系统中增加或删除用户时,host上也会进行相应的修改。/home目录也在host系统和guest系统之间共享(更多host和guest系统之间共享目录的详细信息,请参考配置ExaGear for Server on Ubuntu)。
运行exit命令即可退出guest会话。
exit
至此,你又回到了host系统。执行如下命令:
arch
显示:aarch64。
说明:系统一般默认的是bash shell,调用exagear之前,用户还可以通过设置SHELL环境变量在guest系统中使用自己偏好的shell,比如csh,ksh等。
安装Linux on x86应用程序
须知:
- 禁止在同一台机器上同时安装同一服务的x86和ARM版本。另外,强烈建议不要从guest系统中运行host服务,因为这种操作未经测试,也不被支持。
x86或x86-64应用程序以及依赖库的安装等,需要在guest环境中进行。推荐使用yum工具安装x86应用,首先要配置yum源,需要进入guest环境后进行配置,相关操作和在x86机器上的操作一样。
说明:如果你需要在本地网络中通过/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会话中,你有如下两种选择:
- 在同一行中输入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
默认配置下,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
说明:在guest系统中Linux on x86 32位和64位应用程序的安装和运行与在支持多进制的x86计算机上的运行是相同的。
配置ExaGear for Server on Ubuntu
host系统和guest系统共享的目录
ExaGear Server整个文件系统对host系统应用程序可见,只有guest系统文件对Linux on x86应用程序可见。
配置文件/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配置文件的操作步骤如下:
- 确保host系统中存在所需的目录(或文件)。
- 在guest系统中创建同名的假目录(或文件)。
- 将目录(或文件)的完整路径另取一行添加到配置文件opt/exagear/images/ubuntu-<os_version>-x86_64/.exagear/vpaths-list中。
请注意,配置文件的目录应以“/”结尾
- 方法2:将host系统要共享的目录挂载到guest系统
以/newdir为例,使用coreutils中的mount实用程序将host系统要共享的目录挂载到guest系统:
- 在x86运行环境中创建挂载点:
sudo mkdir /opt/exagear/images/ubuntu-<os_version>-x86_64/shareddir
- 在x86运行环境中创建挂载点:
-
- 将newdir挂载到shareddir挂载点下:
sudo mount --bind /newdir /opt/exagear/images/ubuntu-<os_version>-x86_64/shareddir
说明:在卸载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 Server将安装在旧版本上。所有guest系统中的Linux on x86 应用程序及ExaGear Server的相关配置均将保留
卸载ExaGear for Server on Ubuntu
须知:
卸载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选项启用的附加信息。
说明:- 只有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源。
技术支持
在使用过程中遇到问题,需提供技术支持时,请反馈如下信息至指令翻译工具论坛。
- 硬件信息
|
信息类型 |
获取命令 |
|---|---|
|
CPU信息 |
lscpu 和/或者 cat /proc/cpuinfo |
|
RAM信息 |
cat /proc/meminfo 和 free -h |
|
驱动信息 |
mount sudo parted -l sudo fdisk -l df -h |
- 操作系统信息
|
信息类型 |
获取命令 |
|---|---|
|
操作系统整体信息 |
cat /etc/os-release |
|
内核信息 |
uname -a |
|
系统页大小 |
getconf PAGE_SIZE |
|
内存映射信息 |
cat /proc/self/maps cat /etc/issue |
- 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 |
- 使用ExaGear运行的软件信息
|
信息类型 |
|---|
|
运行软件的完整版本信息 |
|
获取该软件的方式,比如下载链接等 |
|
该软件依赖的其它软件或者系统库等 |
- 复现问题的详细步骤
- 完整的测试命令及问题复现时的所有错误信息
- 如果问题出在运行benchmark中,请提供准确的启动命令,包括涉及的相关参数(比如运行数据库benchmark的相关参数)
附录
二进制选项
这些选项是ExaGear二进制的实现-特定的选项。对于一般的ExaGear运行,用户应该很少需要使用这些选项。
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
{{m.name}}
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/84015.html