1 votos

Crear symlink/mount/bind en root

Quiero compilar (a través de make) en mi teléfono Android. Tengo acceso Root.

Tengo casi todas las cosas preparadas. Pero hay un inconveniente. Todos los archivos de configuración tienen un tinglado de #! /bin/sh . Puedo ejecutarlos por $SHELL configure También he puesto $CONFIG_SHELL Pero algunos archivos de configuración ejecutan otros scripts de shell y dan el /bin/sh: no such file or directory .

Estoy pensando en crear un enlace simbólico /bin/sh -> /system/bin/sh He leído en algún sitio que el sistema de archivos root es el ramdisk y cualquier cambio en él deberá hacerse en el init.rc archivo. Por lo tanto, si quiero lograr esto tendría que crear primero un directorio 'bin' y luego hacer un enlace simbólico 'sh' en él. Dudo que ln funcionará en init.rc.

Tengo esta otra idea. Hacer un directorio 'bin' en algún lugar preferiblemente en el directorio de datos de Terminal IDE (estoy usando eso). A continuación, crear un enlace simbólico allí sh -> /system/bin/sh. A continuación, crear 'bin' en / a través y el uso de montar el primer bin a /bin a través de init.rc

En tercer lugar, puedo simplemente mkdir bin y cp /system/bin/sh /bin/sh

Además, todos estos métodos fallarán y darán lugar a un fallo de arranque si no se puede encontrar alguno de los directorios de origen.

Quiero saber qué método será más seguro y si existe una alternativa más segura.

0 votos

Haz una copia de seguridad de Nandroid antes de hacer tus cosas. ¡Ese es el enfoque más seguro!

0 votos

@Firelord Eso es un hecho para mí. He brickeado mi teléfono demasiadas veces para no hacer una copia de seguridad nandroid.

2voto

moonbutt74 Puntos 153

@vishalbiswas Para que eso funcione también es necesario exportar PATH y LD_LIBRARY_PATH

puedes realmente script tu configuración requerida y empujar ese script a xbin para que se ejecute como ejecutable. así que estarías viendo algo como esto para la configuración nombra el script a lo que funciona para ti

#!/system/bin/sh
mount -o rw,remount /
mkdir /bin && mkdir /lib
chmod 755 /bin /lib
mount -o bind /system/bin /bin
mount -o bind /system/lib /lib
export PATH=/bin && export LD_LIBRARY_PATH=/lib

lo anterior es flojo, juguetea un poco con ello, ahora a cerrarlo sobre todo en orden inverso

#!/system/bin/sh
umount /bin && umount /lib
mount -o ro,remount /

los directorios /bin y /lib deberían desaparecer al reiniciar, ya que viven en la memoria RAM y no debería ser necesario desarmar PATH y LD_LIBRARY_PATH ya que al cerrar la instancia de la terminal esas variables deberían morir con ella.

El otro enfoque es configurar un linux de brazo chroot sin complicaciones en la segunda partición de su tarjeta sd externa. Yo uso debian y personalicé mi init.environ.rc como sigue

# set up the global environment
on init
    export PATH /sbin:/vendor/bin:/system/sbin:/system/bin:/system/gcc/bin:/system/xbin:/bin:/usr/bin:/usr/sbin
    export LD_LIBRARY_PATH /system/lib:/system/gcc/lib:/system/vendor/lib
    export ANDROID_BOOTLOGO 1
    export ANDROID_ROOT /system
    export ANDROID_ASSETS /system/app
    export ANDROID_DATA /data
    export ANDROID_STORAGE /storage
    export ASEC_MOUNTPOINT /mnt/asec
    export LOOP_MOUNTPOINT /mnt/obb
    export BOOTCLASSPATH [blah blah jars blah xD ]

# Debian CHROOT
    export DEBIAN_ROOT /debian
    export TMPDIR /tmp
    mount -t proc none /debian/proc
    mount -t sysfs none /debian/sys
    mount -o bind /dev /debian/dev
    mount -o bind /proc/net /debian/proc/net
    mount -t devpts none /debian/dev/pts

en este enfoque su gestor de archivos debe leer sus directorios de archivos de la partición chroot y todo sin problema. yo uso total commander.

EDIT- me olvidé de la entrada necesaria en fstab va como sigue, de nuevo ajustar al esquema de su dispositivo

/dev/block/platform/msm_sdcc.2/by-num/p2              /debian      ext4    rw,errors=panic                               wait

Aquí está el tutorial del que aprendí a hacer lo anterior http://whiteboard.ping.se/Android/Debian

Sin embargo, busque una imagen de distro bastante actual. Siempre y cuando no intentes borrar un directorio montado en bind sin antes DESMONTARLO [nunca he hecho eso por cierto] no borrarás accidentalmente tu sistema.

0 votos

Actualmente lo estoy haciendo manualmente creando esas carpetas. Mientras que su enfoque se ve bien, no estoy buscando un entorno chroot completa. Aunque, voy a particionar mi sd con ext4. Estoy en el proceso de automatizarlo con un script como usted sugirió.

0 votos

@vishalbiswas hola de nuevo, esto no será un "completo" chroot. terminal de trabajo sólo! =) personalmente creo que querer toda la configuración de X VNC o de otra manera, no tiene sentido en este dispositivo. Una vez configurado, usted será feliz. Si estas usando LP debes tener en cuenta que cualquier binario que compiles debe ser PIE (ejecutable independiente de la posición) pasa -fPIE en la linea de comandos de gcc. -fPIC también debería funcionar.

0 votos

Me refería al chroot de Debian

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X