您尚未登录。

#1 2021-04-01 18:31:52

unturned3
会员
注册时间: 2020-07-01
已发帖子: 69
积分: 65

tiny200 buildroot /etc/inittab 文件是如何生成的?

我用的是aodzip大佬的buildroot包:https://github.com/aodzip/buildroot-tiny200

我想知道 output/target/etc/inittab 这个文件是怎么被buildroot 生成的,因为我修改了一下里面的内容,想让buildroot 把我的新版本保存下来,每次自动生成。

按理说这个inittab 文件应该在 system/skeleton/etc 这个目录里,然后由buildroot 拷贝至 output/target/etc,但是我并没有在 system/skeleton 里找到 inittab

我在buildroot-tiny200 的根目录下执行 find 来找哪里还有 inittab:

./package/busybox/inittab
./package/sysvinit/inittab
./output/build/busybox-1.31.1/include/config/feature/use/inittab.h
./output/build/busybox-1.31.1/examples/inittab
./output/build/busybox-1.31.1/examples/bootfloppy/etc/inittab
./output/target/etc/inittab

但是我查看了以上每一个inittab,都和 output/target/etc/inittab 不一样,说明 output/target/etc/inittab 不是从那些地方拷贝过来的。

我也看了 board 目录中的 rootfs overlay,但也没找到 inittab

请问哪位大神知道 buildroot 是如何生成这个 inittab 文件的?难道某个地方还藏着个生成 inittab 的脚本?

多谢帮助!我自己琢磨了两天了都没解决。

最近编辑记录 unturned3 (2021-04-01 18:33:00)

离线

#2 2021-04-01 22:20:18

哇酷小二
管理员
注册时间: 2020-04-22
已发帖子: 1,997
积分: 1907

Re: tiny200 buildroot /etc/inittab 文件是如何生成的?

./package/busybox/busybox.mk
./package/busybox/inittab

离线

#3 2021-04-03 17:40:33

unturned3
会员
注册时间: 2020-07-01
已发帖子: 69
积分: 65

Re: tiny200 buildroot /etc/inittab 文件是如何生成的?

哇酷小二 说:

./package/busybox/busybox.mk
./package/busybox/inittab

大佬,我看了看busybox.mk,在第216行看见了这个:

ifeq ($(BR2_TARGET_GENERIC_GETTY),y)
define BUSYBOX_SET_GETTY
    $(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(SYSTEM_GETTY_PORT)::respawn:/sbin/getty -L $(SYSTEM_GETTY_OPTIONS) $(SYSTEM_GETTY_PORT) $(SYSTEM_GETTY_BAUDRATE)         $(SYSTEM_GETTY_TERM) #~' \
        $(TARGET_DIR)/etc/inittab
endef
else
define BUSYBOX_SET_GETTY
    $(SED) '/# GENERIC_SERIAL$$/s~^.*#~#ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 #~' $(TARGET_DIR)/etc/inittab
endef
endif # BR2_TARGET_GENERIC_GETTY

这部分代码应该是修改 output/target/etc/inittab 中的默认console的。但是我在 busybox.mk 第290行又看见了这一段:

ifeq ($(BR2_INIT_BUSYBOX),y)
define BUSYBOX_INSTALL_INITTAB
    if test ! -e $(TARGET_DIR)/etc/inittab; then \
        $(INSTALL) -D -m 0644 package/busybox/inittab $(TARGET_DIR)/etc/inittab; \
    fi
endef
endif

这一段代码应该是判断 output/target/etc 里有没有 inittab,如果没有的话再把 package/busybox/inittab 给拷贝过去?不过busybox.mk 运行到第290行时,第216行的代码已经都修改 output/target/etc/inittab 里的console 了,所以说 output/target/etc/inittab 并不是从 package/busybox/inittab 拷贝过去的?

为了验证这个推测,我修改了 package/busybox/inittab 的内容,然后重新构建rootfs (运行 make clean all),发现 output/target/etc/inittab 没有改动。

离线

#4 2021-04-03 21:22:27

unturned3
会员
注册时间: 2020-07-01
已发帖子: 69
积分: 65

Re: tiny200 buildroot /etc/inittab 文件是如何生成的?

我先把 output/target/etc/inittab 删了,然后再执行:

make busybox-dirclean
make -j4 busybox-reconfigure
make all

然后 package/busybox/inittab 的内容就在 output/target/etc/inittab 里出现了。

真奇怪,可能是buildroot 内部的某些Makefile逻辑造成的?

最近编辑记录 unturned3 (2021-04-03 21:23:35)

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn