news 2026/10/5 1:18:49

Termux安装Kali报错排查全攻略:Android上的Linux环境构建指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Termux安装Kali报错排查全攻略:Android上的Linux环境构建指南

在 Termux 里装 Kali,听上去就是几条命令的事,真正动手才知道报错才是常态。我见过太多人卡在同一个地方:照着教程装 Andronix,过程也没出错,最后启动 Kali 的时候黑屏;或者一路 Next 下去,突然冒出一个ERROR: failed to connect to mirror,然后整条命令中断,连重新执行都不敢乱动。turmex 这个拼写其实也是 Termux 常见的手滑写法,说明很多人连名字都还不太熟,就已经开始踩坑了。

这篇文章不会给你贴一份“复制粘贴就能成功”的魔法命令,因为那东西基本不存在。我会把 Termux 下安装 Kali 的各种报错,按“装到哪一步 + 报错长什么样 + 根因是什么 + 怎么处理”的方式拆开讲。适合第一次在 Android 上装 Kali 的新手,也适合那些已经装了一半、卡在某个红字界面不知道该怎么继续的人。

1. 先说清楚:Termux 里的 Kali 到底是怎么“装”上去的

1.1 三种主流方案的差别:NetHunter、Andronix、纯 chroot 脚本

在 Termux 生态里装 Kali,市面上流行的大概有三种做法。很多人报错之后去搜教程,发现别人用的方案和自己根本不一样,结果把 A 方案的排错方法用到 B 方案上,越搞越乱。所以先把这个底层差异讲明白。

第一种是NetHunter。它本质上是给特定机型做的 Kali 发行版,需要手机解锁 Bootloader、刷入内核,属于“重操作”。如果你的手机没解锁,或者压根不想动系统分区,那 NetHunter 就不适合,而且它也不是在 Termux 里面跑的。

第二种是Andronix。它提供了一组打包好的安装脚本,原理是在 Termux 环境里创建一个 Linux 发行版的 chroot 或 proot 环境。Andronix 的优点是交互做得好,菜单引导式操作,新手也能一路点下去。但它的脚本内部做了很多封装,一旦出错,错误信息往往很长,看起来像是“万能报错”,实际定位起来反而麻烦。

第三种是纯命令行的 chroot/proot 方案。一般步骤是:安装 Termux 基础包,下载 Kali 的 rootfs 镜像,然后用proot或者chroot进入系统。这也是 Andronix 背后的原理,区别在于你手动控制每一步,报错也看得懂。对学习排错的人来说,我反而更推荐这种方式,因为你能清楚地知道是下载问题、权限问题,还是文件系统问题。

方案核心方式报错重点适合人群
NetHunter刷内核 + 系统级安装机型不兼容、内核刷入失败有刷机经验的折腾党
AndronixTermux 内引导安装脚本中断、存储权限、镜像连接图省事的新手
手动 proot/chroot自己下载 rootfs 并配置下载失败、依赖缺失、权限问题想真正学到原理的人

1.2 报错频发的底层原因:Android 沙箱和 Linux 发行版的天然冲突

很多人以为 Termux 就是“手机上装了个 Linux 终端”,其实并不是。Termux 本身是一个 Android 应用,它运行在系统的沙箱环境里,不能像普通 Linux 服务器那样直接操作/sys、/proc、/dev等目录。而 Kali 的 rootfs 在启动时,会尝试访问这些系统路径来初始化各种服务,这就是大量报错的源头。

另一个容易被忽略的问题是Android 10 及以后版本的存储策略变化。Termux 默认只能访问自己的私有数据目录,如果你想把 Kali 的镜像文件放到手机“公共目录”里,比如/sdcard/Download,就必须手动授予存储权限。很多报错表面上看起来是“文件不存在”或者“权限拒绝”,实际上就是这个原因。

还有exec 权限的问题。在部分 Android 设备上,/data目录挂载时带了noexec参数,导致 Termux 里的二进制文件无法执行。你的 Kali 系统就算正确安装了,一运行就提示Permission denied,也是这一层的问题。

理解了这三个底层原因,再去看到各种五花八门的报错,你会发现它们其实就是“Android 限制了 Linux 的发挥空间”在不同环节的具体表现。下文的所有排查,基本都是围绕这几条主线展开的。

2. 按报错出现顺序拆解:从安装到进桌面的完整排查流程

2.1 阶段一:Termux 基础环境准备

