华为ExaGear简介:https://support.huaweicloud.com/ug-exagear-kunpengdevps/kunpengexagear_06_0003.html
ExaGear是一款二进制指令动态翻译软件,运行在ARM64服务器上,通过将x86的指令在运行时翻译为ARM64指令并执行,使得绝大部分Linux on x86应用无需重新编译就可运行在ARM64服务器上,实现低成本、快速迁移Linux on x86应用到ARM64服务器。
这非常好。
但有一点不好:华为ExaGear只能在华为CPU上运行,在其他CPU上运行会报错“Unsupported CPU detected”。
不过,只要把可执行文件稍微修改一下,绕过这个CPU类型检测,就能让它在飞腾CPU上运行了,方法在下面。
备注:这篇教程也做为华为鲲鹏CPU安装ExaGear的教程,不过鲲鹏CPU本身就是华为的,所以不需要执行破解那一步。
华为ExaGear与基于box86的“Wine游戏助手ARM64测试版”不兼容,如果你安装了“Wine游戏助手ARM64测试版”,请先卸载它,再安装华为ExaGear。
卸载“Wine游戏助手ARM64测试版”的方法:
sudo apt purge net.winegame.client
安装华为ExaGear之后,可以在exagear容器里安装x86_64
版的“Wine游戏助手”,教程在这里。
注意:华为ExaGear运行32位游戏的性能很差,War3不到2帧。不过改用Eltechs的ExaGear运行32位游戏,性能就会好很多,相关教程正在编写中。
华为ExaGear对Linux内核有要求,不兼容内核无法正常启动华为ExaGear。
目前已知飞腾UOS的内核是兼容的,但是银河麒麟的内核似乎不兼容。
已知树莓派官方64位系统的内核不兼容。
替换内核并不难,教程正在编写中。
需要CONFIG_ARM64_VA_BITS_48=y
的内核。
下载并安装华为exagear:
https://support.huaweicloud.com/ug-exagear-kunpengdevps/kunpengexagear_06_0009.html
建议银河麒麟、deepin和UOS安装ExaGear_Server_for_Ubuntu20
里的包。
安装方法:
sudo apt install ./*.deb
尝试运行exagear
命令,报错:
如果你这一步执行完没有报错,直接进去了,就不需要执行第5步,可直接跳到第6步。
# 切换到root权限
sudo -i;
# 检测是否需要破解
grep ExaGear /proc/cpuinfo >/dev/null && echo '你在exagear内,请直接跳到第6步。' || { grep 0x0000000048 /sys/devices/system/cpu/cpu0/regs/identification/midr_el1 >/dev/null && echo '你用的是华为CPU,不需要破解,请直接跳到第6步。' || echo '你用的不是华为CPU,需要破解,请执行下面的命令。'; };
# 破解 ubt_x32a64_al
f='/opt/exagear/bin/ubt_x32a64_al';
mv "$f" "$f.origin";
perl -pe 's/\x{02}\x{7C}\x{18}\x{53}(?!\x{1F}\x{5C})/\x{02}\x{09}\x{80}\x{D2}/g' < "$f.origin" > "$f";
chmod +x "$f";
# 破解 ubt_x64a64_al
f='/opt/exagear/bin/ubt_x64a64_al';
mv "$f" "$f.origin";
perl -pe 's/\x{02}\x{7C}\x{18}\x{53}(?!\x{1F}\x{5C})/\x{02}\x{09}\x{80}\x{D2}/g' < "$f.origin" > "$f";
chmod +x "$f";
exagear
命令进入x86容器环境,就可以安装x86软件包了。(截图只是功能展示,不需要执行截图中的命令。要执行的操作从6.1开始。)
不过系统语言是英文。切换语言的方法如下:
Ubuntu默认软件源下载速度很慢,所以安装软件包之前先换源:
# 首先进入exagear
grep ExaGear /proc/cpuinfo >/dev/null || exagear || echo '进入exagear失败,请先执行前面的步骤,正确安装exagear。在解决该问题前不要继续。'
# 然后下面3个命令任选一个执行,如果一个速度不满意就换另一个。下面执行 apt install 步骤的时候就能看出速度快不快。
# 网易
sudo sed -i 's@[a-z0-9.-]*\.[a-z][a-z][a-z]*/ubuntu@mirrors.163.com/ubuntu@g' /etc/apt/sources.list
# 阿里云
sudo sed -i 's@[a-z0-9.-]*\.[a-z][a-z][a-z]*/ubuntu@mirrors.aliyun.com/ubuntu@g' /etc/apt/sources.list
# 清华
sudo sed -i 's@[a-z0-9.-]*\.[a-z][a-z][a-z]*/ubuntu@mirrors.tuna.tsinghua.edu.cn/ubuntu@g' /etc/apt/sources.list
# 首先进入exagear
grep ExaGear /proc/cpuinfo >/dev/null || exagear || echo '进入exagear失败,请先执行前面的步骤,正确安装exagear。在解决该问题前不要继续。'
# 更新软件包列表
sudo apt update;
# 安装字体和语言包
sudo apt install -y locales fonts-noto-cjk fonts-noto-cjk-extra language-pack-zh-hans;
# 选择语言
sudo dpkg-reconfigure locales;
执行sudo dpkg-reconfigure locales
后,你会看到这样的界面,无需修改选项,直接确认即可。用方向键或者Tab导航到Ok上,然后按空格或者回车确认。
然后在这里选“zh_CN.UTF-8”并回车确认。
等命令执行完(需要一段时间),关掉终端再重新打开一个,命令的语言就会变成中文了。
exagear
apt