Quiero compilar (a través de make) en mi teléfono Android. Tengo acceso de root.
Tengo casi todas las cosas configuradas. Pero hay este problema. Todos los archivos de configuración tienen un shebang de #!/bin/sh . Puedo ejecutarlos con $SHELL configure También configuré $CONFIG_SHELL Pero algunos archivos de configuración ejecutan otros scripts de shell y dan /bin/sh: no existe tal archivo o directorio .
Estoy pensando en crear un enlace simbólico /bin/sh -> /system/bin/sh. He leído en alguna parte que el sistema de archivos raíz es el ramdisk y cualquier cambio en él deberá realizarse en el archivo init.rc. Entonces, si quiero lograr esto, primero necesito crear un directorio 'bin' y luego hacer un enlace simbólico 'sh' en él. Dudo que ln funcione en init.rc.
Tengo esta otra idea. Haga un directorio 'bin' en algún lugar preferiblemente en el directorio de datos de Terminal IDE (estoy usando eso). Luego crea un enlace simbólico allí sh -> /system/bin/sh. Luego cree 'bin' en / a través y use montar el primer contenedor en / bin a través de init.rc
En tercer lugar, solo puedo mkdir bin y cp /system/bin/sh /bin/sh
Además, todos estos métodos fallarán y darán como resultado una falla 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.
@vishalbiswas Para que eso funcione, es posible que también deba exportar PATH y LD_LIBRARY_PATH
en realidad, puede ejecutar la configuración requerida y enviar ese script a xbin para que se ejecute como ejecutable. por lo que estaría buscando algo como esto para configurar el nombre del script para lo que funciona para usted
#!/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 está suelto, juegue un poco con él, ahora para cerrarlo en su mayoría 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 están viviendo en RAM y no debería necesitar desactivar PATH y LD_LIBRARY_PATH ya que cuando cierra su instancia de terminal, esas variables deberían morir con él.
El otro enfoque es configurar un linux de brazo chroot sin lujos en la segunda partición de su tarjeta SD externa. Uso Debian y personalicé mi init.environ.rc de la siguiente manera
# 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 administrador de archivos debería leer sus directorios de archivos de partición chroot y todo sin problemas. Yo uso comandante total.
EDITAR: olvidé la entrada necesaria en fstab, dice lo siguiente, nuevamente ajústese al esquema de su dispositivo
/dev/block/platform/msm_sdcc.2/by-num/p2 /debian ext4 rw,errors=panic wait
Aquí está el tutorial que aprendí a hacer lo anterior de http://whiteboard.ping.se/Android/Debian
Sin embargo, busque una imagen de distribución bastante actual. Siempre que no intente eliminar un directorio montado en enlace sin DESMONTARLO primero [por cierto, nunca lo he hecho], no eliminará accidentalmente su sistema.
Señor del Fuego
Vishal Biswas