9 votes

Comment exécuter un script au démarrage dans CM12.1?

La plupart des questions que je trouve à ce sujet datent de 2011, il n'est donc peut-être pas surprenant que les choses aient changé depuis. J'ai essayé toute une série de choses, sans aucun résultat.

Il y a quelques scripts dans /system/etc/init.d (qui apparaît également sous /etc/init.d sur mon appareil). En particulier, il y a un script 00banner censé enregistrer un message de bienvenue. Le message de bienvenue n'apparaît jamais dans logcat.

J'ai placé mon propre script ici, qui a finalement été réduit à rien d'autre que ceci:

#!/system/bin/sh
log -t mytest Testing

Rien. N'apparaît jamais dans logcat sauf s'il est exécuté manuellement via le terminal. Ensuite, ça fonctionne.

Il y a aussi un fichier 90userinit ici, qui appelle /data/local/userinit.sh s'il existe. Je l'ai créé avec les mêmes contenus que ci-dessus. Encore une fois, rien n'apparaît jamais dans logcat. Ce qui n'est pas surprenant, vraiment, puisque si 00banner ne fonctionne pas, celui-ci ne le sera pas non plus.

J'ai cherché quelque chose appelé "init.rc" mais rien de tel n'existe nulle part sur mon appareil.

Tous mes scripts ont des autorisations 755.

Que puis-je essayer d'autre? (autre que des applications qui exécutent des scripts pour moi)

0 votes

Quel script vous voulez exécuter, et pourquoi ?

0 votes

Malheureusement, la petite quantité de fouilles que j'ai faites a abouti à "Ne fonctionnera pas sur des ROM personnalisées". Apparemment, CM a sa propre manière de faire les choses. Pas sûr que vous vouliez vous en mêler. Mais apparemment, vous pouvez construire votre propre fichier boot.img et y ajouter vos scripts personnalisés. Peut-être que cela fonctionnera pour vous.

0 votes

@jer3my Je suis parfaitement heureux d'accepter cela comme réponse et d'attribuer la prime si vous avez des liens qui me convaincront/auront de l'autorité.

6voto

lord-ralf-adolf Points 1063

Il existe une méthode simple pour ajouter le support init.d à tout appareil Android rooté pour les versions 4.0 et supérieures, Google a créé un script qui s'exécute au démarrage en tant que superutilisateur, le script est install-recovery.sh il est utilisé pour reflasher la récupération d'origine à chaque démarrage, ils ont pensé que c'était une bonne sécurité pour empêcher les récupérations personnalisées mais cela a ouvert une nouvelle faille qui peut être exploitée par les utilisateurs pour simuler la fonctionnalité init.d.

Dépendances : afin que cette méthode fonctionne, vous avez besoin des éléments suivants :

  1. Busybox installé avec le symlink run-parts vers votre chemin comme /system/xbin
  2. Évidemment, vous aurez besoin d'un téléphone rooté avec le /system pouvant être monté en rw
  3. La version du noyau n'a pas d'importance.

