Yocto 不打包 busybox 系统日志文件
Yocto doesn't pack busybox syslog files
我正在使用 Yocto 2.3 构建我的设备映像。
我的图片包含 packagegroup-core-boot
,而 packagegroup-core-boot
又包含 busybox
.
IMAGE_INSTALL = "\
....
packagegroup-core-boot \
Busybox 配置为包含 syslogd:
CONFIG_SYSLOGD=y
CONFIG_FEATURE_ROTATE_LOGFILE=y
CONFIG_FEATURE_REMOTE_LOG=y
CONFIG_FEATURE_SYSLOGD_DUP=y
CONFIG_FEATURE_SYSLOGD_CFG=y
CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256
CONFIG_FEATURE_IPC_SYSLOG=y
CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=64
CONFIG_LOGREAD=y
CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
CONFIG_FEATURE_KMSG_SYSLOG=y
CONFIG_KLOGD=y
它已正确构建和安装。
相关的系统日志文件确实出现在 busybox image
目录中:
tmp/work/armv5e-poky-linux-gnueabi/busybox/1.24.1-r0/image$ tree etc/
etc/
├── default
├── init.d
│ └── syslog.busybox
├── syslog.conf.busybox
├── syslog-startup.conf.busybox
不过这些文件没有出现在我的主映像 rootfs 中。仅包含 syslogd
命令。查看目标设备上的输出:
# ls -l $( which syslogd )
lrwxrwxrwx 1 root root 19 Jan 10 12:31 /sbin/syslogd -> /bin/busybox.nosuid
会发生什么情况导致此文件不包含在最终图像中?
附加问题:
如 tree
输出所示,syslog 的初始化脚本包含在 busybox 中,但没有创建 link 到 /etc/rc?.d/
。
我知道应该由 do_install()
钩子创建,不应该吗?
提前致谢。
编辑
packages-split
的内容,正如@Anders 所说,似乎没问题:
poky/build-idprint/tmp/work/armv5e-poky-linux-gnueabi/busybox/1.24.1-r0$ tree packages-split/busybox-syslog/
packages-split/busybox-syslog/
└── etc
├── init.d
│ ├── syslog
│ └── syslog.busybox
├── syslog.conf
├── syslog.conf.busybox
├── syslog-startup.conf
└── syslog-startup.conf.busybox
我只是想不通是什么从最终图像中剥离了这些文件。
勾选tmp/work/armv5e-poky-linux-gnueabi/busybox/1.24.1-r0/packages-split
。这是将所有文件拆分为将生成的包的地方。如果您搜索该目录,您会在 busybox-syslog
包中找到例如 syslog.conf
。
因此,为了将这些文件添加到您的映像中,您需要将 busybox-syslog
添加到您的映像中。 IE。 IMAGE_INSTALL += "busybox-syslog"
.
我正在使用 Yocto 2.3 构建我的设备映像。
我的图片包含 packagegroup-core-boot
,而 packagegroup-core-boot
又包含 busybox
.
IMAGE_INSTALL = "\
....
packagegroup-core-boot \
Busybox 配置为包含 syslogd:
CONFIG_SYSLOGD=y
CONFIG_FEATURE_ROTATE_LOGFILE=y
CONFIG_FEATURE_REMOTE_LOG=y
CONFIG_FEATURE_SYSLOGD_DUP=y
CONFIG_FEATURE_SYSLOGD_CFG=y
CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256
CONFIG_FEATURE_IPC_SYSLOG=y
CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=64
CONFIG_LOGREAD=y
CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
CONFIG_FEATURE_KMSG_SYSLOG=y
CONFIG_KLOGD=y
它已正确构建和安装。
相关的系统日志文件确实出现在 busybox image
目录中:
tmp/work/armv5e-poky-linux-gnueabi/busybox/1.24.1-r0/image$ tree etc/
etc/
├── default
├── init.d
│ └── syslog.busybox
├── syslog.conf.busybox
├── syslog-startup.conf.busybox
不过这些文件没有出现在我的主映像 rootfs 中。仅包含 syslogd
命令。查看目标设备上的输出:
# ls -l $( which syslogd )
lrwxrwxrwx 1 root root 19 Jan 10 12:31 /sbin/syslogd -> /bin/busybox.nosuid
会发生什么情况导致此文件不包含在最终图像中?
附加问题:
如 tree
输出所示,syslog 的初始化脚本包含在 busybox 中,但没有创建 link 到 /etc/rc?.d/
。
我知道应该由 do_install()
钩子创建,不应该吗?
提前致谢。
编辑
packages-split
的内容,正如@Anders 所说,似乎没问题:
poky/build-idprint/tmp/work/armv5e-poky-linux-gnueabi/busybox/1.24.1-r0$ tree packages-split/busybox-syslog/
packages-split/busybox-syslog/
└── etc
├── init.d
│ ├── syslog
│ └── syslog.busybox
├── syslog.conf
├── syslog.conf.busybox
├── syslog-startup.conf
└── syslog-startup.conf.busybox
我只是想不通是什么从最终图像中剥离了这些文件。
勾选tmp/work/armv5e-poky-linux-gnueabi/busybox/1.24.1-r0/packages-split
。这是将所有文件拆分为将生成的包的地方。如果您搜索该目录,您会在 busybox-syslog
包中找到例如 syslog.conf
。
因此,为了将这些文件添加到您的映像中,您需要将 busybox-syslog
添加到您的映像中。 IE。 IMAGE_INSTALL += "busybox-syslog"
.