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

标签 linux build linux-kernel openembedded bitbake

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

我期待在 meta 目录中的某处找到这个文件(在构建之前),就像名为“profile”的文件在 poky 目录中一样。

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

最佳答案

我检查了 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

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

有两种简单的方法可以在您的文件根文件系统上更改此文件的内容。正确的方法是添加一个带有自定义更改的层:为影子包创建一个 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。

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

关于linux - Yocto如何生成这些/etc/limits文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18228503/

相关文章:

c - 在 GNU C 内联汇编中编写 Linux int 80h 系统调用包装器

linux-kernel - 4.8 内核中的 sys_call_table 读保护吗?

linux - ubuntu 上的 Cython 独立可执行文件

linux - '声明-A x' 与 'declare -A x=()'

regex - sed 4.2.2 中的数字匹配错误?

java - 自动构建和部署 Java Web 应用程序

java - Gradle 构建旧版本代码

eclipse - 编写Dart构建脚本= builder.dart

linux-kernel - 扁平化设备树有什么用 - Linux Kernel

c++ - 队列自旋锁