Grund für den Chroot-Fehler: tmp-mksh: chroot: not found

Einführung:

Ich habe eine SDCard in ext4 formatiert und eine ArchVersion darauf kopiert, um sie von Android aus auszuführen, wie in dieser Anleitung (Schritt 6). Natürlich ist mein Gerät gerootet und ich führe die folgenden Skripte und Befehle im Terminal-Emulator als Superuser aus.

Geräteinformationen:

  • Telefon: Sony Xperia Z1
  • Modellnummer: C6903
  • Android-Version: 5.1.1
  • Build-Nummer: 14.6.A.1.236

Ausgabe:

Beim Ausführen erscheint sh chroot_bashonly.shder Fehler tmp-mksh: chroot: not found. Natürlich habe ich in das Skript geschaut, um es selbst herauszufinden:

chroot_bashonly.sh:

#!/bin/sh

export LINUXROOT=/data/local/mnt
export TMPDIR=/tmp
export HOME=/root
export USER=root
export PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:$PATH
export TERM=vt100


sh ./mount.sh

echo "******* Your chroot-environment is starting now ********"
chroot $LINUXROOT /bin/bash # tmp-mksh: chroot: not found
echo "******* You exited the chroot-environment, unmounting... ********"

sh ./umount.sh

echo " ## DONE"

mount.sh:

#!/bin/sh

export LINUXROOT=/data/local/mnt
export TMPDIR=/tmp
export HOME=/root
export USER=root
export PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:$PATH
export TERM=vt100

# mount /
mkdir $LINUXROOT #works
mount -t ext4 -o noatime,rw /dev/block/mmcblk1p2 $LINUXROOT #works

# mount other stuff
mkdir -p $LINUXROOT/proc 
mkdir -p $LINUXROOT/sys 
mkdir -p $LINUXROOT/dev 
mkdir -p $LINUXROOT/dev/pts 
mkdir -p $LINUXROOT/var/lib/dbus
mkdir -p $LINUXROOT/android_storage/sdcard0
mkdir -p $LINUXROOT/android_storage/sdcard1
mkdir -p $LINUXROOT/system
mount -t proc proc $LINUXROOT/proc
mount -t sysfs sysfs $LINUXROOT/sys
mount -o bind /dev $LINUXROOT/dev 
mount -t devpts devpts $LINUXROOT/dev/pts
mount -o bind /system $LINUXROOT/system
mount -o bind /storage/sdcard0 $LINUXROOT/android_storage/sdcard0
mount -o bind /storage/sdcard1 $LINUXROOT/android_storage/sdcard1

echo "******* everything mounted ********"

Ich denke, der mount.sh- Teil funktioniert, zumindest bekomme ich keine Fehlermeldung und die mkdir-created-Ordner sind vorhanden. Als nächstes habe ich versucht, chrootdas Skript in vielen Formularen mit demselben Fehler auszuführen.

  1. chroot /data/local/mnt /bin/bash

  2. chroot /data/local/mnt /system/bin/sh

  3. chroot /data/local/mnt /bin/sh

Alle haben das gleiche Problem: tmp-mksh: chroot: not found.

Was ist also falsch?

Ist chroot überhaupt für Android verfügbar?

type chrootVersuchen Sie , oder auszugeben whence -v chroot, und teilen Sie uns das Ergebnis mit.
Also versuchte ich es type chroot /data/local/mnt /bin/bash. Ergebnis (Fehler): 1. chroot not found, 2. /data/local/mnt not found(existiert aber), 3. /bin/bash not found. Ich habe es versucht type chroot /data/local/mnt /system/bin/sh. Ergebnis (Fehler): 1. gleich , 2. gleich , 3. /system/bin/sh is /system/bin/sh.... Die Ergebnisse für whence -v chrootsind äquivalent.
Zuallererst sagte ich type, mit einem einzigen Argument dafür, nämlich chroot. Abgesehen davon müssen Sie möglicherweise BusyBox installieren , um chroot verwenden zu können , da es Ihrem Gerät fehlt.
Danke. Ich bin einen Schritt weiter. Jetzt type chrootverweist chroot is /system/xbin/chroot. Aber jetzt bekomme ich den Fehler chroot: cant execute '/bin/bash': No such file or directoryoder für /system/bin/sh chroot: cant execute '/system/bin/sh': No such file or directory . Nun, ich habe die Datei /system/bin/sh überprüft . Wie es in diesem Beitrag steht , ist es vorhanden
Wie zuvor, Ausgabe type sh: Dies wird Ihnen den Speicherort der Shell-Binärdatei mitteilen, durch die Sie jede Instanz von /bin/bash ersetzen müssen .
type shverweist sh is tracked alias for /system/bin/sh, aber wie ich schon sagte, es sagtNo such file or directory
Anscheinend gehen wir über den Rahmen Ihrer Frage hinaus, die nur chroot betraf .

Antworten (1)

Der Grund für diesen Fehler ist, dass Android Chroot aus irgendeinem Grund blockiert hat. Wie Death Mask Salesman betonte, ist es type commandNamein diesem Fall möglich, Informationen über den Befehlstyp über zB zu erhalten type chroot.

Um den tmp-mksh: chroot: not found-Fehler zu beheben, muss lediglich BusyBox installiert werden .

Ich habe die busyBox installiert, aber das Problem tritt immer noch auf !!!
@ user197885 Mit installiert meinen Sie, dass Sie busyBox aus dem App Store installiert haben , dann busyBox gestartet und eine Version von busyBox installiert haben/system/xbin ?