Android ICSEmulator内でglibcを実行したいのですが。glibcをAOSPルートフォルダーの別のフォルダーとしてバンドルし、Android.mkに以下の内容を含めます。
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
$(shell mkdir -p $(TARGET_OUT)/glibc/)
$(shell cp -rf $(LOCAL_PATH)/* `pwd`/$(TARGET_OUT)/glibc/)
glibcフォルダー全体をout/target / product / generic /system/フォルダーにコピーします。そして、makesnodはそれをsystem.imgに含めます
startglibc.shおよびinit.shスクリプトがあり、それぞれ/ system/glibcおよび/system/ glibc /root/フォルダーにコピーされるglibcフォルダーがあります。
私はbusyboxをコンパイルして/system/bin/フォルダーにコピーしました。
/system/glibc/startglibc.shの内容は次のとおりです。
BUSYBOX=/system/bin/busybox
mnt=/system/glibc
export PATH=/usr/bin:/usr/sbin:/bin:$PATH
export ROOT=/root
${BUSYBOX} chroot $mnt /root/init.sh
startglibc.shは、次のようにinit.goldfish.rcから呼び出されます。
service myscript /system/bin/busybox ash /system/glibc/startglibc.sh
class main
oneshot
以下のように、system / core / include / private / android_filesystem_config.hを使用して、init.shのファイル権限として777とroot:rootを付与しました。
{ 00777, AID_ROOT, AID_ROOT, "system/glibc/root/init.sh" },
起動時にstartglibc.shスクリプトが呼び出されますが、chrootの実行中に、パーミッション拒否エラーが発生します。
init.shを使用してchrootを実行するために何かが足りませんか?または、Android AOSPのビルド中にglibcフォルダーを間違ってコピーしていますか?