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:
Ausgabe:
Beim Ausführen erscheint sh chroot_bashonly.sh
der 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, chroot
das Skript in vielen Formularen mit demselben Fehler auszuführen.
chroot /data/local/mnt /bin/bash
chroot /data/local/mnt /system/bin/sh
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?
Der Grund für diesen Fehler ist, dass Android Chroot aus irgendeinem Grund blockiert hat. Wie Death Mask Salesman betonte, ist es type commandName
in 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 .
/system/xbin
?
Zauberbuch
type chroot
Versuchen Sie , oder auszugebenwhence -v chroot
, und teilen Sie uns das Ergebnis mit.Gulaschsuppe
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 versuchttype chroot /data/local/mnt /system/bin/sh
. Ergebnis (Fehler): 1. gleich , 2. gleich , 3./system/bin/sh is /system/bin/sh
.... Die Ergebnisse fürwhence -v chroot
sind äquivalent.Zauberbuch
type
, mit einem einzigen Argument dafür, nämlichchroot
. Abgesehen davon müssen Sie möglicherweise BusyBox installieren , um chroot verwenden zu können , da es Ihrem Gerät fehlt.Gulaschsuppe
type chroot
verweistchroot is /system/xbin/chroot
. Aber jetzt bekomme ich den Fehlerchroot: cant execute '/bin/bash': No such file or directory
oder für /system/bin/shchroot: 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 vorhandenZauberbuch
type sh
: Dies wird Ihnen den Speicherort der Shell-Binärdatei mitteilen, durch die Sie jede Instanz von /bin/bash ersetzen müssen .Gulaschsuppe
type sh
verweistsh is tracked alias for /system/bin/sh
, aber wie ich schon sagte, es sagtNo such file or directory
Zauberbuch