Linux Deploy教程:如何在手机上托管Web服务器

  • 利用已root或未root的Android设备,通过chroot或PROot运行完整的Linux发行版。
  • 使用 Linux Deploy、Termux、UserLAnd 或 Andronix 以及 VNC 或 XServer XSDL 来搭建 Web 服务器和轻量级桌面。
  • 配置自定义脚本、WiFi 屏蔽和“保持唤醒”应用程序,使您的手机能够作为稳定的 24/7 服务器运行。
  • 选择轻量级发行版和桌面环境(Debian、Ubuntu、Alpine + LXDE/XFCE)来搭建便携式 Linux 实验室,这对于开发和安全都很有用。

Linux部署

把你的安卓手机变成一个小 口袋 Linux 服务器 这听起来可能有点极客范儿……但当你真正尝试之后就会发现并非如此。现代手机的性能足以运行完整的系统,包括网络服务、Web 服务器,甚至轻量级的图形桌面,而且不会影响 Android 系统本身的性能,也不会让你的数据面临风险。

有一些应用程序,例如 Linux Deploy、Termux、UserLAND、Andronix、VNC 或 XServer XSDL你可以将旧手机或平板电脑重新利用,赋予它第二次生命,使其成为迷你家庭服务器、测试环境或便携式安全实验室。本指南将详细介绍其工作原理、所需组件、安装方法以及在 Android 系统上运行 Linux 可以实现的功能。

为什么值得在安卓手机上安装Linux?

Android 非常适合日常使用,但当你想要…… 完整的 GNU/Linux 环境 对于编程、搭建服务器或摆弄传统桌面环境来说,它就显得力不从心了。如果你有一部几乎不再使用的手机或平板电脑,那么在上面安装一个 Linux 发行版是充分利用它并防止它最终被遗忘在抽屉里的绝佳方法。

最常见的动机涉及执行 Linux 专属软件您可以测试网络服务(Apache、Nginx、SSH、数据库),搭建小型安全实验室,或者让开发机器可以通过 SSH 从任何地方访问。最终,您可以结合两者的优势:Android 作为主系统,Linux 作为客户系统,两者并行运行。

此外,通过在移动设备上设置和维护发行版所获得的知识是: 如果你学习系统、开发或网络安全,这绝对是无价之宝。在 Linux 环境中,您可以随意破坏,而不用担心会损坏 Android,因为该系统被封装在一个镜像或单独的 chroot/PROot 中。

另一个关键点是,很多解决方案都有效。 无需root借助 PROoot 等技术,虽然它在用户空间中模拟 chroot 行为,但您可以模拟一个相当完整的 Linux 文件树,安装软件包,并且几乎像在普通服务器上一样工作,而无需解锁设备。

Samsung DeX 和 Linux 可以一起使用。
相关文章:
Samsung DeX 和 Linux:它们可以一起使用吗?

你的安卓设备能流畅运行Linux系统吗?

几乎所有中等偏新的安卓设备都能运行它。 某种形式的Linux然而,实际体验很大程度上取决于内存、可用存储空间以及是否拥有root权限。即使是较旧的手机,如果放弃GNOME或KDE等重量级桌面环境,也可以运行轻量级发行版。

作为小型机构的合理参考 没有图形环境的Web服务器建议至少配备 2GB 内存、约 5GB 可用空间(内置存储空间或高速 microSD 卡),以及稳定的 Wi-Fi 连接,以便下载发行版镜像并通过网络管理系统。设备资源越充足越好。

如果你的想法是使用 Linux 桌面系统, X11 或 Wayland拥有键盘和鼠标(蓝牙或OTG接口)非常有用,如果你的手机支持,还可以将视频输出到显示器或电视上。它们并非必需,但与仅使用触摸屏相比,能显著提升使用体验。

你还需要决定你是否想要 根终端 或者,您可能更倾向于不使用 root 权限。使用 root 权限,您可以拥有真正的 chroot 环境、Linux Deploy 的所有强大功能以及非常精细的系统控制。不使用 root 权限,您只能依赖 Prooot 以及 Andronix、UserLAnd、AnLinux 和类似的工具,这些工具对于轻量级服务器或远程桌面来说仍然完全够用。

一般来说,一个基本的Web服务器只需要一个 无图形用户界面环境这样可以减少内存和电池消耗,并保持手机凉爽。如果您想体验 LXDE 或 XFCE 等桌面环境,最好使用性能稍高的设备。

Linux 在 Android 上如何工作:chroot、PROot 和图形服务器?

