在Termux中安装完整Ubuntu:打造移动Linux开发环境

在Termux中安装完整Ubuntu:打造移动Linux开发环境
1. 项目概述为什么要在Termux里装完整Linux如果你手头有一台闲置的安卓手机或者想在通勤路上、没有电脑的场合也能临时处理一些开发任务那么Termux绝对是个宝藏应用。它本质上是一个无需root权限的安卓终端模拟器和Linux环境让你能在手机上运行一个功能相当完整的命令行环境。但原生的Termux环境是基于Android的其软件包库apt和文件结构与标准的Linux发行版如Ubuntu仍有差异。对于一些依赖特定库版本、或需要完整systemd服务、特定桌面环境的项目原生Termux就显得力不从心了。这时“在Termux中安装完整版Linux”就成了一个非常实用的解决方案。我们借助proot-distro这样的工具可以在Termux内部创建一个独立的、隔离的Linux发行版用户空间。这就像是在你的手机里开了一个“虚拟机”更准确说是容器里面运行着一个纯净的Ubuntu系统。你可以在这个Ubuntu里使用apt安装任何Ubuntu官方仓库支持的软件运行Python、Node.js、Docker需要特殊配置、甚至搭建小型服务器体验几乎与PC上的Ubuntu终端无异。这个方案的魅力在于“完整”和“便携”。你得到的不是一个阉割版而是一个拥有独立包管理、独立文件系统的真实Ubuntu。结合Termux强大的终端能力支持键盘、多窗口和安卓设备的便携性它瞬间变成了一台口袋里的Linux服务器或开发机。无论是学习Linux命令、测试脚本、运行轻量级服务还是作为紧急情况下的备用开发环境都极具价值。2. 核心工具解析proot-distro是如何工作的在深入安装步骤前有必要了解一下我们依赖的核心工具proot-distro。理解其原理能帮你更好地排查后续可能遇到的问题。proot本身是一个用户空间的“chroot”实现。传统的chroot命令需要root权限来改变进程及其子进程的根目录从而将其限制在某个特定的目录树下实现环境隔离。而proot通过ptrace系统调用模拟了chroot的功能完全在用户空间运行因此不需要root权限。这就是为什么我们能在非root的安卓手机上实现类似容器的效果。proot-distro则是一个基于proot的发行版管理器。它简化了在Termux中安装、管理和登录不同Linux发行版的过程。它的工作流程大致如下下载发行版根文件系统proot-distro会从预配置的镜像源下载目标发行版如Ubuntu的压缩根文件系统rootfs归档文件。这个rootfs包含了该发行版最基础的文件和目录结构。解压与安装将下载的rootfs解压到Termux的某个特定目录下例如$PREFIX/var/lib/proot-distro/installed-rootfs/ubuntu。提供登录命令安装后proot-distro会生成一个便捷的命令如proot-distro login ubuntu。执行这个命令时它会调用proot并配置一系列参数--rootfs: 指向解压后的Ubuntu根文件系统目录。--bind: 将Termux的某些目录如/sdcard挂载到Ubuntu环境中实现文件共享。模拟关键的系统文件如/proc,/sys并设置环境变量如HOME,USER,PATH使得Ubuntu环境能正确运行。当你执行登录命令后你进入的shell看起来是在Ubuntu里所有操作都发生在那个隔离的根文件系统中与宿主Termux环境互不干扰。注意proot模拟的环境与真正的虚拟机或完整容器如Docker仍有区别。它无法虚拟化内核因此所有进程仍然运行在安卓内核之上。这意味着你不能运行需要特定Linux内核模块的软件。无法直接使用systemd但可以通过proot参数进行有限模拟。某些低级别系统调用可能被限制。但对于绝大多数命令行工具、编程语言解释器、编译器和网络服务来说这已经完全够用了。3. 前期准备与Termux基础配置工欲善其事必先利其器。在安装Ubuntu之前我们需要确保Termux本身处于一个健康且高效的状态特别是国内网络环境下的访问速度。3.1 Termux的获取与基础更新首先你需要安装Termux。强烈建议从F-Droid商店下载Termux及其插件如Termux:API。Google Play商店的版本可能已经过时且不再维护。F-Droid上的版本由社区维护更新更及时。安装完成后打开Termux进行第一步也是最重要的一步更新软件包列表并升级现有软件。在Termux原生环境中执行pkg update pkg upgrade系统会提示你是否继续输入y并回车。这个过程会更新pkg的源列表并升级所有已安装的包。请保持网络通畅。3.2 配置Termux的存储权限为了能在Ubuntu环境和手机内部存储如下载文件夹之间交换文件需要授予Termux存储权限。在Termux中执行termux-setup-storage执行后你的手机会弹出权限请求窗口点击“允许”。成功后Termux会在你的家目录~/下创建一个名为storage的符号链接。通过它你可以访问手机存储~/storage/shared通常对应你的手机内部存储根目录/sdcard。~/storage/downloads对应下载目录。其他如DCIM、Pictures等目录也会被链接进来。这个storage目录在后续安装Ubuntu时可以通过proot的绑定功能映射到Ubuntu内部实现双向文件访问。3.3 替换Termux的APT软件源关键加速步骤Termux默认的软件源服务器可能在国外导致pkg update速度极慢甚至失败。为了获得流畅的体验我们需要将其替换为国内镜像源。这里以清华大学的镜像源为例。编辑Termux的源列表文件pkg install vim -y # 或者使用 nano vim $PREFIX/etc/apt/sources.list将文件内容全部删除替换为以下内容# The termux repository mirror from TUNA: deb https://mirrors.tuna.tsinghua.edu.cn/termux/apt/termux-main stable main保存并退出编辑器在vim中按Esc后输入:wq回车。更新软件包列表验证源是否生效pkg update你应该能看到从mirrors.tuna.tsinghua.edu.cn拉取数据的进度速度会有显著提升。实操心得除了清华源还可以考虑北京外国语大学、南京大学等镜像源。如果某个镜像同步不及时可以随时换回另一个。修改sources.list文件是解决Termux网络问题的首要步骤。3.4 安装必要的支撑软件在安装proot-distro之前先确保一些基础工具已就位pkg install proot wget curl -yproot: 核心模拟工具。wget/curl: 用于网络下载后续可能用到。4. 安装与配置proot-distro完成Termux的基础配置后我们就可以安装管理Linux发行版的工具了。4.1 安装proot-distro在Termux中执行以下命令安装proot-distropkg install proot-distro -y安装过程很快。完成后你可以通过proot-distro命令来管理发行版。4.2 查看可安装的发行版列表输入以下命令查看proot-distro支持安装哪些Linux发行版proot-distro list你会看到一个表格通常包括Ubuntu、Debian、Alpine Linux、Fedora、Arch Linux等。我们重点关注Ubuntu。注意表格中会显示发行版的代号如ubuntu-24.04、版本和安装状态。4.3 为proot-distro配置国内镜像源另一个关键加速步骤proot-distro在安装发行版时默认也是从国外服务器下载rootfs压缩包体积动辄上百MB直连速度堪忧。我们必须为其配置国内镜像源。proot-distro的镜像配置位于$PREFIX/etc/proot-distro目录。我们需要修改Ubuntu的安装脚本。首先备份原始的Ubuntu安装脚本以Ubuntu 24.04为例cp $PREFIX/etc/proot-distro/ubuntu-24.04.sh $PREFIX/etc/proot-distro/ubuntu-24.04.sh.bak编辑该脚本vim $PREFIX/etc/proot-distro/ubuntu-24.04.sh在脚本中寻找DOWNLO相关的代码段。通常是一段定义下载URL的代码。我们需要将默认的镜像URL如https://cloud-images.ubuntu.com/替换为国内镜像。推荐使用阿里云或清华的Ubuntu Cloud镜像。 找到类似下面的行具体行号可能因版本而异# 原始行可能类似 DOWNLOAD_URLhttps://cloud-images.ubuntu.com/releases/noble/release/ubuntu-24.04-server-cloudimg-arm64-root.tar.xz将其修改为阿里云镜像DOWNLOAD_URLhttps://mirrors.aliyun.com/ubuntu-cloud-images/releases/24.04/release/ubuntu-24.04-server-cloudimg-arm64-root.tar.xz重要请根据你的手机CPU架构选择正确的文件。大多数现代安卓手机是arm64aarch64一些老旧设备可能是armhf。在Termux中输入uname -m可以查看架构。如果脚本中默认是amd64务必将其改为对应的arm64或armhf版本否则安装后无法运行。保存并退出。注意事项不同版本的Ubuntu如22.04, 20.04对应不同的脚本文件如ubuntu-22.04.sh。如果你要安装其他版本需要修改对应的脚本文件。镜像站的路径结构可能不同请先访问https://mirrors.aliyun.com/ubuntu-cloud-images/releases/确认目标版本和架构的rootfs文件是否存在。5. 安装完整版Ubuntu系统经过前面的铺垫安装过程本身反而非常简单。5.1 执行安装命令在Termux中运行以下命令开始安装Ubuntu 24.04proot-distro install ubuntu-24.04proot-distro会读取我们修改过的脚本从阿里云镜像下载Ubuntu 24.04 LTS (Noble Numbat) 的rootfs压缩包。你会看到下载进度条。下载完成后它会自动解压文件到$PREFIX/var/lib/proot-distro/installed-rootfs/ubuntu-24.04目录。整个过程完全自动化无需干预。根据网络速度可能需要几分钟到十几分钟。5.2 首次登录与系统初始化安装完成后使用以下命令登录到新安装的Ubuntu系统proot-distro login ubuntu-24.04 # 如果只安装了一个Ubuntu版本也可以简写为 proot-distro login ubuntu第一次登录你会直接进入Ubuntu环境的root用户命令行。提示符会从Termux的$变成rootlocalhost:~#。现在你身处一个全新的、纯净的Ubuntu系统。首先要做的是更新这个Ubuntu系统自身的软件包列表并升级apt update apt upgrade -y这个apt是Ubuntu自己的包管理器与Termux的pkg互不干扰。5.3 创建一个常规用户推荐一直使用root用户操作存在风险。建议创建一个普通用户并用于日常操作。在Ubuntu环境内创建新用户例如用户名为termuxadduser termux按照提示设置密码和用户信息其他信息可以直接回车跳过。将新用户添加到sudo组使其拥有管理权限usermod -aG sudo termux退出root会话回到Termuxexit以新用户身份登录Ubuntu。proot-distro login命令支持指定用户proot-distro login ubuntu --user termux现在你的提示符应该变成了termuxlocalhost:~$。你可以使用sudo来执行需要特权的命令。6. Ubuntu环境的基础优化与常用配置一个干净的Ubuntu系统用起来还不够顺手我们需要进行一些基础配置让它更像一个可用的开发环境。6.1 配置Ubuntu内部的APT软件源同样地为了在Ubuntu内安装软件速度快我们需要将其APT源也换成国内镜像。备份原有源列表sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak编辑源列表文件。Ubuntu 24.04的默认源文件内容较多我们可以直接用国内镜像源的地址覆盖。这里以阿里云镜像为例sudo vim /etc/apt/sources.list将文件内容全部替换为deb https://mirrors.aliyun.com/ubuntu/ noble main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ noble-security main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ noble-updates main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ noble-proposed main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ noble-backports main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ noble main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ noble-security main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ noble-updates main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ noble-proposed main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ noble-backports main restricted universe multiverse注意noble是Ubuntu 24.04的代号。如果你安装的是22.04 (Jammy Jellyfish) 或 20.04 (Focal Fossa)需要将noble替换为jammy或focal。保存退出后更新Ubuntu的软件包列表sudo apt update6.2 安装基础开发工具包安装一些最常用的工具为后续开发做准备sudo apt install -y vim git wget curl net-tools htop build-essential python3 python3-pip nodejs npmbuild-essential: 包含gcc, g, make等编译工具链。python3-pip: Python包管理器。nodejsnpm: Node.js运行环境和包管理器。net-tools: 包含ifconfig,netstat等网络诊断工具。htop: 交互式进程查看器比top更好用。6.3 配置SSH服务器可选但实用如果你想从同一网络下的电脑SSH连接到手机里的这个Ubuntu环境可以安装并配置OpenSSH服务器。安装SSH服务器sudo apt install -y openssh-server启动SSH服务sudo service ssh start注意在proot环境下systemctl命令无法正常工作来管理服务。我们使用传统的service命令。proot-distro的登录脚本通常会处理一些服务的启动。设置一个强密码用于SSH登录如果你之前没设sudo passwd termux查看Ubuntu环境的IP地址。由于网络共享自Termux/安卓情况比较特殊。通常可以尝试ip addr show | grep inet或者查看/etc/resolv.conf中的nameserver地址它有时就是宿主机的IP。更通用的方法是在电脑上扫描手机IP所在的网段。假设手机Wi-Fi IP是192.168.1.100那么Ubuntu环境很可能也在同一个IP上。从电脑SSH连接# 在电脑终端执行 ssh termux192.168.1.100 -p 8022注意端口Termux的SSH服务默认运行在8022端口但这是Termux原生环境的SSH。我们刚在Ubuntu里安装的openssh-server默认端口是22。你需要确保手机防火墙或路由器没有屏蔽22端口并且连接的是Ubuntu环境的IP通常与手机IP相同。如果连接22端口失败可能需要更复杂的端口转发或使用Termux的sshd。6.4 挂载外部存储实现文件共享为了方便地在Termux、Ubuntu和手机内部存储之间传输文件我们可以在登录Ubuntu时自动挂载目录。proot-distro login命令本身支持--bind参数来挂载目录。但更一劳永逸的方法是在Ubuntu的~/.bashrc文件末尾添加挂载命令或者创建一个自定义的登录脚本。一个简单的方法是在Termux中创建一个别名alias。编辑Termux的shell配置文件假设是bash编辑~/.bashrcvim ~/.bashrc在文件末尾添加alias ubuntuproot-distro login ubuntu-24.04 --user termux --bind /data/data/com.termux/files/home/storage/shared:/mnt/sdcard保存退出后执行source ~/.bashrc。以后在Termux中只需输入ubuntu就能以termux用户登录Ubuntu并自动将手机的共享存储目录挂载到Ubuntu的/mnt/sdcard路径下。这样在Ubuntu里就能通过/mnt/sdcard访问手机的文件了。7. 进阶应用场景与软件安装示例现在你的口袋Ubuntu已经准备就绪。它能做什么以下是一些具体的应用场景和软件安装示例。7.1 搭建Python开发环境Ubuntu自带了Python3但你可能需要管理多个项目或Python版本。安装pip并更新如果之前没装sudo apt install python3-pip -y pip3 install --upgrade pip安装虚拟环境工具如venvsudo apt install python3-venv -y创建并使用虚拟环境cd /mnt/sdcard/MyPythonProject # 假设项目在手机存储 python3 -m venv .venv source .venv/bin/activate # 激活后提示符前会出现 (.venv) pip install requests numpy pandas # 安装项目依赖7.2 安装并运行Node.js应用Ubuntu仓库里的Node.js版本可能较旧。可以通过NodeSource仓库安装较新版本。安装Node.js 20.x以20为例curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install -y nodejs node --version # 验证安装创建一个简单的HTTP服务器mkdir ~/node-app cd ~/node-app npm init -y npm install express创建index.jsconst express require(express); const app express(); const port 3000; app.get(/, (req, res) { res.send(Hello from Ubuntu on Termux!); }); app.listen(port, 0.0.0.0, () { console.log(App listening at http://localhost:${port}); });运行服务器node index.js在手机浏览器或同一网络下的电脑浏览器中访问http://手机IP:3000就能看到问候信息。这证明你的Ubuntu网络服务是可达的。7.3 安装并使用Git进行版本控制Git是开发者的必备工具。在Ubuntu中配置Git可以将代码仓库克隆到手机随时查看或提交。安装Git如果之前没装sudo apt install git -y配置用户信息git config --global user.name Your Name git config --global user.email youexample.com克隆一个仓库cd /mnt/sdcard/Code git clone https://github.com/username/repo.git7.4 尝试安装桌面环境实验性虽然Termux本身不支持图形界面但我们可以通过安装一个轻量级桌面环境如XFCE4并配合VNC服务器在手机上实现“图形化”的Ubuntu。这需要一定的性能和存储空间且体验不如PC但作为技术探索很有趣。安装XFCE4和VNC服务器sudo apt install xfce4 xfce4-goodies tightvncserver -y首次启动VNC服务器并设置密码vncserver按照提示设置一个仅用于VNC连接的密码不超过8位。配置VNC启动文件。首次运行后会在~/.vnc目录生成配置文件。编辑~/.vnc/xstartupvim ~/.vnc/xstartup将文件内容替换为#!/bin/bash xrdb $HOME/.Xresources startxfce4 保存并赋予执行权限chmod x ~/.vnc/xstartup启动VNC服务器指定分辨率和显示编号vncserver -geometry 1280x720 -localhost no :1-localhost no允许从网络其他设备连接。:1表示显示编号1端口号为5901。在电脑或手机需要VNC Viewer App上使用VNC客户端连接手机IP:5901输入之前设置的密码即可看到XFCE桌面。重要提醒VNC服务会消耗较多资源且在没有图形加速的proot环境下运行较慢。这主要用于演示或极轻量的图形操作不建议作为日常使用方式。记得用完使用vncserver -kill :1关闭服务以节省资源。8. 系统管理与维护技巧长期使用这个Ubuntu环境你需要知道如何维护它。8.1 备份与恢复你的Ubuntu系统整个Ubuntu系统就存放在$PREFIX/var/lib/proot-distro/installed-rootfs/ubuntu-24.04目录下。最简单的备份方法就是打包这个目录。在Termux原生环境中进行备份# 退出Ubuntu环境回到Termux exit # 使用tar压缩备份 cd $PREFIX/var/lib/proot-distro tar -czf /sdcard/ubuntu_backup_$(date %Y%m%d).tar.gz installed-rootfs/ubuntu-24.04/备份文件会保存在手机内部存储根目录。恢复系统如果需要恢复到新手机或重装Termux后先安装好Termux和proot-distro。将备份的tar.gz文件放到Termux能访问的位置如~/storage/shared。解压到目标目录mkdir -p $PREFIX/var/lib/proot-distro/installed-rootfs/ tar -xzf ~/storage/shared/ubuntu_backup_20231027.tar.gz -C $PREFIX/var/lib/proot-distro/之后就可以直接用proot-distro login ubuntu登录了。8.2 扩大Ubuntu的存储空间默认安装的Ubuntu rootfs可能只有2-3GB。随着安装软件增多可能会空间不足。proot-distro安装的系统大小受限于下载的rootfs镜像本身无法动态扩容。但你可以通过以下方式管理空间清理APT缓存定期在Ubuntu内运行sudo apt clean和sudo apt autoremove。将大容量数据存储在挂载目录将项目代码、下载文件等存储在通过--bind挂载的目录如/mnt/sdcard这些文件实际占用手机存储空间不占用Ubuntu rootfs空间。重新安装更大版本的镜像有些第三方提供了预装更多软件的“完整版”rootfs但体积也更大。你需要手动下载并导入这超出了proot-distro的默认流程。8.3 设置命令别名和快捷登录为了让操作更便捷可以在Termux的~/.bashrc中设置更多别名。vim ~/.bashrc添加# Ubuntu快捷登录并挂载常用目录 alias ubuntuproot-distro login ubuntu-24.04 --user termux --bind /data/data/com.termux/files/home/storage/shared:/mnt/sdcard --bind /data/data/com.termux/files/home:/mnt/termux-home # 快速备份Ubuntu系统 alias backup-ubuntucd $PREFIX/var/lib/proot-distro tar -czf /sdcard/ubuntu_backup_$(date %Y%m%d).tar.gz installed-rootfs/ubuntu-24.04/ echo Backup saved to /sdcard # 查看Ubuntu rootfs占用空间 alias du-ubuntudu -sh $PREFIX/var/lib/proot-distro/installed-rootfs/ubuntu-24.04保存后source ~/.bashrc生效。9. 常见问题与故障排除实录在实际操作中你可能会遇到以下问题。这里记录了我踩过的坑和解决方案。9.1 网络连接问题问题在Ubuntu内无法ping通外网apt update失败。排查首先在Termux原生环境执行pkg install termux-tools -y termux-change-repo检查并换源确保Termux自身网络正常。在Ubuntu内检查DNS配置cat /etc/resolv.conf。正常情况下应该能看到nameserver例如127.0.0.1或8.8.8.8。如果为空或不对可以手动设置echo nameserver 8.8.8.8 | sudo tee /etc/resolv.conf echo nameserver 8.8.4.4 | sudo tee -a /etc/resolv.conf检查proot的网络模拟。有时需要特定的proot参数。可以尝试用更完整的命令登录proot-distro login ubuntu --user termux --bind /dev/null:/etc/resolv.conf -- /bin/bash -c echo nameserver 8.8.8.8 /etc/resolv.conf exec bash这个命令在登录时替换了resolv.conf文件。9.2 软件包安装失败或依赖错误问题在Ubuntu内使用apt install时提示“无法定位软件包”或依赖关系不满足。解决确保已更新源列表sudo apt update。检查Ubuntu版本代号lsb_release -cs。确认你在sources.list中使用的代号如noble与系统版本一致。尝试安装更通用的包名有些包在不同版本中名称有细微差别。例如python3-dev而不是python-dev。使用apt-cache search搜索包apt-cache search keyword。清理损坏的包sudo apt --fix-broken install。9.3 存储空间不足问题安装软件时提示“磁盘空间不足”。解决在Ubuntu内运行df -h查看根分区使用情况。清理APT缓存sudo apt clean和sudo apt autoremove。检查/tmp目录是否有大文件sudo du -sh /tmp/*。如果根分区确实已满考虑将一些大型软件如Docker数据卷、数据库文件迁移到挂载的存储如/mnt/sdcard。终极方案备份重要数据/home目录然后重新安装一个更精简的发行版如Alpine Linux或者寻找定制版的、包含更多空闲空间的rootfs。9.4 进程在后台运行与Termux休眠问题在Ubuntu中启动了一个Web服务器如python3 -m http.server 8080然后切换手机应用或锁屏一段时间后发现服务无法访问。原因安卓系统为了省电会在应用进入后台或屏幕关闭时限制或挂起其CPU和网络活动。Termux进程以及其子进程包括Ubuntu里的进程可能会被“冻结”。解决方案使用Termux的唤醒锁在Termux中运行termux-wake-lock可以阻止系统休眠Termux。用完记得termux-wake-unlock。使用nohup和在启动命令前加nohup结尾加并将输出重定向到文件这样即使终端关闭进程也能继续运行但仍受系统休眠策略影响。nohup python3 -m http.server 8080 server.log 21 使用tmux或screen在Ubuntu内安装tmux在tmux会话中运行服务。即使断开与Ubuntu shell的连接进程仍在tmux会话中运行。但这仍然无法完全解决安卓系统层面的休眠。最根本的方法将需要长期运行的服务写成Termux的后台服务并利用Termux:Boot等插件实现开机自启。但这需要将服务脚本写在Termux原生环境并通过proot-distro login ... -- /path/to/script.sh的方式调用Ubuntu内的命令配置较为复杂。9.5 性能优化建议手机CPU和内存资源有限运行完整的Linux环境需要一些取舍。选择轻量级发行版如果Ubuntu感觉卡顿可以尝试proot-distro install alpine。Alpine Linux基于musl libc和BusyBox极其轻量启动飞快适合运行单一服务。避免运行图形界面如非必要不要在proot环境里运行任何图形应用或桌面环境。限制资源使用在Ubuntu内可以使用ulimit命令限制单个进程的资源或使用nice调整进程优先级。关闭不需要的服务检查Ubuntu内是否有不必要的后台进程如cron,systemd-timesyncd等在proot环境下它们可能功能不全且浪费资源可以考虑停止或禁用。经过以上步骤你应该已经拥有了一个功能强大、可随身携带的完整Ubuntu Linux环境。它绝不是玩具而是一个能处理真实任务的强大工具。从简单的脚本测试、文件处理到运行一个博客后端、一个数据库甚至是学习网络服务配置这个口袋里的Ubuntu都能胜任。关键在于你不再被设备束缚灵感来了随时可以掏出来敲几行代码。这种自由才是这个方案最吸引人的地方。