很多新手一上来就跑pkg update && pkg upgrade,然后看着一大屏日志滚过去,最后一段红字写着ERROR: Problem detected或者下载速度极慢。这不是 Kali 安装的问题,而是 Termux 仓库连接不稳定。官方的仓库在国外,访问速度时快时慢,偶尔还会直接超时。

我的建议是不要折腾官方源,直接把 Termux 的软件源切换成国内镜像。Termux 换源很简单,在较新版本里只需要:

termux-change-repo

在弹出的图形界面上,用方向键选择国内的镜像站点,比如清华源或阿里源,回车确认即可。切换之后再跑一次pkg update,更新速度会有一个质的提升,很多莫名其妙的“下载中断”“校验失败”也会随之消失。

这里要特别提醒一件事:不要跳过pkg upgrade。Termux 的基础包里,像wget、curl、tar、proot这些软件,版本更新很频繁。如果你刚装的 Termux 版本是旧的,直接去跑 Kali 安装脚本,很可能因为某个依赖库版本太低而报错。这类报错通常非常隐蔽,不会直接告诉你“某个包版本不对”,而是显示一段类似cannot find -lxxx或者undefined symbol的信息,新手根本看不懂。

我实测过一个场景:不执行pkg upgrade,直接安装 proot、wget 等工具,再运行 Kali 的启动脚本,大概率会遇到bash: /bin/bash: No such file or directory之类的诡异提示。出现这种情况,往往不是 Kali 文件系统坏了,而是 Termux 内部的文件路径映射有问题。升级 Termux 的基础包之后,问题自动消失。

2.2 阶段二:下载启动脚本与镜像文件时的报错

安装 Kali 最关键的一步是下载 rootfs 镜像。Andronix 的脚本会自动下载,手动方案则需要你自己找到镜像地址。这一阶段的报错主要集中在:wget: unable to resolve host address、ERROR 403: Forbidden、TLS certificate verification failed等。

unable to resolve host address说明 DNS 解析有问题。你可以在 Termux 里用pkg install dnsutils安装工具,然后执行nslookup mirror.xxx.com来确认域名是否解析成功。如果 DNS 确实挂了,可以切换到公共 DNS 再试。由于 Android 应用的网络请求通常走系统的 DNS 设置,Termux 内部往往没法直接改,所以更实际的办法是换个网络环境,或者关闭 Wi-Fi 用移动数据试一次。

ERROR 403: Forbidden在 Andronix 里很常见,因为 Andronix 的脚本里下载链接带有一次性 token,链接过期了就会返回 403。这时候不要反复重新执行同一个脚本,先把已下载的临时文件清理掉,再重新生成一个新的下载链接。手动方案中,如果 wget 下载官方 Kali rootfs 出现 403,大概率是你用的镜像链接本身限制了非浏览器访问,可以换一个镜像源地址。

网络层面的勘误其实不难,真正麻烦的是下载到一半中断后,你无法判断文件是否完整。es 的做法是下载完成后立刻校验文件大小和校验值。如果下载中断,wget 会生成一个部分文件,再次执行时可能因为同名文件存在而覆盖失败,报出一个很奇怪的No such file or directory。

我自己的习惯是,每一步下载前先清理同名文件:

rm -f kali-rootfs-arm64.tar.xz wget -O kali-rootfs-arm64.tar.xz "https://mirrors.tuna.tsinghua.edu.cn/kali-images/kali-2024.2/kali-linux-2024.2-esp.img.xz"

如果文件较大,建议在后台执行wget -c支持断点续传,这样即使中途网络断开,重新执行也能继续下载,而不是从头再来。

2.3 阶段三:写入文件系统与安装依赖时的报错

镜像下载完成后,下一步通常是把 rootfs 解压到某个目录。这里最容易出现的是空间不足的报错:No space left on device。

为什么会出现空间不足?因为 Termux 安装在 Android 的应用数据分区里,这个分区可能很小。很多手机虽然机身存储有 128GB,但/data分区的用户可用空间并不等同于手机标称的存储空间,尤其是 2021 年以后的机型,系统分区划分越来越复杂,Termux 实际可用的可能只有几十个 GB,而且你手机里的照片、微信缓存也占的是同一个分区。

处理方式有两个方向:一是把 Kali 目录设置在 Termux 数据目录之外的外部存储上,需要用到 Termux 的存储权限和~/storage软链接;二是直接给 Termux 清理出足够空间,删掉下载好的镜像压缩包,只保留解压后的目录。

