如何为安卓设备更新mksh Shell?
摘要
本文介绍了如何将开源Shell(mksh)安装到Android设备上,并逐步提供了从构建环境至最终执行的完整步骤。无论您是想更换现有的sh shell,还是遇到性能上的需求提升,都将有所受益。
步骤一:准备工作
- 了解您设备的操作系统与处理器类型——当前大多数现代Android手机运行基于Linux内核的操作系统。
- 确保您的root权限有效——虽然并非所有需要执行的操作都要求root权限,但为了修改关键文件和程序,建议提前获得root访问权限。
步骤二:获取并准备构建环境
- 根据所使用的设备类型,选择合适的构建脚本。大多数现代Android手机支持ARM V7或更高版本,使用
arm-linux-gnueabihf
架构进行编译(而32位的armhf
在64位系统上也能运行)。 - 确保您的环境已安装以下必要的构建工具:
- GNU Make, Autoconf, automake
- gcc/g++ 9或更高版本
- bison/yacc 3.51
- flex 2.7
步骤三:下载源代码并编译
- 从mksh项目的GitHub仓库获取最新版——使用以下命令克隆官方Repo:
shell
git clone https://github.com/mirBSD/mirOSBase.git ~/mirOSBase
cd ~/mirOSBase/shell_mksh
git checkout sh-mksh-59-1.2017q3rel - 根据设备类型调整shell的构建定义:
对于armabi, 编译用于ARMv7或更高版本,建议使用
mksh_58-gc-noopt-armabi
作为自定义的变体名。例:要选择适合大多数Android设备的32位架构支持(在某些情况下可能需要64位):
shell
make -s OS=linux-elf ARCH=march armabi TARGETS="armv7" -C mksh/ ../mksh/对于arm64abi, 编译用于ARM64架构,建议使用
mksh_58-gc-noopt-arma64abi
作为自定义的变体名。例:设置环境变量并编译针对ARM64设备支持:
shell
export OS=linux-elf; ARCH=march ; make -C mksh targets="arm64" -j$(nproc)
步骤四:部署更新
将新版本的mksh Shell推送到设备——通过ADB与内核进行交互,上传编译好的可执行文件。如果要覆盖
/vendor/bin/mksh
,请首先解压并检查其内容:
shell
adb pull /vendor/bin/mksh ./替换旧的mksh Shell——通过ADB将新构建的mksh推送至设备指定位置,并替换原有版本。确保执行正确的文件权限设置:
shell
adb push mksh-optimized-armabi /sdcard/new-mkshrnew
adb shell mount -o remount,rw /system
adb shell mv /vendor/bin/mksh /vendor/bin/mksh-old
adb shell cp /sdcard/new-mkshrnew /vendor/bin/mksh
adb shell chmod 555 /vendor/bin/mksh
adb shell chown 0:0 /vendor/bin/mksh
步骤五:验证更改
- 重新启动设备——确保所有设置均正确无误,然后重启手机。
- 检查新shell版本——打开终端或运行
/bin/sh -v
命令以确认当前使用的Shell版本是否为预期的更新版本。
请注意,在使用此方法替换系统关键文件之前,请完全备份您的数据,并了解这可能带来的潜在风险。
本文档提供了从安装必要的软件环境到实际部署一个更新后的mksh Shell至设备的具体步骤,旨在帮助开发者或有兴趣者了解此过程。