当我们谈论“在安卓系统上安装Linux”时,我们实际上并不是在谈论这个。 取代安卓但可以通过在其中运行 Linux 系统来实现。无需刷写 ROM 或修改引导加载程序:这些解决方案会创建一个 Linux 文件系统并将其挂载为客户环境。

如果设备已root,则可以使用经典工具。 chroot使用 chroot,您可以更改进程及其子进程所看到的根目录,使其只能看到客户机发行版的目录树。这需要 root 权限,因此 Android 默认情况下未启用此功能。

在没有根的场景中,主角是 PROot该工具从用户空间模拟 chroot 的部分行为,通过转换系统调用,使进程看起来像是在另一个根目录中运行,即使它仍然是一个普通的 Android 用户。它是 Andronix、AnLinux 和 UserLAnd 等许多解决方案的基础。

另一个主要挑战是图形处理。Linux 桌面需要…… 服务器 X 或 Wayland然而,该服务器无法像在PC上那样直接与Android图形硬件通信。因此,目前广泛采用两种策略:VNC和专用于Android的X服务器。

第一种策略是开始 发行版内的 VNC 服务器 然后通过安卓VNC查看器应用(例如VNC Viewer、bVNC等)连接到本地主机。屏幕上显示的是远程桌面,它实际上运行在手机上。简单易用,兼容性强,但性能略有不足。

第二种方法是使用专为 Android 设计的 X 服务器,例如: X服务器XSDL在这种情况下,图形服务器以 Android 应用的形式运行,而 Linux 发行版则充当 X 客户端,与之连接。它通常比纯 VNC 提供更好的性能,但需要一些额外的配置(例如显示变量、端口等)。

无需root权限的方案:PROot来帮忙

如果你不想对设备进行 root 操作或解锁引导程序,有一些应用程序可以启动完整的发行版。 用户空间中的 ProotAndroid 系统保持完整,而 Linux 则被封装起来,就像一个巨大的容器。

Linux部署

Andronix + Termux + VNC 查看器

一种非常受欢迎的组合是混合 Andronix、Termux 和 VNC 查看器Termux 提供高级终端及其存储库,而 Andronix 则指导在 PROot 环境中下载和安装发行版。

典型的流程很简单:安装 Andronix、Termux 和 VNC Viewer在 Andronix 中,您可以选择要使用的发行版(Ubuntu、Debian、Manjaro、Kali 等)和桌面环境(XFCE、LXDE 等),复制应用程序生成的命令,将其粘贴到 Termux 中,然后等待文件系统下载并解压。

最后,您需要配置 VNC密码和分辨率从 Linux 会话启动图形服务器,并使用 VNC Viewer 连接到类似 localhost:1 的地址。屏幕上会显示一个真正的 Linux 桌面在移动设备内部移动,无需访问根目录即可通过终端和图形用户界面进行访问。

其他无需root权限的替代方案:UserLAND、AnLinux、Debian Noroot……

除了 Andronix 之外,还有一个基于该平台的整个应用程序生态系统。 专业版适用于完整发行版 没有管理员权限。它们各有特点,但总体思路相同。

用户登陆 它是最用户友好且开源的选择之一。它允许您部署 Debian、Ubuntu、Arch、Kali 或 Alpine,并且既提供桌面会话(LXDE、XFCE4),也提供单个应用程序的安装,例如,只安装 Firefox 或 LibreOffice,而不是整个系统。

它的界面由多个部分组成: 应用程序、会话和文件系统在“应用程序”中,您可以选择要安装的软件;在“会话”中,您可以管理活动连接(VNC、SSH、XSDL);在“文件系统”中,您可以查看已创建的 Linux 根目录。它允许您使用不同的访问方式,对同一安装进行多个会话。

安Linux 它的工作原理类似,主要依赖于 Termux。该应用程序生成在 Termux 中运行的脚本,用于在 Proot 环境中安装 Ubuntu、Debian、Fedora、CentOS、openSUSE 或 Kali。它还提供 XFCE4、MATE、LXQt 或 LXDE 等轻量级桌面环境,非常适合内存有限的移动设备。

Debian 诺根 它很实用:可以在 Android 4.1 或更高版本上启动一个轻量级的、无需 root 权限的 Debian 系统。它的灵活性稍逊,性能也并非十分出色,但如果您只是想轻松体验 Debian,它的安装过程非常简单。

使用 Linux Deploy 以 root 用户身份安装 Linux。

设备获得root权限后,就能使用更强大的解决方案,而女王就在这里。 Linux部署该应用程序使用 chroot 和 BusyBox 将 Debian、Ubuntu、Arch、Fedora 和其他发行版直接安装到手机存储上,并可对它们的挂载和启动方式进行相当大的控制。

