Введение:
Я отформатировал SDCard в ext4 и скопировал на нее ArchVersion, чтобы запустить ее с Android, как в этом руководстве (шаг 6). Конечно, мое устройство рутировано, и я запускаю следующие сценарии и команды в эмуляторе терминала как суперпользователь.
Информация об устройстве:
Проблема:
Когда я выполняю, появляется sh chroot_bashonly.sh
ошибка tmp-mksh: chroot: not found
. Конечно, я посмотрел в сценарии, чтобы понять это самостоятельно:
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 ********"
Я думаю, что часть mount.sh работает, по крайней мере, я не получаю ошибок и mkdir
существующих папок. Итак, следующее, что я попытался сделать, это запустить chroot
вне сценария во многих формах с той же ошибкой.
chroot /data/local/mnt /bin/bash
chroot /data/local/mnt /system/bin/sh
chroot /data/local/mnt /bin/sh
У всех одна и та же проблема: tmp-mksh: chroot: not found
.
Так что же не так?
Доступен ли chroot на Android?
Причина этого сбоя в том, что Android по какой-то причине заблокировал chroot . Как указал продавец масок смерти , можно получить информацию о типе команды, например, type commandName
в этом случае type chroot
.
Для устранения tmp-mksh: chroot: not found
ошибки требуется только установить BusyBox .
/system/xbin
?
Гримуар
type chroot
илиwhence -v chroot
, и сообщите нам результат.гуляшсуп
type chroot /data/local/mnt /bin/bash
. Результат (ошибка): 1.chroot not found
, 2./data/local/mnt not found
(но он есть), 3./bin/bash not found
. Я пыталсяtype chroot /data/local/mnt /system/bin/sh
. Результат (ошибка): 1. тот же , 2. тот же , 3./system/bin/sh is /system/bin/sh
.... Результатыwhence -v chroot
эквивалентны.Гримуар
type
, с одним-единственным аргументом в пользу этого, который былchroot
. Кроме того, вам может потребоваться установить BusyBox , чтобы иметь возможность использовать chroot , поскольку на вашем устройстве его нет.гуляшсуп
type chroot
ссылаетсяchroot is /system/xbin/chroot
. Но теперь я получаю сообщение об ошибкеchroot: cant execute '/bin/bash': No such file or directory
или для /system/bin/shchroot: cant execute '/system/bin/sh': No such file or directory
. Хорошо, я проверил файл /system/bin/sh . Как указано в этом посте , он существуетГримуар
type sh
: это сообщит вам расположение бинарного файла оболочки, которым вам нужно будет заменить любой экземпляр /bin/bash .гуляшсуп
type sh
ссылаетсяsh is tracked alias for /system/bin/sh
, но, как я уже говорил, прежде чем он говоритNo such file or directory
Гримуар