老柯修机铺

通讯行老师傅的手机软件笔记——每款 App 装过、用过,才敢写下来

手機上也能跑 Linux 指令集——BusyBox 安卓版完整攻略

想在 Android 裝置上擁有完整的命令列工具集?BusyBox 把數百個 Unix 指令塞進 4MB APK,從安裝到進階腳本一次搞懂。

什麼是 BusyBox

你有沒有想過在 Android 手機上直接用 ls 列目錄、grep 搜尋檔案、nc 做網路除錯?系統自帶的 shell 工具殘缺不全,很多指令根本找不到。這時你需要 BusyBox官網——一個把數百種 Unix/Linux 常用工具打包成單一可執行檔的「瑞士軍刀」。

BusyBox 的核心巧思是多呼叫二進位(multi-call binary)架構:它根據自己被呼叫時的檔名來決定執行哪個工具。ln -s busybox ls 建立一個符號連結後,執行 ls 實際上是在執行 BusyBox,但它看到自己的名字是 ls,就切換成 ls 模式。整套工具集只佔 4MB APK(版本 71),安裝後約 1.1MB 靜態二進位,比傳統 GNU 工具組精簡一個量級。

這篇教程結束時,你能在已 root 的 Android 裝置上完整部署 BusyBox、呼叫超過 300 個指令,並且寫出能在終端機正常執行的 shell 腳本。

安裝

BusyBox 安卓版(包名 stericson.busybox.donate)需要 root 權限才能發揮完整功能——它的核心二進位要放進 /system/xbin/ 或 /data/local/xbin/,這兩個路徑只有 su 能寫入。安裝包約 4.06MB,從 BusyBox下載 頁拿到 APK 後點擊安裝即可。

首次啟動應用後會看到安裝導引,選擇「安裝 BusyBox」並指定目標路徑(推薦 /system/xbin,如果裝置不支援寫入系統分區就改用 /data/local/xbin)。安裝器會自動下載對應裝置架構的 BusyBox 靜態二進位(支援 armv7l、aarch64、x86_64 等主流架構),複製到指定路徑後請求 su 權限完成寫入。

安裝完成後不要忘了啟動一個終端機模擬器(推薦 Termux 或 Terminal Emulator),手動執行一次 busybox --install /system/xbin——這條指令會建立所有 applet 的符號連結,讓你直接用 ls、cat、grep 而不用每次都寫 busybox ls。如果跳過這步,終端機裡直接敲 ls 仍然是 Android 自帶的精簡版,體會不到 BusyBox 完整功能。

BusyBox 安裝器主界面

準備工作

開始操作前確認兩件事:裝置已取得 root 權限(su 指令在終端機裡能執行),以及 PATH 環境變數包含你安裝 BusyBox 的目錄。多數終端機模擬器預設會把 /system/xbin 或 /data/local/xbin 加入 PATH,但如果安裝後直接敲指令仍顯示「command not found」,可以用 echo $PATH 檢查,必要時在 .bashrc 或 .profile 裡加上 export PATH=/system/xbin:$PATH。

另外建議安裝一個檔案管理器(如 Mixplorer),方便瀏覽系統目錄和查看檔案權限。

分步骤实操

第一步:確認安裝是否成功

打開終端機模擬器,敲入 busybox 後應該看到版本資訊和所有可用指令清單:

BusyBox v1.36.1 (2026-09-23 09:18:51) multi-call binary.
...

如果只顯示一個版本號,說明 --install 那步沒做。重新執行一次 su -c 'busybox --install /system/xbin' 就好。接著試幾個常用指令:ls -la /system/xbin/ 看符號連結是否建立、cat /proc/version 讀核心版本、top 看執行中的程序——這些應該都能正常執行。

第二步:認識你的指令清單

BusyBox 版本 71 默認編譯了超過 300 個 applet,覆蓋檔案操作、程序管理、網路工具、壓縮解壓、系統資訊等多個領域。執行 busybox --list 可以列出全部可用指令,busybox --list | wc -l 會告訴你總數。想深入了解每個指令的參數與用法可以查 BusyBox文檔,把清單也存成文字檔方便對照:busybox --list > /sdcard/busybox-applets.txt。

BusyBox Applets 完整清單