随着时间的推移,Linux Deploy 逐渐获得了市场份额。 更好的界面、配置文件和选项如今,它允许您选择发行版、安装类型、文件系统,启用或禁用图形用户界面,定义自定义启动脚本,并在移动设备重启时启用自动启动。

Linux 部署的基本要求

首先,你需要一个 已root且BusyBox已更新的Android设备BusyBox 提供了许多 Linux Deploy 内部用于管理 chroot 的 Unix 实用程序。请从可信来源安装它,授予其超级用户权限,并验证其配置是否正确。

你还需要一个 适用于 Android 的 VNC 查看器例如 VNC Viewer,它是一款免费软件,可以很好地连接到已安装发行版的图形桌面。虽然 Linux Deploy 也提供 X11 模式,但 VNC 通常是最简单的入口点。

关于 Android 兼容性,Linux Deploy 表示支持。 安卓2.3.3然而,在如此老旧的硬件上,体验通常很差。理想情况下,你需要一台相对较新的设备,至少配备 1GB 内存、几 GB 的可用空间(可以是内置存储空间或高速 microSD 卡),以及良好的数据连接,因为你需要下载几百兆甚至几 GB 大小的 ARM 镜像。

配置分发、存储和 GUI

Android 和 Linux 的 3D 标志
相关文章:
终极指南:如何在 Android 手机或平板电脑上安装 Linux,并将其变成迷你电脑

打开 Linux Deploy 后,您将看到带有按钮的主屏幕,这些按钮用于…… 开始/停止和设置图标 在底部。在那里您可以访问安装属性,决定要安装哪个 Linux 发行版以及如何安装。

在本部分,您可以选择 发行版(Debian、Ubuntu、Arch、Fedora……)下载镜像和最终镜像都需要指定架构(arm、arm64、armhf、armel 等)和文件系统路径。务必选择处理器实际使用的架构,以避免安装过程中出现异常错误。

最常见的安装类型是“图片文件这意味着 Linux 系统将驻留在单个 EXT2、EXT4 或其他格式的文件系统中。对于大多数用户而言,与使用需要更多专业知识的专用分区相比,这是最简单的选择。

您可以在下方选择 文件系统类型 (EXT2 通常效果不错),然后决定是将图像存储在内部存储器还是 microSD 卡上。如果 SD 卡质量良好,这是一种避免手机主存储空间被占满的有效方法。

在图形用户界面部分,您可以 启用或禁用图形界面启用此功能后,Linux Deploy 将准备一个轻量级桌面环境并配置 VNC 访问。您还可以在此处选择要安装的环境(LXDE、XFCE 等),以及图形会话的用户名和密码。

使用 Linux Deploy 安装并启动发行版

设置完成后,就可以启动程序了。 配电装置在右上角的菜单中,您可以找到“安装”选项,点击该选项将开始下载和配置镜像。

这个过程可能需要几分钟到半小时甚至更长时间,具体取决于您的网络连接速度和设备性能。在此期间,系统将下载并解压,chroot 环境将完成配置,您选择的软件包也将安装完毕。

当整个过程完成后,剩下的就是继续前进。 开始启动系统Linux Deploy 会挂载镜像,启动已定义的服务,如果您启用了图形用户界面 (GUI),还会启动 chroot 环境中的 VNC 服务器。在 VNC 查看器中,连接到 Linux Deploy 显示的 IP 地址和端口(例如 127.0.0.1:5900),输入密码后,您应该就能在 Android 设备上看到完整的 Linux 桌面环境了。

使用 Linux Deploy 和 X11 而不是 VNC

其中一个引发诸多疑问的问题是: 使用 Linux Deploy 和 X11 Direct 为了避免始终依赖发行版内置的 VNC 服务器,建议使用其他方案,而不是 VNC。通常情况下,SSH 和桌面环境都能正常安装,但 startx 命令却会失败,或者看起来“什么都启动不了”。

总体思路是将…… Android X 服务器(XServer XSDL 类型) 如果 Linux Deploy 配置为 X11 模式,则发行版应该通过指向外部 X 服务器而不是 Xvnc 来启动桌面。问题通常出在一些细节上,例如 DISPLAY 变量、XSDL 监听的 IP 地址和端口,或者启动桌面环境的确切命令。

