前几日看到有一种微型卡片主机树莓派,基于arm架构的CPU,使用arm Linux作为系统,非常有趣。突然想到,既然大部分Android设备也是基于arm CPU,那么可以在上面安装Linux吗?直接刷机安装难度是十分大的,主要的驱动问题就难以解决。通过一番必应谷狗,发现还真有方法,那就是GitHub上面的一个开源项目--anlinux,可以帮助你完整模拟Linux环境。
对于Android设备,通常我们可以使用termux来部分地模拟Linux环境。termux官方也发布了C/C++、Python、rust、PHP等运行环境,可以运行部分不那么依赖于CPU架构的并且不需要图形界面的程序。但是termux使用的目录结构是和Android设备混合的,并未模拟这个Linux目录环境,如果要使用系统的完整目录权限势必需要root整个设备,而且termux也无法直接运行桌面环境。得益于proot项目,termux可以在自己的app沙盒内模拟完整的Linux目录而无需使用Android真实环境目录。GitHub用户EXALAB基于此项目制作了诸多Linux镜像并以app的形式发布出来,这就是AnLinux (https://github.com/EXALAB/AnLinux-App) 。它可以帮助我们下载制作好的Linux镜像并且配置成完整的Linux环境。
本人所使用的试验机器是三星T819平板,3G运行内存,属于一款较为老旧的设备,也没有root。基本能够运行Ubuntu xfce桌面。试验了下桌面应用Firefox和GIMP,没有明显的卡顿,由于termux只支持字符界面,运行桌面环境需要做VNC服务,界面跑起来存在延迟的不足。
下面是实验的步骤:
首先下载安装所需的3个Android app:termux、VNC viewer、AnLinux。termux和vnc viewer在国内的应用市场上也能找到。Anlinux可以去GitHub上下载最新的版本。由于下载镜像使用的是http://raw.githubusercontent.com的域名,请保证你的设备可以访问到一些不存在网站,否则下载镜像的时候会出现404错误 。
安装完成app后打开termux和anlinux。在anlinux侧边栏打开dashboard选项,这时候会出现安装Linux镜像指导。一共3个步骤,首先选择要安装的镜像(我选的Ubuntu,因为熟悉 )。
然后anlinux会给出一行命令需要在termux中运行。点击copy按钮把命令复制粘贴到termux中运行。可以看到,这个命令其实就是在termux中安装配置proot并到githubusercontent上面下载一个脚本并运行。然后就是脚本自动下载配置的过程了。Ubuntu镜像大约需要60m的空间。(为啥这么小,我猜可能就是模拟了目录环境和一些常用命令,底层驱动内核啥的还是使用的Android设备的程序)
完成后就是启动Linux环境了,可以看到termux默认工作目录内多了几个脚本和目录,那就是用来启动环境的脚本和模拟环境使用的目录文件。执行./start-ubuntu.sh脚本就可以启动Linux环境了。
至此,整个Linux环境就算安装启动完成了,默认是root用户,工作目录在/root。整个Linux的环境都是在termux的ubuntu-fs目录中进行操作,甚至不会对termux产生任何影响。在此Linux 环境中也可以使用apt来安装程序(我安装的是Ubuntu,如果你安装了Fedora一系的发行版,改成yum/dnf就行了,其他的类似)。使用exit命令会退出Linux环境,回到termux环境中。
需要注意,在这里不能直接安装桌面环境,我们使用anlinux中的提供的方式帮我们安装配置桌面环境。
打开anlinux的侧边栏,切换到Desktop Environment选项。界面为我们展示了4个步骤,先选择要适配的系统及要安装的桌面环境,因为我安装的是Ubuntu,第一步选择Ubuntu,你需要选择你自己已经安装的系统。第二步我选择了anlinux推荐的桌面系统xfce。
完成了选择后anlinux又是给出了一个命令,点击copy按钮把命令复制粘贴到已经安装的Linux环境中并执行。注意,是在Linux环境中执行命令,而不是termux中。此安装过程大约会占用500M的空间,安装xfce桌面并配置VNC服务。最后是生成了两个命令,vncserver-start用来启动桌面服务、vncserver-stop用来停止桌面服务。
桌面安装过程完成后使用vncserver-start来启动服务,初次启动会提示我们配置密码,设置完后服务就在后台驻留了,并提示服务的地址和端口号。
在termux字符界面上无法显示桌面的效果。这时候我们需要使用VNC viewer来连接桌面服务。VNC viewer是一个用来远程连接桌面的Android app,你还可以使用它来连接你的其他的主机。打开VNC viewer后点击右下角的+按钮,添加一个服务连接,由于服务就是在本机上开启的,填入 localhost:端口号 ,连接的名称可以随意命名。点击创建,会提示输入密码,输入我们安装服务时创建的密码即可。然后就能看到桌面环境了。
VNC viewer中桌面环境可以使用点击滑动模拟鼠标,可以使用Android系统的虚拟键盘作为输入设备,而且无需在Linux系统中单独安装汉语输入法,VNC viewer会把Android系统输入的的汉字传进系统。下面是我安装并启动了Firefox和GIMP测试。需要注意,由于此Linux环境使用的arm CPU,对于X86平台的应用是无法正常安装运行的,比如著名的Python发行版anaconda集成了Intel的特殊计算库,就无法在此Linux系统上使用。
退出VNCviewer即可断开连接,但是Linux的桌面服务仍然驻留。回到termux app 中,在Linux中输入vncserver-stop命令即可停止桌面服务及VNC服务。
由于移动设备和桌面工作站设备的工作性质不同,其实本教程中的桌面环境更类似于玩具性质,但是拿来偶尔调试一下网页、编辑一下图片还是可以的,可以享受到桌面软件的强大功能。至于视频编辑、3d设计之类的就不堪重负了。比如本人最近正在学习dart语言,这个老旧平板设备刚好就能拿来在外出不方便带电脑时调试网页应用,一个小挎包就能装下。你也可以开发出自己的新功能,让老旧的手机发挥新功能。