我用的是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)
离线
./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 没有改动。
离线
我先把 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)
离线