这里我强烈建议:rootfs 压包解压完后,立刻把原始压缩包删掉。压缩包动辄 1~2GB,解压后系统占 5~8GB,加起来对 Termux 来说压力很大。具体操作:

# 解压 proot --link2symlink tar -xf kali-rootfs.tar.xz # 确认解压成功后再删除压缩包 rm -f kali-rootfs.tar.xz

其实还有一种更隐蔽的情况:空间明明充足,却依然报No space left on device。这时候八成是inode 用完了。你可以用df -i去查看 inode 使用率,如果发现IUsed%接近 100%,说明小文件太多,把 inode 挤满了。这种情况清理掉部分 Termux 缓存文件即可恢复。

另外,解压时如果用了tar而不是proot --link2symlink tar,在一些 Android 设备上会因为不支持硬链接而报错。硬链接在 Android 的/data分区上不是总能正常工作,强制把所有硬链接转换为符号链接能规避这个问题。这个细节是很多新手最容易卡住的地方之一,而且光看报错信息,根本联想不到是硬链接的问题。

2.4 阶段四:进入 Kali 后的配置报错

文件系统解压完成后,你的 Kali 其实还不能用,需要通过proot进入。命令大概是:

proot --link2symlink \ -0 \ -r /data/data/com.termux/files/home/kali-arm64 \ -b /dev -b /proc -b /sys \ /usr/bin/env HOME=/root \ /bin/bash --login

这一步常见的报错是chroot: can't execute '/bin/bash': Exec format error。这种提示和我们前面提到的 exec 权限有关系,但更常见的原因是架构不匹配:你下载了 arm64 的镜像,但设备是 32 位系统;或者反过来,下载了 x86_64 的镜像,设备是 ARM 处理器。

检查方法很简单,在 Termux 里执行:

uname -m

如果输出是aarch64,下载镜像时就要认准arm64字样。如果输出是armv7l,那就得找armhf版本。这个错误我在很多求助帖里看到过,很多人第一反应是去问“为什么我的 Kali 进不去”,其实只要对照一下架构,自己就能发现真相。

成功进入 Kali 之后,还有一批新的问题等着你,比如 locale 警告。这个不算致命,但很烦人,启动时满屏提示perl: warning: Setting locale failed。处理方式是进入 Kali 后先安装语言包:

apt install locales -y dpkg-reconfigure locales

然后选中en_US.UTF-8或者zh_CN.UTF-8,重新登录即可。

另外,很多人装 Kali 不只是为了用终端,还想在里面跑图形桌面。这就会用到 VNC 或 Xserver。报错里最常见的是Could not create directory '/root/.vnc'或者A VNC server is already running as :1。前者是权限问题,mkdir -p /root/.vnc手动建目录就能解决;后者是端口冲突,杀掉旧进程或者换一个 display 编号即可。

3. 高频报错对照表与实战排查方法

3.1 高频报错速查表:现象、根因、解决办法

我根据自己摸索和帮人查错的经验,把 Termux 装 Kali 最常见的报错汇总成一张速查表。建议你收藏一下,遇到问题先来这里对号入座,再去搜具体细节,会高效很多。

报错内容(典型片段)根因方向快速处理思路
ERROR: Problem detectedTermux 官方源连接不稳定执行termux-change-repo换国内镜像源
unable to resolve host addressDNS 解析失败检查网络,关 Wi-Fi 用移动网络重试
ERROR 403: Forbidden下载链接 token 过期清理旧临时文件,重新生成下载链接
No space left on device存储或 inode 不足df -h和df -i查看,清理缓存并删除压缩包
Exec format error架构不匹配uname -m查看架构,重新下载对应镜像
can't execute '/bin/bash'镜像损坏或 exec 权限问题重新解压 rootfs,检查/data挂载参数
Permission denied缺少-0参数或目录权限不对在 proot 命令中加上-0或改用 root 用户检查
tar: Cannot hard linkAndroid 不支持硬链接用proot --link2symlink tar解压
locale: Cannot set LC_ALL缺失 locale 配置进入系统后安装 locales 并重新配置
A VNC server is already runningVNC 端口冲突或未杀掉旧进程vncserver -kill :1后重新启动

表格只能告诉你“是什么问题”,真正动手时还需要一点定位问题的基本功。

