Android6.0 init.rc中创建符号链接失败问题

Android6.0直接在init.rc创建符号链接问题失败,说明Android6.0对权限控制更加严格了。

看看我们一开始在init.rc中的修改:


on init

    # See storage config details at http://source.android.com/tech/storage/

 

    symlink /storage/self/primary /mnt/sdcard

    symlink /storage/self/primary /storage/sdcard0
在我们自己的init.rc中的init中增加下面两个软链接,没有成功,不知道什么原因,于是想在init进程中打下log


int do_symlink(int nargs, char **args)

{

    int result;

    const char * str = "/storage/self/primary";

    char *resultstr;

    result = symlink(args[1], args[2]);

    if (strcmp(args[1],str) == 0) {

        ERROR("1111 do_symlink str:'%s' result:%d\n", args[2], result);

    }

    if (result == -1) {

        resultstr = strerror(errno);

        ERROR("1122 do_symlink str:'%s' resultstr:'%s'\n", args[2], resultstr);

    }

    

    return result;

}


allow init rootfs:lnk_file { create unlink };

allow init storage_file:lnk_file { create unlink };

allow init tmpfs:lnk_file { create unlink };
 

其中storage_file和tmpfs这两个类型,通过ls -Z可以查看。

 

修改了以后,发现/mnt/sdcard的软链接成功了,但是storage没有成功,后面发现,在post-fs中有如下代码


on post-fs

    start logd

 

    #add for amt

    chmod 0755 /amt

    # once everything is setup, no need to modify /

    mount rootfs rootfs / ro remount

    # Mount shared so changes propagate into child namespaces

    mount rootfs rootfs / shared rec

    # Mount default storage into root namespace

    mount none /mnt/runtime/default /storage slave bind rec
 

mount一个设备到storage下面,因此我们的软链接就不充了。

 

因此我们要在这之后再去建软链接,


on late-init

    trigger early-fs

    trigger fs

    trigger post-fs

    trigger post-fs-data

 

    # Load properties from /system/ + /factory after fs mount. Place

    # this in another action so that the load will be scheduled after the prior

    # issued fs triggers have completed.

    trigger load_all_props_action

 

    # Remove a file to wake up anything waiting for firmware.

    trigger firmware_mounts_complete

 

    trigger early-boot

    trigger boot
 

post-fs是在late-init中,因此我们可以把创建软链接放在post-fs-data


on post-fs-data

    chown system system /dev/st480

    chmod 0660  /dev/st480

    symlink /storage/self/primary /storage/sdcard0

    symlink /storage/self/primary /mnt/sdcard
 

这样就可以了,总结下需要在init.te添加创建软链接的权限,然后因为涉及到mount storage所以在storage建立的软链接没有生效。可以把创建软链接移后,放在mount storage后面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值