第三步:用 BusyBox 實際解決問題

拿兩個新手最常遇到的場景練手:

場景一:備份系統應用 APK。Android 系統應用的 APK 藏在 /system/app/ 和 /system/priv-app/ 裡,普通檔案管理器看不到。用 su -c 'busybox cp /system/app/Settings/Settings.apk /sdcard/' 就能複製出來。注意這裡呼叫的是 BusyBox 的 cp,比 Android 自帶的精簡版參數更完整(支援 -p 保留權限、-r 遞迴複製整個目錄)。

場景二:檢查裝置網路連線。busybox ifconfig wlan0 查看 Wi-Fi 介面的 IP 位置和 MAC 位址,busybox ping -c 5 baidu.com 測試對外連通性,busybox netstat -tlnp 列出所有監聽中的 TCP 連接埠——這些都是網路除錯時的標準工具,Android 自帶的 netstat 和 ifconfig 參數殘缺,很多選項不能用。

第四步:寫你的第一個 shell 腳本

BusyBox 內建 ash shell(Almquist Shell),比 bash 精簡但夠用。在終端機裡執行 busybox sh 進入 ash 互動模式,然後寫一個簡單的備份腳本:

#!/system/xbin/busybox sh
# 備份系統應用腳本

BACKUP_DIR=/sdcard/backup/system-apps
mkdir -p "$BACKUP_DIR"

for apk in /system/app/*/base.apk /system/priv-app/*/base.apk; do
    app_name=$(basename $(dirname "$apk"))
    busybox cp "$apk" "$BACKUP_DIR/${app_name}.apk"
    echo "已備份:${app_name}"
done

echo "備份完成!共備份 $(busybox ls "$BACKUP_DIR" | wc -l) 個應用"

把這段存成 /sdcard/backup-apps.sh,然後 su -c 'busybox sh /sdcard/backup-apps.sh' 執行。成功的話你的 SD 卡上會出現一個 backup/system-apps/ 目錄,裡面是所有系統應用的 APK。

第五步:設定啟動自動載入

每次開機後符號連結應該都在(除非你刷機或清空了 /system/xbin/),但 PATH 環境變數可能被重置。如果發現開機後 BusyBox 指令又找不到了,在 /system/etc/profile.d/ 目錄建立一個 busybox.sh 檔案,寫上 export PATH=/system/xbin:$PATH,加上執行權限 chmod +x busybox.sh——每次開機時系統自動載入,不用手動設定。

常見卡點

卡在「安裝失敗 / 空間不足」。最常見原因是 /system/xbin/ 分區空間不夠,或者裝置已經把 /system/ 掛成唯讀。解決方案:換到 /data/local/xbin/ 安裝(那個目錄在 userdata 分區,空間充足),然後在 .profile 裡確保 PATH 包含 /data/local/xbin。

卡在「指令找不到」。三個可能:沒跑 busybox --install 導致符號連結缺失;PATH 環境變數沒包含安裝目錄;或者安裝的架構錯了(比如把 armv7l 的二進位裝到 aarch64 裝置上)。前兩個好解決,架構問題需要重新下載對應版本的 BusyBox——執行 uname -m 看裝置架構,對照安裝器裡的選項。

卡在「腳本執行到一半報 syntax error」。ash 是 POSIX sh 子集,不支援 bash 專屬語法(如 [[ ]]、陣列、source 指令)。解決方法:把腳本裡的 bash 語法改成 POSIX 相容寫法([[ ... ]] → [ ... ]、source file → . file),或者用 Android Termux 另外安裝 bash(代價是約 1MB 空間)。

進階玩法

玩到這裡你已經可以把手機當成一台迷你 Linux 工作站用了。往下延伸的方向:結合 Tasker 用 BusyBox 指令實現自動化(比如偵測到特定 Wi-Fi 就自動執行備份腳本)、搭建本地 SSH 伺服器(busybox telnetd + root 權限)、甚至把 OpenWrt 路由器的配置思路搬進手機——總之,4MB 體積承載的可能性,比大多數人想像的要多。

本文为个人基于网络公开资料整理编写,非官方内容,仅供学习交流参考;软件版权归原作者所有,请支持正版;使用过程中遇到问题请查阅官方渠道,本文不承担任何责任。

同类文章