在许多情况下,即使桌面环境看起来安装正确,如果没有可访问的 X 服务器,通过 SSH 启动 startx 也可能无法正常工作。您需要检查…… Android X 服务器正在运行Linux Deploy 已配置为使用它,图形环境(XFCE、LXDE、MATE 等)直接在 X11 上启动。这比 VNC 更复杂,可能需要查阅 Linux Deploy 文档以及您正在使用的特定 X 服务器的文档。

在移动设备上设置网络服务器和其他服务

现在发行版已​​经启动并运行,您可以 安装服务与在任何 Linux 系统上安装服务都相同。您可以使用 apt、pacman 或系统软件包管理器添加 Apache、Nginx、MySQL/MariaDB、FTP、Samba、SSH 以及您需要的任何其他软件。

例如,在 Debian 或 Ubuntu 系统中,基本的 Web 服务器是通过安装诸如以下软件包实现的: Apache2 或 Nginx然后,您可以使用 `service` 或 `systemctl` 来控制守护进程,具体取决于您的 chroot 环境的配置方式。诸如 `service apache2 start` 和 `service apache2 stop` 之类的命令通常可以完成这项工作,无需任何其他复杂操作。

唯一的不足之处在于它位于由 Linux Deploy 管理的 chroot 环境中。 服务自动启动 启动 chroot 环境时,它的行为并不总是像传统服务器那样。即使你在 rcconf 文件中启用了 Apache,或者在正确的运行级别中配置了 Apache,它仍然不会在 chroot 环境启动时启动。

Linux Deploy 中的自动启动脚本

为了解决这种行为,Linux Deploy 提供了以下选项: 属性中的“自定义脚本”启用此功能后,您可以添加脚本路径到列表中,这些脚本将在每次 Linux 环境启动时运行。

其思路是将路由添加到启动脚本中。 Apache、MySQL、cron 和其他服务 您希望这些功能随时可用。列表中的每个项目都指向发行版文件系统中的一个实际脚本,这些脚本将按照所示顺序执行。

这样一来,您就不必完全依赖 rcconf 或 /etc/rc*.d 中的链接,因为在 chroot 环境中,这些链接可能不会像在传统机器启动时那样生效。通过自定义脚本,您可以确保您的…… 网络服务器自动启动 Linux Deploy 启动时,如果您想将手机藏在房子周围作为始终可用的服务器,这是必不可少的。

Linux Deploy 和 Android 设置,将您的手机用作服务器

如果你想让手机像…… 全天候 Linux 服务器仅仅安装发行版是不够的:您还需要调整一些 Linux Deploy 和 Android 参数,以防止系统过于频繁地进入睡眠状态,或者在关闭屏幕时 WiFi 断开连接。

在 Linux Deploy 的常规设置屏幕(与发行版属性分开)中,您可以更改以下内容: 语言、视觉主题 最重要的是屏幕和 Wi-Fi 的运行情况。默认情况下,应用程序通常会启用“锁定屏幕”之类的选项,这样在 Linux 系统运行时屏幕就会保持常亮。

如果你打算将手机用作持续运行的服务器,那么一直保持屏幕开启并不是一个好主意: 它耗电量大,而且会产生热量。 还会加速面板磨损。明智的做法是取消勾选该选项,让屏幕自动关闭,然后找到其他方法来防止处理器进入深度睡眠模式。

另一个重要的选项是盒子 “阻止 Wi-Fi” 或者类似的设置,应该保持启用状态,这样安卓系统在屏幕关闭一段时间后就不会断开无线连接。如果 Wi-Fi 连接中断,您的服务器会毫无预警地从网络中消失。

最后,强烈建议激活 Linux 部署“自动启动”因此,每次重启手机时,应用都会自动启动发行版并运行自定义脚本。这样,您就无需在每次重启后手动启动环境了。

即使屏幕关闭,也要保持处理器处于唤醒状态。

由于 Android 会在屏幕关闭时将处理器置于“睡眠”模式,因此 chroot 环境下 Linux 的性能可能会受到影响。 如果你什么都不做,速度会慢得令人痛苦。你不想让屏幕一直亮着,但也不想让 CPU 完全进入休眠状态。

通常的解决方案是使用类似这样的应用程序。 “保持清醒” 即使屏幕关闭,它也能保持处理器运行。一些指南中提到的其中一款是“RedEye Stay Awake”,它有一个免费的广告支持版本,可以在应用程序运行时阻止 CPU 进入深度睡眠状态。

将该应用程序(或类似应用程序)与 Linux Deploy 的 WiFi 屏蔽功能结合使用,即可获得以下效果: 移动设备响应速度依然很快。 即使屏幕关闭,它也能处理网页请求或 SSH 连接。如果你想让手机充当稳定的服务器,又不想像手电筒一样一直开着,这可是个关键技巧。

