2013-02-21 4 views
1

Je veux exécuter la glibc dans Android ICS Emulator, pour lequel j'ai inclus la glibc dans un dossier séparé dans le dossier racine AOSP, avec Android.mk dedans avec le contenu ci-dessous:ne peut pas faire chroot avec le script init shell dans android

Il copie l'ensemble du dossier glibc dans out/target/product/generic/system/folder. Et faire snod inclut dans le system.img

Il y a le script startglibc.sh et init.sh withing dossier glibc qui obtient copié/système/glibc &/système/glibc/root/dossier respectivement.

J'ai busybox compilé et copié dans/system/bin/dossier.

Contenu de /system/glibc/startglibc.sh est comme ci-dessous:

BUSYBOX=/system/bin/busybox 
mnt=/system/glibc 

export PATH=/usr/bin:/usr/sbin:/bin:$PATH 
export ROOT=/root 

${BUSYBOX} chroot $mnt /root/init.sh 

Le startglibc.sh est appelé à partir init.goldfish.rc comme ci-dessous:

service myscript /system/bin/busybox ash /system/glibc/startglibc.sh 
    class main 
    oneshot 

J'ai donné 777 et racine: racine que l'autorisation de fichier pour init.sh en utilisant le système/core/include/privé/android_filesystem_config.h comme ci-dessous:

{ 00777, AID_ROOT,  AID_ROOT,  "system/glibc/root/init.sh" }, 

Pendant le démarrage, le script startglibc.sh est appelé, mais lors de l'exécution de chroot, il donne une erreur d'autorisation refusée. Est-ce que je manque quelque chose pour faire chroot using init.sh? Ou est-ce que je copie incorrectement le dossier de glibc pendant la construction d'Android AOSP?

+0

J'ai apporté quelques corrections à la question afin qu'elle puisse être rouverte. S'il vous plaît aidez-moi à rouvrir la question, merci Ruchik – Rookie

Répondre

0

J'ai réussi à faire chroot. Ci-dessous est ce que j'ai fait:

chroot nécessite non seulement le script init ou/bin/sh avec l'autorisation d'exécution, mais la plupart des dossiers du système de fichiers comme bin. etc. var. etc. pour créer une nouvelle racine.

Par conséquent, j'ai donné ci-dessous dans le système/core/include/privé/android_filesystem_config.h

{ 00755, AID_ROOT,  AID_ROOT,  "system/glibc/" }, 
{ 00755, AID_ROOT,  AID_ROOT,  "system/glibc/*" }, 

Parce que quand je copie le dossier entier lors de la construction du PSBA, par défaut l'autorisation pour tous les fichiers et les dossiers dossier copié est 644 et par conséquent les dossiers nécessaires requis pour chroot n'ont pas d'autorisation d'exécution.

De même, si l'un des dossiers de la copie nécessite des autorisations supplémentaires, nous pouvons spécifier le même code ci-dessus.

J'ai vraiment aimé la façon dont android donne les permissions au système de fichiers. C'est extrêmement configurable. Je souhaite que cela aide quelqu'un d'autre aussi.

Questions connexes