哪里可以下载 coreutils 的二进制文件?

Mit*_*tch 3 binary

我正在尝试在 android 设备上安装一些命令(即file更好的版本ls),我正在寻找它的 ARM 二进制文件(即 5TE 架构),但我找不到下载它们的地方. 谷歌搜索诸如“arm ls binary”或“ls binary”之类的东西给了我除我想要的之外的一切。

有没有一个地方可以找到二进制文件?

Gil*_*il' 6

在 Android 设备上安装 Linux 实用程序的最简单的方法是在子目录中安装整个发行版。“普通”发行版(Debian、Arch、Fedora 等)提供与 Glibc 动态链接的二进制文件,而 Android 不提供。它们需要使用/lib/ld-linux*.soGlibc的加载器 ( )来执行。

设置此类系统的一种简单方法是使用 Debian 的deboostrap构建初始 Debian 目录树,将其传输到 Android 设备,然后使用apt-get其他标准 Debian 工具安装软件包。Debian wiki 上有几页关于该主题的页面:ChrootOnAndroidHottwoDebianInAndroid

  1. 首先,安装 Debootstrap。在 Debian 或衍生版本上,只需安装debootstrap软件包。在其他一些 Linux 或其他 Unix 变体上,只需获取debootstrap 源 tarball或从 Git 中查看:它只是一个 shell 脚本和支持数据文件。

  2. 确定您的设备是否支持硬件浮点。如果没有,则更换armhfarmel下方。您可以通过/proc/cpuinfo在 Android(或其他任何使用 Linux 内核的系统)下进行检查来判断:您必须拥有 ARMv7(或 ARMv8)thumbee以及vfpv3.

  3. 如果您还没有它,请在 Android 设备上安装BusyBox。虽然它不是绝对必要的,但它会在下面派上用场。您可以检索busybox-staticDebian 二进制包,使用 提取 BusyBox 可执行文件ar p busybox-static_*_armhf.deb data.tar.gz | tar -xzf - ./bin/busybox,并将busybox二进制文件传输到 Android 设备。下面,我假设 BusyBox 位于/vendor/bin/busybox.

  4. 如果您的 Android 设备能够挂载格式化为 ext2/ext3/ext4(或任何其他支持 unix 权限的文件系统,即非 FAT)的 SD 卡,请在您的 Unix PC 上挂载 SD 卡并以 root 身份运行以下命令:

    debootstrap --arch=armhf --foreign wheezy /media/sdcard/debian http://http.debian.net/debian
    
    Run Code Online (Sandbox Code Playgroud)

    如果没有,请以 root 身份(或在 fakeroot 下,如果有)运行以下命令:

    sh -c 'debootstrap --arch=armhf --foreign wheezy /tmp/debian http://http.debian.net/debian && tar -zcf /tmp/debian.tar.gz -C /tmp debian'
    
    Run Code Online (Sandbox Code Playgroud)

    现在您需要转移/tmp/debian.tar.gz到您的 Android 设备。您可以通过 adb ( adb push /tmp/debian.tar.gz /) 或任何其他适合您的方式执行此操作,然后解压缩 tarball(使用 BusyBox tar):

    tar -zxvf /debian.tar.gz
    
    Run Code Online (Sandbox Code Playgroud)
  5. 设置一个舒适的环境来运行 Linux 程序。简单的方法是在chroot 中运行它们。我假设 Debian 系统位于/media/sdcard/debian并且您有 BusyBox。创建一个shell脚本:

    #!/vendor/bin/busybox sh
    LINUX_ROOT=/media/sdcard/debian
    alias bb=/vendor/bin/busybox
    unset LD_LIBRARY_PATH PATH SHELL
    export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    # Bind-mount filesystems if not already done
    for d in /dev /media /proc /sys; do
      bb grep -q " $LINUX_ROOT$d " /proc/mounts || bb mount -o rbind "$d" "$LINUX_ROOT/$d"
    done
    for d in /data /system; do
      if ! bb grep -q " $LINUX_ROOT$d " /proc/mounts; then
        mkdir -p "$LINUX_ROOT/android/$d"
        bb mount -o rbind "$d" "$LINUX_ROOT/android/$d"
      fi
    done
    exec bb chroot "$LINUX_ROOT" /bin/bash "$@"
    
    Run Code Online (Sandbox Code Playgroud)

    使此脚本可执行并将其放入/vendor/binAndroid PATH中或其他任何位置。在您可以充分享受 Linux 安装之前,您需要完成 debootstrap 的工作:在 chroot 中,运行

    /debootstrap/debootstrap --second-stage
    
    Run Code Online (Sandbox Code Playgroud)