Yocto如何生成这些/ etc / limits文件

时间:2013-08-14 09:52:18

标签: linux build linux-kernel openembedded bitbake

我一直在使用Yocto构建系统构建自定义内核映像。现在我想在开始构建之前更改文件/ etc / limits /但是当我尝试找到此文件“limits”时,找不到任何内容文件名限制并且知道这个文件是在构建之后生成的。

我原本希望在meta目录中的某个地方找到这个文件(在构建之前),就像poky目录中名为“profile”的文件一样。

现在我的问题是yocto构建系统如何生成这个文件/ etc / limits文件,在构建之前我在哪里可以找到这个文件

1 个答案:

答案 0 :(得分:3)

我有Danny分支(Yocto 1.3)和Dylan分支(Yocto 1.4),并且在这两个版本中,文件/ etc / limits由shadow包生成。所以我不确定你为什么说这个文件是在构建之后生成的。通常,当我需要找出文件的来源时,我会搜索生成的二进制包。在您的情况下,在构建core-image-base之后,我执行了这个快速搜索:

$ cd tmp/deploy/rpm
$ find . -name '*.rpm' | while read A; do $RPM -qpl $A | grep etc/limits; \
if [ $? -eq 0 ]; then echo $A; fi; done
/etc/limits
./armv7a_vfp_neon/shadow-4.1.4.3-r13.armv7a_vfp_neon.rpm

这告诉我限制文件来自shadow包。当bitbake执行该包的do_install()任务时,包的自己的Makefile会从包含在shadow包中的模板安装该文件。

有两种简单的方法可以在文件根文件系统上更改此文件的内容。正确的方法是添加一个包含自定义更改的图层:为shadow包创建bbappend,使用SRC_URI =“file:// limits”添加自己的限制文件,然后添加do_install_append()方法以安装自定义文件包自己的安装方法。在poky中有很多使用这种技术的例子。

另一种方法是使用后期处理命令。

ROOTFS_POSTPROCESS_COMMAND += "use_my_limits_file; "

其中use_my_limits_file只是一个安装自定义限制文件的bash shell函数。有关使用ROOTFS_POSTPROCESS_COMMAND的结构示例,请参阅poky的insserv.bbclass。

希望这会有所帮助。快乐的黑客!