> 文档中心 > OpenHarmony(10) —— “续下命”,然后还可以再挣扎一段时间

OpenHarmony(10) —— “续下命”,然后还可以再挣扎一段时间

OpenHarmony3.0出来很久了,之前也研究了一点,主要是想从头开始,从linux启动init进程开始了解OpenHarmony(linux版)。

        之前的一点研究 OpenHarmony: 了解OpenHarmony并移植再使用的记录 (gitee.com)

这里提一点,一开始以为xx_lite 方式比较合适,见README_learn.md,在研究了解并按自己想法改写(init作为主要程序,其他service以.so方式加载)时遇到一个fchmodat BUG问题

    uid_t uid = getuid();
    struct passwd *pswd = getpwuid(uid);
    gid_t gid = getgid();
    struct group *grp = getgrgid(gid);
    INIT_LOGI(">>><<pw_name, gid, grp->gr_name);
    
    uid = geteuid();
    pswd = getpwuid(uid);
    gid = getegid();
    grp = getgrgid(gid);
    INIT_LOGI(">>><<pw_name, gid, grp->gr_name);

    pswd = getpwuid(sockopt->uid);
    grp = getgrgid(sockopt->gid);
    INIT_LOGI(">>><<< sock %s uid %u(%s) gid %u(%s)", 
                addr.sun_path, sockopt->uid, pswd->pw_name, sockopt->gid, grp->gr_name);

    if (fchmodat(AT_FDCWD, addr.sun_path, sockopt->perm, AT_SYMLINK_NOFOLLOW)) {
        unlink(addr.sun_path);
        close(sockopt->sockFd);

init_lite fchmodat 95 操作不允许,为何不行?euid还是0root,设置1036logd权限还不行?

原因见 宋宝华 的 Linux阅码场 - Linux内核月报(2020年09月)_宋宝华的博客-CSDN博客

尝试文中提及的修复方式,但由于工具链libc库问题,无法实现。

于是更改方向,研究xxx_standard,见README.md

学习了Parcelable二进制序列化(真的够语言底层,了解真实的数据存储结构),改写出简单(只分配一个page,使用中不够时再增加)的IPC binder 通信机制

C相关的内容,我都能一点点研究(抠)出来,

然后到了ACE JS运行环境初始化,需要quickjs flutter

这些对于一个C用户来说,想要了解清楚机制并使用起来还是很有难度的。

OpenHarmony之路暂时卡在这里了。。。。。。