1 votes

Créer un lien symbolique/mount/bind dans le répertoire racine

Je veux compiler (via make) sur mon téléphone Android. J'ai un accès Root.

J'ai presque tout mis en place. Mais il y a un problème. Tous les fichiers de configuration ont un tas de #!/bin/sh . Je peux les exécuter en $SHELL configurer J'ai aussi mis $CONFIG_SHELL Mais certains fichiers de configuration exécutent d'autres scripts shell et ils donnent l'instruction /bin/sh : pas de tel fichier ou répertoire .

Je pense créer un lien symbolique /bin/sh -> /system/bin/sh. J'ai lu quelque part que le système de fichiers racine est le ramdisk et que toute modification de celui-ci doit être effectuée dans le fichier init.rc fichier. Donc, si je veux accomplir ceci, je dois d'abord créer un répertoire 'bin' puis faire un lien symbolique 'sh' dans celui-ci. Je doute que ln fonctionnera dans init.rc.

J'ai une autre idée. Créez un répertoire 'bin' quelque part, de préférence dans le répertoire de données de l'IDE Terminal (que j'utilise). Puis créez un lien symbolique dans ce répertoire : sh -> /system/bin/sh. Ensuite, créez 'bin' dans / à travers et utilisez le montage du premier bin dans /bin à travers init.rc.

Troisièmement, je peux juste mkdir bin et cp /system/bin/sh /bin/sh

En outre, toutes ces méthodes échoueront et entraîneront l'échec du démarrage si l'un des répertoires sources est introuvable.

Je veux savoir quelle méthode sera la plus sûre et s'il existe une alternative plus sûre ?

2voto

moonbutt74 Points 663

@vishalbiswas Pour que cela fonctionne, vous devez également exporter PATH et LD_LIBRARY_PATH.

vous pouvez en fait créer un script pour votre configuration requise et pousser ce script dans xbin pour qu'il soit exécuté en tant qu'exécutable. vous auriez donc quelque chose comme ceci pour la configuration, nommez le script comme vous le souhaitez

#!/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

ce qui précède est lâche, bricolez un peu, maintenant pour le fermer dans l'ordre inverse.

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

les répertoires /bin et /lib devraient disparaître au redémarrage puisqu'ils vivent dans la mémoire vive. et vous ne devriez pas avoir besoin de désactiver PATH et LD_LIBRARY_PATH car lorsque vous fermez votre instance de terminal, ces variables devraient disparaître avec elle.

L'autre approche consiste à mettre en place un Linux armé chrooté sans fioritures dans la deuxième partition de votre carte SD externe. J'utilise debian et j'ai personnalisé mon init.environ.rc comme suit

# 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

dans cette approche, votre gestionnaire de fichiers devrait lire les fichiers et répertoires de votre partition chroot sans problème. j'utilise total commander.

EDIT- j'ai oublié l'entrée nécessaire dans fstab, elle se présente comme suit, encore une fois ajusté au schéma de votre appareil

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

Voici le tutoriel qui m'a appris à faire ce qui précède. http://whiteboard.ping.se/Android/Debian

Recherchez cependant une image de distro assez récente. Tant que vous n'essayez pas de supprimer un répertoire monté en liaison sans le démonter au préalable [ je ne l'ai jamais fait], vous ne supprimerez pas accidentellement votre système.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X