在安卓手机上跑Linux桌面

多年后,当我回到大学,我依然能回想起那年,被大一不能带电脑的沙雕规定支配的愤怒

背景

每当我有事要做却不想做。。。就会折腾一些奇奇怪怪的东西。。。最近摸鱼成果:在安卓上运行完整的Linux桌面。。。啥你说Run a Linux desktop on Android有啥用?当然是To code anywhere啦!

教程

1. 安装termux

详细过程略,随便去一个应用市场应该就能下到。如果能给root权,建议授予root权限,并且在root权限下执行所有安装命令 termux下进入root权限需要安装tsu包 

2. 安装AnLinux

过程略,这个App主要提供安装的具体脚本。

3. 安装一个Linux发行版

  1. 启动AnLinux,并点击choose选择发行版,笔者使用的Debian 
  2. 点击copy以复制app显示的命令,这时候会弹出广告,直接返回就好了。(笔者复制到的命令:pkg install wget proot -y && wget https://raw.githubusercontent.com/EXALAB/AnLinux-Resources/master/Scripts/Installer/Debian/debian.sh && bash debian.sh
  3. 将命令在Termux中粘贴并执行,注意,如果是用root权限安装,记得把当前目录切换到非root环境下的那个目录(命令:cd /data/data/com.termux/files/home/),以免根目录混乱。 
安装完成后就可以执行./start-debian.sh以进入debian了: 

4. 安装一个Linux桌面

  1. 再次打开AnLinux并从侧边划出的菜单选择Setup Desktop
  2. 第一个Choose选择刚刚安装的发行版,第二个选择要装的桌面环境,笔者选择debian+xfce
  3. copy命令,并复制到发行版的终端中执行。注意,选择的发行版要和启动的发行版对应,否则可能出现问题(笔者复制到的命令:wget https://raw.githubusercontent.com/EXALAB/AnLinux-Resources/master/Scripts/DesktopEnvironment/Apt/Xfce4/de-apt-xfce4.sh && bash de-apt-xfce4.sh) 
  4. 这里一键脚本的命令是安装的VNC来实现的图形化,中途会要求设置vnc秘密,注意别输错了。安装完成后使用命令vncserver-start来启动服务端,然后随便打开个vnc客户端进行连接。根据安装完成后的提示,端口通常为5901

问题

你以为这就完了,那我还写个鬼的教程,直接说这俩app真好用就得了。 这样安装完后确实能用了,装个codeblocks,写代码没问题。再装个firefox,浏览网页也凑合,中文乱码的问题装一下fonts-noto-cjk就解决了。但是,如果是从电脑端远程上手机,一旦涉及到qt程序,键盘输入完全错位,而且vnc下fcitx起不来,无法进行中文输入,使用起来很不舒服。 经过一段时间的摸鱼探索,终于找到了个奇怪的解法:不用vnc。用xrdp,既没有键盘错位,还能输中文。
# apt install xrdp
# systemctl enable xrdp # systemctl start xrdp 习惯性systemctl,然并卵( 好在debian系还能这样操作:
/etc/init.d/xrdp start/etc/init.d/xrdp stop
start了xrdp之后,安卓端可以用microsoft remot desktop来连接,windows可以用自带的远程桌面来连接。session选择sesman-any,ip填127.0.0.1,然后输入用户名和密码,可以使用root来登陆(如果没有设置root密码可以通过passwd命令来设置)。
装上fcitx并启动,美滋滋

已知问题

声音好像还是没办法播放出来,虽然有root权限,有些文件依然无权访问,比如主目录下的thinclient_driver。部分程序依然无法运行,比如chromium,比如htop。不过总算是在手机上完整地运行了桌面系统,配上小键盘,写代码还算舒适。 上一张全家福:

Deepin 安装Anbox

1.安装snap

$ anbox session-manager

2.安装相关的包

$ wget https://launchpadlibrarian.net/333439595/anbox-modules-dkms_9~xenial1_all.deb
$ wget https://launchpadlibrarian.net/333439593/anbox-common_9~xenial1_all.deb$ sudo dpkg -i anbox*.deb

3.安装anbox

$ sudo snap install core$ sudo snap install --edge --devmode anbox
如果网上不好的同鞋可以考虑proxychains
$ sudo proxychains snap install core
$ sudo proxychains snap install --edge --devmode anbox
安装完成后不造为啥启动失败,重启一下竟然就好了

4.启动anbox

如果有快捷方式,那很好 
但是如果没有,启动anbox就不怎么直观了 
首先打开一个terminal
$ anbox session-manager
然后再打开一个terminal
$ anbox launch --package=org.anbox.appmgr --component=org.anbox.appmgr.AppViewActivity
启动完的效果图 

5.给anbox安装app

事先下载好apk,切换到apk所在目录,启动anbox,执行下面命
$ adb install firefox.apk