ExaGear for Server 为用户提供一个虚拟的x86 Linux OS环境,支持运行x86应用,部署运行在Arm64 Linux OS上。本章主要介绍ExaGear for Server的基本操作和使用,包括ExaGear for Server的获取、安装、运行、配置、升级和卸载, 以及x86应用程序在ExaGear上的安装和运行。
系统要求
Host系统需满足如下要求:
CPU:Armv8架构;
RAM:512 MB及以上;
磁盘空间:默认安装路径为/opt/exagear,需保证该目录所在磁盘的空余空间满足如下条件:
600 MB: 含x86系统库和基础文件系统,在ExaGear安装包中提供,
用户所运行的x86应用程序需要额外占用空间,包括依赖库文件和相关系统配置文件;
操作系统:64 位Linux操作系统(CentOS、Ubuntu),允许的虚拟地址长度至少为48bit。
开启动态二次优化功能,需要满足如下要求:
CPU: Armv8.2架构具备且开启Statistical Profiling Extension(SPE)扩展功能;
Linux内核版本4.16及以上;
用户权限检查
确保已获取执行后续操作所需的sudo权限或者以root用户完成后续操作。
安装前,检查host系统的/opt/exagear目录是否存在。如存在,用户可根据实际情况,选择在当前版本上进行升级,参见“升级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
执行以下命令安装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应用程序。
运行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等。
x86或x86_64应用程序以及依赖库的安装等,需要在guest环境中进行。推荐使用apt工具安装x86应用,首先要配置apt源,需要进入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
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
host系统和guest系统共享的目录
ExaGear Server整个文件系统对host系统应用程序可见,只有guest系统文件对Linux on x86应用程序可见。
图1 host系统和guest系统的文件系统(以Ubuntu 18为例)
配置文件/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
将newdir挂载到shareddir挂载点下:
sudo mount --bind /newdir /opt/exagear/images/ubuntu-<os_version>-x86_64/shareddir