如何在Android设备上更新mksh Shell?

8次阅读
没有评论

如何为安卓设备更新mksh Shell?

摘要

本文介绍了如何将开源Shell(mksh)安装到Android设备上,并逐步提供了从构建环境至最终执行的完整步骤。无论您是想更换现有的sh shell,还是遇到性能上的需求提升,都将有所受益。

步骤一:准备工作

  1. 了解您设备的操作系统与处理器类型——当前大多数现代Android手机运行基于Linux内核的操作系统。
  2. 确保您的root权限有效——虽然并非所有需要执行的操作都要求root权限,但为了修改关键文件和程序,建议提前获得root访问权限。

步骤二:获取并准备构建环境

  1. 根据所使用的设备类型,选择合适的构建脚本。大多数现代Android手机支持ARM V7或更高版本,使用arm-linux-gnueabihf架构进行编译(而32位的armhf在64位系统上也能运行)。
  2. 确保您的环境已安装以下必要的构建工具:
  3. GNU Make, Autoconf, automake
  4. gcc/g++ 9或更高版本
  5. bison/yacc 3.51
  6. flex 2.7

步骤三:下载源代码并编译

  1. 从mksh项目的GitHub仓库获取最新版——使用以下命令克隆官方Repo:
    shell
    git clone https://github.com/mirBSD/mirOSBase.git ~/mirOSBase
    cd ~/mirOSBase/shell_mksh
    git checkout sh-mksh-59-1.2017q3rel
  2. 根据设备类型调整shell的构建定义
  3. 对于armabi, 编译用于ARMv7或更高版本,建议使用mksh_58-gc-noopt-armabi作为自定义的变体名。

    例:要选择适合大多数Android设备的32位架构支持(在某些情况下可能需要64位):
    shell
    make -s OS=linux-elf ARCH=march armabi TARGETS="armv7" -C mksh/ ../mksh/

  4. 对于arm64abi, 编译用于ARM64架构,建议使用mksh_58-gc-noopt-arma64abi作为自定义的变体名。

    例:设置环境变量并编译针对ARM64设备支持:
    shell
    export OS=linux-elf; ARCH=march ; make -C mksh targets="arm64" -j$(nproc)

步骤四:部署更新

  1. 将新版本的mksh Shell推送到设备——通过ADB与内核进行交互,上传编译好的可执行文件。如果要覆盖/vendor/bin/mksh,请首先解压并检查其内容:
    shell
    adb pull /vendor/bin/mksh ./

  2. 替换旧的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

步骤五:验证更改

  1. 重新启动设备——确保所有设置均正确无误,然后重启手机。
  2. 检查新shell版本——打开终端或运行/bin/sh -v命令以确认当前使用的Shell版本是否为预期的更新版本。

请注意,在使用此方法替换系统关键文件之前,请完全备份您的数据,并了解这可能带来的潜在风险。

本文档提供了从安装必要的软件环境到实际部署一个更新后的mksh Shell至设备的具体步骤,旨在帮助开发者或有兴趣者了解此过程。

正文完