移动设备的推荐布局和桌面

发行版的选择对……有很大影响 稳定性和资源消耗所讨论的工具通常支持 Ubuntu、Debian、Arch、Fedora、Kali、Alpine、Manjaro 及其一些变体。

Ubuntu和Debian 这些是最受欢迎且用户友好的选择。它们提供庞大的代码库、海量的教程,并与 Web 服务器(Apache、Nginx)、数据库(MariaDB、PostgreSQL)和编程语言(PHP、Python、Node.js 等)完美集成。对于家庭服务器或测试环境而言,它们绰绰有余。

卡利Linux 它专注于安全和渗透测试,因此如果您想要一部配备即用型审计工具的“攻破手机”,它非常适合。不过,它确实需要一些经验和谨慎的管理。

Arch Linux 和 Manjaro 他们的目标用户是寻求高度可定制的滚动发布系统和最新软件包的高级用户。Fedora 也属于现代发行版范畴,尽管它并非总是出现在所有非 root 应用中。

对于资源有限的设备, 高山Linux 它是一款超轻量级的替代方案,专为容器和极简环境而设计。通过合理搭配软件包,您可以搭建一个占用内存极少的高效 Web 服务器。

关于桌面环境,建议选择以下选项。 轻量级的桌面环境,例如 LXDE、XFCE、LXQt 或 MATE重量级桌面环境(GNOME、KDE ​​Plasma)往往会消耗过多的内存和 CPU,这在移动设备上非常明显,如果您通过 VNC 工作,则更是如此。

常见的VNC错误及其解决方法

通过 VNC 挂载图形桌面时,可能会出现如下错误: ECONNREFUSED 在 5900 号港口 当尝试从查看器连接时,这通常表示 VNC 服务器未监听、端口不同或会话未正确启动。

澄清情况的一种方法是首先进入 SSH 连接到 Linux 环境(ConnectBot、JuiceSSH) 并手动检查 VNC 服务器是否正在运行。有时,只需在会话中启动 `vncserver` 即可分配显示器和端口,然后将 VNC 查看器连接到该特定端口。

问题也可能源于拥有 在没有图形环境的情况下安装了发行版 或者搭配兼容性较差的桌面环境。在某些情况下,将旧版本的 Debian 或 Ubuntu 与 MATE 等环境混合使用,可能比使用 LXDE 等轻量级桌面环境更容易出现问题,因为 LXDE 在这些类型的配置中往往表现更好。

另一个问题是图像大小:如果空间不足, IMG 是 Linux 的所在地您将无法安装其他软件包或存储大量数据。如果您想安装除基础系统之外的其他内容,建议创建大于 2 GB 的镜像,以便为应用程序和文件预留空间。

除了网络服务器之外:你可以在手机上使用 Linux 做什么

SXMO 指南:如何在旧智能手机上安装 Linux 终端
相关文章:
SXMO 指南:如何在旧智能手机上安装 Linux 终端

尽管通常的重点是组装一个 口袋型网络服务器在安卓设备上运行Linux系统,可以带来更多实用和学习的可能性。

你可以举起一个 文件服务器(Samba、NFS) 要在本地网络上共享文件夹,您可以运行独立的数据库服务器,或者如果您的发行版支持,甚至可以使用轻量级容器。所有这些都可以从网络上的其他计算机访问,就像访问小型树莓派一样。

作为开发环境,拥有它非常方便。 Git、Python、Node.js、编译器、Vim、Emacs 以及其他直接安装在移动设备上的工具,可通过 SSH 从笔记本电脑甚至另一部手机访问。这是一种非常灵活的方式,让您随时随地拥有自己的“工具箱”。

如果你对安全性感兴趣,可以看看像这样的发行版。 Kali 或其他专为渗透测试而设计的 Linux 系统 它们允许您在实验室网络上进行受控测试(始终在法律允许的范围内)。您的手机将成为一个极其便携的审计平台。

您还可以将 Linux 环境与 Android 的多媒体功能结合起来,例如使用 Linux 来…… 提供网页内容或API 根据具体情况,Android 设备可以在本地播放这些视频,或者通过 Chromecast 播放。

简而言之,借助 Linux Deploy、UserLAnd、Andronix、Termux 等工具以及适当的 Android 系统调整,完全可以将一部普通的智能手机变成一台…… 功能强大的Linux迷你服务器非常适合学习、实验,无需花钱购买专用硬件或处理复杂、侵入性的安装,即可将自己的实验室装进口袋。