box86 exagear

box86

box86编译的时候是静态编译,所以编译好后一个可执行没任何依赖直接拷贝走就能运行,注意,box86需要32位的arm库(armhf),麒麟系统有打包好的armhf库的包,可以直接用,缺的再单补。

box86做指令集转移的时候使用了大量的32位arm库来做功能替代,所以性能,尤其是图形,理论上要高很多。

WAR3启动的时候,使用

/usr/local/box86/bin/box86 /opt/cxoffice/bin/wineloader  /home/user/war3/Warcraft3/WAR3/Frozen\ Throne.exe -opengl

这种命令启动,由于客户端加了opengl参数,在linux下,基本上相当于调用原生显卡的加速性能了。

如果提示关于OPENGL库找不到的情况,加变量LIBGL_DEBUG=verbose打印一下就解决了。

上面示例用了麒麟系统自带的crossover,使用wine官网下载的32位版本的wine二级制包安装也是一样的效果。

wine-stable_6.0.4_focal-1_i386.deb
wine-stable-i386_6.0.4_focal-1_i386.deb
winehq-stable_6.0.4_focal-1_i386.deb

一般下载这三个包,解包后放一起就可以调用了。

如果程序是.net写的,那么需要单独下载wine-mono包来支持,实际测试box86 加载wine跑.net程序效率较低,应该是真的做的全部转译了。

2023.05.27update: .net程序在wine环境下可以有2个环境来打开,wine-mono和MS .net framwork。所以有wine-mono可以不用装微软.net,反之亦然。不过效率和稳定性有待做对比。

exagear

exagear一般常见于手机上,用来跑x86游戏的。这个软件原本应该是 国外http://eltechs.com/ 开发的,但最近国内HW的网站放出了带有版权申明的二进制包,只能跑在鲲鹏CPU上。不知道是不是收购了还是买了在中国的独家发行权。

下载地址

https://mirrors.huaweicloud.com/kunpeng/archive/ExaGear/

github上找到一个

https://github.com/skilbjo/exagear

不过国内也有破解这个版本的。

https://my.oschina.net/chipo/blog/5176302

https://hu60.cn/q.php/bbs.topic.102147.1.html

exagear本身带有一套虚拟文件系统虚拟环境,对应的程序默认应该没做加速,感觉exagear做的是虚拟环境,然后再做的转译。但具体细节原理还没仔细研究,后面有时间研究下。

我实际用麒麟系统自带的exagear在飞腾CPU上跑war3,感觉的确要卡一些。

后面有测试体会再记录吧,还真没怎么测试过。

BINFMT冲突问题处理

在Linux上,有个binfmt机制,可以用来设置什么类型文件用什么程序打开,box86 以及 exagear都是用来打开x86环境下程序的,因此,只要配置好这个,就可以直接在arm命令行下直接输入x86下编译的二进制程序就可以直接调用box86或者exagear来加载x86的程序,不需要输入box86的全路径来调用x86的二进制程序了,

具体的可以百度或者参考其他人写的介绍,如下面这个兄弟写的:

https://blog.csdn.net/whatday/article/details/88299482/

但问题坏就坏在box86和exagear都是一样的,同时注册会导致不确定会用哪个程序来转译。因此有必要看一下如何开关。

UOS或者debian系,可以直接查看

/proc/sys/fs/binfmt_misc

这个路径下的文件,具体含义见上面那个链接。

可以发现

PC:/proc/sys/fs/binfmt_misc$ cat x86 
enabled
interpreter /usr/local/box86/bin/box86
flags: 
offset 0
magic 7f454c4601010100000000000000000002000300
mask ffffffffffffff00fffffffffffffffffeffffff
PC:/proc/sys/fs/binfmt_misc$ cat x86_32_exagear_guest 
enabled
interpreter /opt/exagear/bin/ubt_binfmt_misc_wrapper_x86_32
flags: POC
offset 0
magic 7f454c4601010100000000000000000002000300
mask fffffffffffffffcfffffffffffffffffcffffff

X86 x86_32_exagear_guest 这两个文件内magic都是一样的,需要修改下。

简单看了下有2个地方可以影响这个目录下的内容:

  1. systemd-binfmt.service 服务,配置文件在/etc/binfmt.d

  1. 命令行直接注册,具体可以参考上面那个链接,写的比较清楚了。在uos上安装某些windows程序,就会自动把box86 exagear都安装上。exagear有2个服务,也是做了注册exagear-x86_64-binfmt.service exagear-x86_32-binfmt.service 根据服务跟踪一下,发现就是脚本内命令行注册,要停止直接 sudo /usr/bin/exagear-manage binfmt_misc x86_32 disable 或者禁用掉服务就好了。

未完待续。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值