在宣布 Chrome OS 将基于 Android 栈开发后,Google 开始将 Chrome OS 功能(如 Linux 虚拟机)移植到 Android。该功能此前在 Android 15 QPR2 Beta 中测试,已随今年 3 月的 Pixel Feature Drop 正式上线。
由于技术同源,Chrome OS 和 Android 上的 Linux 环境都是基于 KVM 的虚拟机。根据 Google 规划,Android 16 将预置该 Linux 环境,未来可能成为系统标配,而非 Pixel 独占。
虽然此功能对普通用户可能用途有限,但少数派读者中应该不乏熟悉也喜欢研究终端环境的朋友。若你对在 Android 上运行 Linux 虚拟机的体验和场景感兴趣,本文将提供一些参考。
如何开启
目前此功能为 Pixel 设备独享。请确保设备已升级至 Android 15 并安装了今年 3 月的 Pixel Feature Drop。然后,启用开发者选项,在「调试」下找到「Linux 开发环境」,进入并勾选「(实验性)在 Android 上运行 Linux 终端」。


根据提示下载约 567MB 的数据包(即 Linux 虚拟机镜像)并安装。部分早期 Pixel 型号(如 Pixel 6)安装时可能卡顿,请耐心等待。


安装完成后,应用抽屉会出现「终端」应用。启动后是熟悉的 Bash Shell 界面。这个「终端」应用就是打包的网页端 Shell,只是提供了一个在手机端方便交互的入口而已。
尽管是网页 Shell,该终端应用设计得不错,提供了软键盘辅助键(如 Tab 补全和 ESC),方便手机操作命令行,尤其在使用 Vim 时。

那么,这个仍处于「实验性」阶段的 Android Linux 虚拟机具体有哪些用途呢?
应用场景
Android 的开发工程师对这个 Linux 终端给出过官方功能定位——它是面向开发者的测试工具,更适合运维、软件开发等工作,因此不建议安装 GUI 应用。但对我们玩家而言,最大限度压榨这个 Linux 虚拟机的全部可能才是正经事。
了解 Linux 虚拟机的性能
拿到一个 Linux 虚拟机,我们首先想知道的当然是它运行什么系统、占用多少系统资源等基本信息。
在前面登录的时候我们能看见系统运行的是 Debian 虚拟机,至于具体什么版本、Linux 内核版本号是多少,具备初级运维知识的朋友则会下意识敲下 uname -a
来获取。好消息是 Pixel 6 这边运行的是基于 ARM64 的 Debian,Linux 内核是相当新的 6.1。
要获取更详细信息,可安装 neofetch
:
sudo apt update && sudo apt install neofetch
安装后运行 neofetch
可查看内存、存储、Debian 版本等信息。
更专业的监控工具 htop
的安装命令为:
sudo apt install htop
安装后运行 htop
,会打开一个 TUI 应用,显示进程、线程等信息。可用方向键或触摸操作菜单,按 Ctrl+C 退出。


通过电脑上的 SSH 客户端访问
手机软键盘临时查看信息尚可,但进行开发或运维则效率不高,如果是开发或者运维,通过电脑 SSH 客户端连接 Linux 虚拟机更为高效。
由于虚拟机与 Android 主机 IP 不在同一网段,需进行设置。首先,在 Linux 虚拟机中安装 OpenSSH server:
sudo apt update && sudo apt install openssh-server
然后,使用编辑器(如 vim 或 nano)编辑 /etc/ssh/sshd_config
,取消 Port
行的注释(删除 #
),并将端口号 22
修改为 5900
后保存。
接着,输入以下命令使 SSH 服务开机自启:
sudo systemctl enable ssh
建议同时修改用户 droid
的密码:
sudo passwd droid
最后,输入以下命令重启 Linux 虚拟机:
sudo reboot
等待约一分钟后,重新打开「终端」应用。Android 系统应会提示是否允许连接到端口 5900,选择允许。
不过我们的目标是局域网内的 PC 可以登录这个 Android 上的 Linux 虚拟机,所以我们还需要在 Android 上将 5900 这个端口转发出去。
对此,可使用 Port Forwarder 等 Android 应用。按下图设置,将发往 Android 主机 5822 端口的连接转发至虚拟机的 5900 端口。这样,局域网内的 SSH 客户端通过 Android 主机的IP 和 5822 端口即可连接到虚拟机。


以 Xshell 为例:新建会话,主机填入 Android 手机的局域网 IP,端口填 `5822`,用户名为 `droid`,密码为你之前设置的密码。配置无误即可成功连接:


通过 PC SSH 客户端访问的主要优点是连接更稳定、操作(尤其是复制粘贴命令)更方便。
打造「随身开发服务器」
因为树莓派体积小巧,不少开发人员将其作为便携的「随身开发服务器」。既然现在更随身的 Android 手机也可以开启 Linux 虚拟机了,将其打造成「随身开发服务器」也是合适的选择。比如对前端开发人员来说,将开发的移动互联网项目部署到这个 Android 上的 Linux 虚拟机,运行测试也更贴近真实的使用场景。


笔者尝试了运行 Next.js 示例项目。熟悉 Linux 命令的开发者对此过程应不陌生。首先安装 Node.js 和 npm(如果尚未安装):
sudo apt update
sudo apt install nodejs npm -y
安装后,输入以下命令创建 Next.js 示例应用。该过程耗时较长,直接在手机终端操作可能因超时导致应用报错或假死——这再次体现了 PC SSH 连接的优势。
npx create-next-app@latest
待命令执行完毕,通过 ls
验证新增了 my-app
目录。切换到该目录,运行 npm run dev
启动应用。根据终端提示,在手机浏览器中访问指定 IP 和端口即可查看运行效果。