转载时请注明出处和作者联系方式:http://blog.csdn.net/mimepp
作者联系方式:YU TAO <yut616 at sohu dot com>
关键字: yocto, docker, container, gobject-introspection, "Invalid argument", cap_inode_getsecurity, d_find_any_alias(), d_find_alias()
近期遇到一个 kernel overlay fs 文件系统的一个问题,这里将相关内容做一个记录。
你如果使用 docker container 容器来编译 yocto,如ubuntu 16.04, kernel 4.15, 可能会遇到相同的问题,提示 “Invalid argument” 错误:
./g-ir-compiler: line 117: tmp/work/x86_64-linux/gobject-introspection-native/1.54.1-r0/build/.libs/lt-g-ir-compiler: Invalid argument
而且还是个很随机出现的问题,但出错时,始终为同一个地方 lt-g-ir-compiler。
网络上也有人报告类似问题:
https://www.spinics.net/lists/linux-unionfs/msg05363.html
[13181.958681] Invalid argument reading file caps for
/vol/mnt/m/build/tmp/work/x86_64-linux/gobject-introspection-native/1.50.0-r0/build/.libs/lt-g-ir-compiler
还好,已经得到了解决。
Author: Eddie.Horng <eddie.horng@mediatek.com>
Date: Fri Jul 20 15:30:00 2018 +0800
cap_inode_getsecurity: use d_find_any_alias() instead of d_find_alias()
commit 355139a8dba446cc11a424cddbf7afebc3041ba1 upstream.
patch:
https://github.com/torvalds/linux/commit/355139a8dba446cc11a424cddbf7afebc3041ba1
从 4.18.7 开始进入了 kernel
https://elixir.bootlin.com/linux/v4.18.7/source/security/commoncap.c#L391
4.19+ 也有了。
所以解决办法就是升级 kernel 到 4.19。