3.2 定位报错的两个基本功:看日志和分段验证

我发现很多人遇到报错的第一反应是把错误截图发到问答社区里,然后干等回复。但截图里的信息量其实非常有限,特别是报错信息特别长的时候,截图上可能只显示了最后几行,关键线索全被截掉了。在求助之前,至少有件事值得你自己先做:把完整日志保存下来,逐行看一遍。

Termux 里有一个简单办法,能让所有输出同时写入文件:

bash setup.sh 2>&1 | tee install.log

2>&1表示把标准错误输出合并到标准输出里,tee会同时把内容显示在屏幕上并写进install.log。出问题后,你可以在日志里搜索error、failed、cannot这些关键词,定位离它们最近的上下文。

另一个基本功是分段验证。安装 Kali 的流程本质上是一串动作:准备环境 → 下载镜像 → 解压文件 → 进入系统 → 配置系统。如果最后一步失败了,不要从头到尾重新跑一遍,因为前面的步骤可能都是成功的。更好的做法是,把已经完成的部分当作“既定事实”,只重跑失败的那一段。

举个例子。如果你已经成功进入到 Kali 的root@localhost提示符,只是后续apt install某个软件包时报错了,那就没有必要回到 Termux 环境重新下载镜像、重新解压。直接在 Kali 里排查就行,检查软件源、检查依赖关系、看是不是包名写错了。

这个习惯不仅对 Termux 装 Kali 有用,以后你排查任何 Linux 问题都用得上。大部分人不缺解决问题的命令,缺的是“缩小问题范围”这个思维。

4. 一次真实的“卡了三天”的报错复盘

4.1 现场描述:报错截图到底长什么样

说一个我印象很深的案例。有个朋友发给我一张截图,内容是E: Can't locate package metasploit-framework,他说自己在 Termux 里装 Kali 卡了三天,换了好几个教程,每个教程都叫他用apt install metasploit-framework,但每次执行都提示找不到这个软件包。

我第一反应是问他:你现在是在 Termux 环境里执行apt,还是已经进入了 Kali 环境再执行apt?他回答说是在 Termux 里。这就是问题所在:Termux 的apt用的是 Termux 自己的软件仓库,里面根本不包含 Kali 的工具包。只有在proot进入 Kali 之后,apt才是 Kali 的apt,才能安装 Kali 仓库里的软件。

4.2 排查思路演进:为什么会出现这种认知错位

很多人下意识认为,只要照着教程输入同样的命令,就能得到同样的结果。但忽略了一个关键前提:教程里的apt、dpkg、systemctl这些命令,是在哪个环境里执行的?这个前提错了,后面的命令全都会失效。

这个问题的根源是环境混淆。Termux 本身是一个 Linux 环境,它有自己的包管理器;你进入 Kali 的 chroot 之后,是另外一个独立的 Linux 环境,也有自己的包管理器。两者的软件仓库完全不同。如何确认自己当前在哪个环境里?最直观的方法看提示符:Termux 的提示符通常是$,而 Kali 的 root 提示符是root@localhost或者类似的#。不过有些脚本会修改 PS1,所以更可靠的方法是执行:

cat /etc/os-release

输出NAME="Kali GNU/Linux"就说明你已经在 Kali 里了,输出别的发行版信息则说明你还在 Termux 或者别的地方。

4.3 最终解决:只改了一个执行环境,问题秒消失

确认问题后,解决方式非常简单。先退出 Termux 的普通环境,用前面提到的 proot 命令进入 Kali,然后再执行:

apt update apt install metasploit-framework

几分钟后软件包就正常装了。这个案例之所以能让人卡三天,不是命令本身有多难,而是对“环境”的理解出了问题。我后来把这套思路总结成一句话:报错不可怕,可怕的是搞不清自己现在是在哪一个环境里执行命令。这个判断一旦错了,后面所有排查都会南辕北辙。

5. 规避这些坑:我后来推荐的安装前检查清单

5.1 硬件与系统前置条件:先确认手机适不适合折腾

在按下第一条安装命令之前,花五分钟做个前置检查,能帮你避开 80% 的基础报错。

第一是Android 版本。Termux 官方新版本要求 Android 7 及以上,低于这个版本很多功能会异常。在拨号界面输入*#*#4636#*#*可以快速查看手机信息,也可以在设置里找到“关于手机”查看。

