BusyBox“未安装”实为initramfs镜像缺失其二进制或符号链接损坏,导致启动时找不到/bin/sh或/sbin/init而fallback至最小shell;可通过重建initramfs、手动注入BusyBox或GRUB临时引导修复。

手机或嵌入式设备重启后 BusyBox 突然显示“未安装”,不是软件被删了,而是 initramfs 镜像里缺失 BusyBox 二进制文件或符号链接损坏,系统启动时找不到 /bin/sh 或 /sbin/init 入口,直接 fallback 到最小 shell 环境——此时你看到的不是“BusyBox 被卸载”,而是“系统根本没加载到它”。
确认是否真丢失 BusyBox
开机卡在 BusyBox 提示符(如 (initramfs)_)时,先别急着重装:输入 ls /bin 回车,看输出里有没有 sh、ls、mount;再输 ls /sbin,重点找 init。如果这两个目录下大量命令都不存在,说明 initramfs 镜像确实没打包 BusyBox。
如果命令存在但执行报错(比如 sh: not found),那更可能是符号链接断裂——/bin/sh 指向了一个不存在的路径,比如指向了 /bin/busybox 但后者被删了。
修复 initramfs 中缺失的 BusyBox
方法一:从运行中的 Ubuntu/Debian 系统重建 initramfs(需能正常进入桌面或 SSH)
第一步:检查当前 busybox 包是否已安装:dpkg -l | grep busybox。若无输出,说明系统根本没装 busybox-static 或 busybox-initramfs 包。
第二步:安装核心包:sudo apt install busybox-initramfs。注意:Ubuntu 16.04 中文版有已知 bug,该包会静默失败,必须先切英文语言环境或手动解除锁文件,否则这步看似成功实则无效。
第三步:强制重建 initramfs:sudo update-initramfs -u -k all。这个命令会扫描内核模块、打包 /bin/busybox、生成符号链接、写入 /boot/initrd.img-* 文件。不加 -k all 只更新当前运行内核,旧内核镜像仍坏。
方法二:手动注入 BusyBox 到 initramfs(适用于无法联网或 apt 失效的嵌入式设备)
下载对应架构的 busybox-static 二进制(如 arm64、x86_64),用 chmod +x 赋权,复制到 /tmp;然后用 gunzip -c /boot/initrd.img-$(uname -r) | cpio -idmv 解包到临时目录;把 busybox 放进 ./bin/ 并创建必要软链(ln -sf busybox ./bin/sh、ln -sf busybox ./sbin/init);最后用 find . | cpio --create --format=newc | gzip > /boot/initrd.img-$(uname -r) 覆盖原镜像。
绕过损坏 initramfs 直接启动系统
当 initramfs 修复失败或暂无条件操作时,可用 GRUB 临时引导绕过:
开机按 Shift 进 GRUB 菜单 → 选中当前内核 → 按 e 编辑启动参数 → 找到以 linux 开头的行 → 在行尾删除 ro quiet splash,替换为 rw init=/bin/bash → Ctrl+X 启动。
此时会挂载根分区为可写并直接进入 bash,立即执行:mount -o remount,rw /,然后手工恢复 /sbin/init(如 ln -sf /bin/busybox /sbin/init)或复制完整 busybox 到 /bin/,再执行 exec /sbin/init 继续启动流程。
【务必在 exec /sbin/init 前完成 remount,否则修改无法保存】

