Méthode I : (La plus facile !)

  1. Téléchargez cette APK (libre d'utilisation, ne miroir, merci @Ryuinferno de XDA).
  2. Installez l'apk comme n'importe quelle application normale.
  3. Lancez l'application.
  4. Cliquez sur Activer ! c'est tout, vous êtes prêt, init.d est désormais pris en charge, vous pouvez cliquer sur le bouton de test ou redémarrer votre téléphone pour voir si vos scripts init.d sont exécutés
  5. Vous pouvez désinstaller l'application sans affecter le support init.d

Méthode II : (difficulté : moyenne)

  1. Téléchargez ce zip, décompressez-le et placez init.sh sur votre carte SD (dans cet exemple, ce sera /sdcard, cela peut varier d'un appareil à l'autre.

  2. Maintenant, ouvrez un terminal, ou utilisez adb shell depuis un ordinateur et exécutez le script.
    su
    cp /sdcard/init.sh /data/tmp/init.sh
    chmod 777 /data/tmp/init.sh
    /data/tmp/init.sh

Le script s'exécutera et vous demandera de redémarrer deux fois, c'est tout, vous avez officiellement le support init.d :D

Référence : [MOD][APK+SCRIPT+ZIP] Activer Init.d pour tous les téléphones sans avoir besoin de noyaux personnalisés!!!

0 votes

Étant donné que le fichier zip est hébergé sur XDA, il doit y avoir un tutoriel que vous avez suivi ou dont vous avez d'une manière ou d'une autre pris connaissance. Pouvez-vous mentionner le lien pour cela? J'ai besoin de chercher quelque chose d'autre dedans. :)

1 votes

@Firelord oui le script n'est pas le mien, il a été utilisé à d'autres fins, je l'ai pris d'ici la vue d'un seul post > forum.xda-developers.com/…, le tutoriel complet concerne xposed et nexus 6 >> forum.xda-developers.com/nexus-6/general/…

0 votes

@Firelord trouver le nouveau lien de référence inclus dans la réponse :)

2voto

Lena Points 176

Éditer : J'ai vu la fin du post, C'est une façon, je vais essayer d'ajouter sans applications dès que possible (je ne suis pas à la maison, publication via mobile), mais vous pouvez utiliser ceci, si rien d'autre ne fonctionne.

Vous pouvez essayer d'utiliser l'application appelée Tasker.

Il coûte 3,29$ et nécessite un accès root mais il peut exécuter des scripts Shell. De plus, il y a une version d'essai pour que vous puissiez essayer avant d'acheter.

Créez d'abord la tâche. Allez dans l'onglet Tâche, appuyez sur le signe +, saisissez le nom de la tâche. Maintenant, appuyez à nouveau sur le signe +, et tapez shell dans le filtre. Vous trouverez l'option Exécuter Shell, sélectionnez-la, et configurez-la selon vos besoins.

Ensuite, retournez à l'onglet principal - Profils, appuyez sur le signe + pour en créer un nouveau. Sélectionnez l'Événement comme type, allez dans Système et sélectionnez Démarrage de l'appareil. Revenez en arrière et on vous demandera de choisir une tâche. Sélectionnez maintenant la tâche précédemment créée et vous êtes prêt à partir!

1voto

jer3my Points 618

Cela nécessite que vous flashiez un fichier zip, mais ensuite vous pouvez mettre vos scripts dans /system/etc/startup et ils devraient démarrer automatiquement avec le téléphone.

http://forum.xda-developers.com/showthread.php?t=2664645

Aussi à partir de mon commentaire sous la question. J'ai essayé de chercher dans mon historique mais je n'ai pas pu trouver le lien où les gens affirmaient que CM avait sa propre façon d'exécuter des scripts au démarrage.

Éditer. Après avoir creusé un peu plus, ce n'est pas CM, en soi, qui fait sa propre chose pour les scripts. C'est le noyau. Tous les noyaux ne prennent pas en charge init.d pour android. Si vous indiquez quel appareil vous utilisez, je peux chercher un noyau qui prend en charge les scripts personnalisés au démarrage pour vous.

0voto

Entaah Laah Points 9

J'ai également le même problème pour exécuter un fichier de script dans le terminal dans CM12.1. La solution consiste à copier le script dans le dossier /data et à l'exécuter. Je pense donc que CM 12 ne permet l'exécution de scripts que depuis certains emplacements.

0voto

Seff Points 136

Manière simple (fonctionne) :

  1. Préparez vos commandes de démarrage dans un script, par exemple /system/xbin/post-boot (définissez les permissions d'exécution)

  2. Ajoutez le chemin du script personnalisé ci-dessus à la fin de /system/etc/init.qcom.post_boot.sh

Exemple :

echo /system/xbin/post-boot >> /system/etc/init.qcom.post_boot.sh

C'est fait !

(Si vous ne trouvez pas le post_boot qcom (appareils Qualcomm), cherchez d'autres scripts post_boot)

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