第二是RAM 大小。在 Termux 里跑 Kali,即使是最小安装,也建议手机 RAM 不低于 4GB。RAM 不够的机型,进入 Kali 后很容易出现“进程被系统杀掉”的问题,现象是终端突然自己黑屏,或者提示Process completed (signal 9)。这种问题基本无解,只能换设备或者用更轻量的发行版。

第三是磁盘空间。建议至少预留 10GB 给 Termux 使用。前面说过了,rootfs 解压后本身就有 5~8GB,你后面还要安装工具、存放临时文件,空间太紧会在各种意想不到的环节触发No space left on device。

5.2 推荐的最小化安装顺序

如果需要我给一个相对保守、不容易出错的安装路线,我会推荐下面这个顺序。它不是最短路径,但每一步都留有验证环节,出了问题你知道是哪一个环节的问题。

# 第一步:更新 Termux 基础环境 pkg update && pkg upgrade -y # 第二步:安装必要工具 pkg install wget proot tar termux-tools -y # 第三步:授予存储权限 termux-setup-storage # 第四步:创建 Kali 目录并下载 rootfs mkdir -p ~/kali-arm64 cd ~/kali-arm64 rm -f kali-rootfs.tar.xz wget -O kali-rootfs.tar.xz "你的镜像下载地址" # 第五步:解压 rootfs(关键) proot --link2symlink tar -xf kali-rootfs.tar.xz rm -f kali-rootfs.tar.xz # 第六步:启动 Kali(建议先写成一个脚本) nano start-kali.sh

start-kali.sh的内容如下:

#!/data/data/com.termux/files/usr/bin/bash proot --link2symlink \ -0 \ -r /data/data/com.termux/files/home/kali-arm64 \ -b /dev \ -b /proc \ -b /sys \ -b /sdcard \ /usr/bin/env HOME=/root \ /bin/bash --login

保存后设置执行权限:

chmod +x start-kali.sh ./start-kali.sh

每次进入 Kali 都统一执行./start-kali.sh,不要每次粘贴一长串命令,减少手动输入出错的概率。

5.3 排错原则:尽快建立“最小可运行系统”

最后一条原则,是我在多次折腾后总结出的最重要的经验:先把最小系统跑起来,再谈图形界面和额外工具。

很多人的目标是“在 Kali 里用图形界面跑 Burp Suite 或者别的工具”,于是一开始就想装完整版 Kali,还配上桌面环境。在我看来这是完全颠倒的顺序。正确做法是先用最小 rootfs 进入终端,确认apt update能跑通,装一个vim、curl之类的小工具,验证软件源、网络、权限都正常。只有这个“最小可运行系统”稳定了,再一步步加装桌面环境、VNC、常用工具。

这样做的好处是,每一轮新增的东西如果报错,你都有清晰的边界。比如 VNC 连不上,那就只是显示协议的问题,和 rootfs 本身无关;如果apt正常但某个工具装不上,那多半是软件源或依赖问题,而不是系统结构问题。如果你一开始就装完整版,出了问题你会同时面对十几个不确定因素,排查难度直接翻倍。

另外再说一个小技巧。如果你已经安装了 Andronix 又中途失败,想切换到手动方案,之前残留的目录和脚本可能会干扰后续操作。推荐用rm -rf把相关的临时目录清理干净,或者干脆重装一次 Termux,从零开始。重装也就几分钟,比在残留环境里反复排查要快得多。

根据我个人的经验,Termux 里装 Kali 这件事,成功与否并不取决于你多会用 Kali,而取决于你能不能读懂 Android 环境对 Linux 的那些限制。大部分报错翻来覆去就是存储权限、架构不匹配、exec/proot 异常、软件源连接失败这几类。把 Android 和 Termux 这一层理解透了,以后无论是装 Kali 还是跑别的 Linux 发行版,都会顺畅很多。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/5 1:17:59

STM32+CLRC663多协议NFC读卡器:支持14443A/B与15693

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/5 1:17:59

NDCG原理与实战:推荐系统评估的黄金标准

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/5 1:16:49

DCA1000EVM毫米波雷达原始数据采集与MATLAB后处理指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/5 1:16:38

FPGA驱动串口屏USART_HMI:从协议到调试全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/5 1:16:36

JavaWeb作业管理网站源码解析:从部署到改造避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/5 1:16:29

AXI Uartlite IP核详解:FPGA串口调试与Zynq嵌入式应用实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华