在Android平板上搭建Linux工作环境
目标效果
- 在Nexus 7平板上以chroot方式运行LUbuntu操作系统
- 可以运行编辑器、浏览器、终端、IDE、Octave(MATLAB替代品)等常用软件
- 能够用平板电脑完成程序的编写和编译,以及Octave调用m_map绘图等正常工作
图片展示
效果实拍

Office软件

Chrome浏览器

C/C++编程

Fortran编程

Octave运算

m_map绘图

硬件需求
- Nexus 7 II / Nexus 10 平板电脑一台
- OTG数据线、U盘(可选)
- 无线键鼠套装(蓝牙键鼠亦可)
软件需求
- 系统已root
- Android Terminal Emulator(终端模拟器)
- XServer XSDL
- SSHDroid(可选)
- Complete Linux Installer(可选)
操作步骤
- 下载img镜像以及脚本文件(下载地址)
- 在平板中新建一个名为“Ubuntu”的文件夹,将镜像解压到里面,并把脚本放进去。
- 将Terminal Emulator的“初始命令”修改为:
su -c 'sh /sdcard/Ubuntu/boot_lubuntu.sh /sdcard/Ubuntu/ubuntu.img'
- 启动XServer XSDL,选择Resolution(分辨率)为1280x720,Font Scale(字体缩放)为0.6(以 Nexus 7 II 平板为例 ,其他平板视情况调整)
- 退出并重新运行Terminal Emulator,会自动在终端下执行脚本进入Linux系统
- 连接键盘鼠标,切换到XSDL,即可使用图形界面开始工作
原理概述
知识需求
- Linux基础文件操作、软件包管理器
- 掌握WinSCP软件、Putty虚拟终端或者类似工具
基本思路
- 我们知道Android是一个基于Linux内核的操作系统;
- 也知道Linux有chroot这个命令,可以改变根目录从而进入另一个系统环境;
- 还知道可以直接把img镜像挂载为目录,并且/proc等目录也可以被“绑定”挂载;
- 所以通过各种挂载,我们就可以进入一个相当于真实Linux系统的环境了,这也就是启动脚本boot_lubuntu.sh所提供的功能。
- 然后我们在Android系统中启动XServer XSDL,并在Linux Shell中启动一个桌面环境(相当于XClient);
- 这样XServer就可以调用平板电脑的硬件资源来进行GUI界面的绘制了。
镜像细节
脚本细节
- 此处采用的启动脚本boot_lubuntu.sh修改自Complete Linux Installer软件的内置脚本,完成了镜像挂载、桌面环境启动等功能,如果需要原版作为参考,请自行利用工具从原软件中提取;
- 该脚本的参数均为可选:
sh /sdcard/Ubuntu/boot_lubuntu.sh [镜像名] [启动选项] [端口号] [ip地址]
- [镜像名]指定要作为根文件系统挂载的img文件的绝对路径或者相对路径,如果不指定,则默认尝试挂载与启动脚本同目录下的“ubuntu.img”文件,若不存在则出错
- [启动选项]的可选参数为“1、2、3、4”(默认为1),分别用于启动:
- LUbuntu桌面环境
- 简单的LXDE桌面环境
- 运行VNC服务的Linux
- 未指定环境变量的Bash Shell
- [端口号]用于指定XServer监听的端口地址,默认为“:0”;但是偶尔XServer XSDL启动后会监听别的端口比如“:1”,这时可以使用这个参数指定
- [ip地址]用于设置Synergy(这个软件用来让平板与电脑共享键盘鼠标)的服务端地址,但镜像中没有预装这个软件,仅保留参数选项
- 注意使用时不能跳过参数,例如必须指定了启动选项才能指定端口号。
后记
- 把这些东西写出来是因为之前人人上一篇转发得挺多的日志里提到过,可以把Nexus 7作为笔记本电量耗尽后的备用品,这样以后打CF也能用平板凑合。
- 但是等了很久那个作者也没有再更新相关的内容,无奈之下只能自己写。
- 前两天在Google Play上无意间看到一个应用,实现了XServer的基本功能。
- 于是意识到有了这个东西,就完全可以不关闭Android自带的UI并使用Linux。
- 网上搜了一下,基本上有现成的解决方案,以及许多制作好的镜像。
- 不过还是在此基础上,进行了一些个人的定制与修改,于是便有了此文。