使用Exagear Desktop在ARM Chromebook上运行x86程序

关于 Exagear Desktop

有 ARM Chromebook 使用经验的朋友们应该都知道 ARM Chromebook 在可折腾性上要比 x86 的 Chromebook 要差上不少,最主要一个原因就是在 Crouton 下的 ARM Linux 无法运行很多流行的 x86 应用程序。

之前我写过一篇在 Raspberry Pi 上运行 x86 Sopcast 程序的文章,这个主要是使用 QEMU 的用户模式实现在 ARM Linux 上运行 x86 的应用程序,但这种方式的主要问题是 QEMU 的性能比较差。一个比较好的消息是国外的 Eltechs 公司推出的 Exgear Desktop 软件宣称可以在 ARM Linux 上以接近 x86 原生的性能运行 x86 Linux 程序,综合性能是 QEMU 的 5 倍。这样对于我的三星 ARM Chromebook 来说可是相当有用的,因此考虑买一个授权(你没看错,Exagear Desktop 是收费软件,根据设备不同需要 20-30 美元)看看实际效果。

有关 Exagear Desktop 的介绍可以参考 Eltechs 的介绍页面:

http://eltechs.com/product/exagear-desktop/

花了 30 美元购买 Exagear Desktop 之后 Eltechs 会将软件下载方式及授权文件以邮件方式发过来,通过 Google Drive 下载安装。

安装 Exagear Desktop

安装之前可以了解下 Exagear Desktop 的系统概念,运行 ARM Linux 的主机系统被称为 host system,需要运行的 x86 系统被称为 guest system,首先需要先确认所使用的 ARM 设备是否满足要求:

  • ARMv6 或 ARMv7 CPU;
  • 512MB 或更多的内存;
  • Ubuntu 12.04 14.04 或者 Debian 之类的系统

上面的几个要求对于 ARM Chromebook 没有压力了,如果想省事可以直接使用 Crouton 安装 Ubuntu 系统使用。这里我使用 XUbuntu 14.04 armhf 系统测试 Exagear Desktop 的效果。

解压缩 Exagear Desktop 的安装包,可以看到类似这些文件:

chronos@localhost ~ $ ls exagear/
eltechs_exagear_desktop_1.1_guide.pdf  exagear-guest-debian-7-wine2g_3_all.deb  exagear-mem2g_2254-1_armhf.deb
exagear_2254-1_armhf.deb               exagear-guest-ubuntu-1204lts_9_all.deb   install-exagear.sh
exagear-guest-debian-7_3_all.deb       exagear-guest-ubuntu-1404lts_1_all.deb   README

Exagear Desktop 提供了 Debian 7、Ubuntu 12.04、Ubuntu 14.04 等几种不同的 x86 系统,一般按照 user guide PDF 文件的介绍运行 install-exagear.sh 脚本就可以自动完成安装,中间会提示你安装哪种类型的 x86 guest 系统,选择之后会自动通过网络加载安装 x86 的应用包。

安装完成之后运行 exagear-ls 命令可以查看已经安装的客户机系统,直接运行 exagear 命令就可以进入 x86 客户系统,进行 x86 环境之后可以直接运行或安装 x86 的应用程序。

关于 binfmt_misc

Eltechs 建议为了达到无缝运行 x86 程序的效果(特别是能更好的支持运行 需要 SUID 或者 SGID 的 x86 程序),ARM Linux host 系统里最好能支持 binfmt_misc

不过 Chromebook 上的 Linux kernel 一般没有自带这个,需要自己编译,可以参考我之前写的文章 在Koding云平台上编译Chromebook kernel 自己编译 Chromebook 下的 binfmt_misc 模块。

另外由于 binfmt_misc 没有默认在 Chromebook kernel 中,这样即使加载手工 binfmt_misc 模块之后也是没有 /proc/sys/fs/binfmt_misc 目录的,你需要在 Crouton 等 ARM Linux host 系统中创建 /var/binfmt_misc 目录,这样 Exagear Desktop 服务在启动时才可以自动挂载并启用 binfmt_misc 支持(具体可以参考 /etc/init.d/exagear 服务脚本)。

另外我在 /etc/init.d/exagear 服务脚本里加了一条自动加载 binfmt_misc 模块的处理(Chromebook 的 Crouton 上仍然需要自行编译并安装到系统模块目录中):

[ -d /sys/module/binfmt_misc ] || modprobe binfmt_misc

总结

最后从我最近简单的测试情况来看,Exagear Desktop 对于 x86 程序的兼容性做的还是不错的,平常用的 Sublime Text、Skype 之类的软件可以正常运行,TeamViewer 用起来似乎也无碍,虽然我最想用的 Visual Studio Code 还是运行不了有点遗憾。实际 x86 程序的运行速度也是比较接近 ARM 程序的体验呢。

最后放张 Sublime Text 在我的三星 ARM Chromebook 上的运行效果:

Sublime Text on ARM Chromebook

祝各位玩的开心~~~