如何在编译时删除 yocto dunfell 分支中的 getty@tty1 link
How to remove getty@tty1 link in yocto dunfell branch at time of compiliation
我正在为 raspberrypi4 构建 linux 系统,但出于某种原因,我需要删除 yocto 中的 getty@tty1 服务。
我已经为此创建了 systemd_%.bbappend 文件。
主机是 Ubuntu 18.04
这是与 warrior 分支合作
现在,我正在尝试使用 yocto 中的 dunfell 分支进行编译
但是在 systemd 编译时它给出了类似
的错误
"无法删除 /etc/systemd/system/getty.target.wants/getty@tty1,没有这样的文件或目录
但最后,在最终图像中我可以看到 getty@tty1.service
此外,我找不到创建此 link 的任何其他收据。
systemd_%.bbappend 看起来像这样
DESCRIPTION = "Customization of systemD services."
do_install_append() {
rm ${D}${sysconfdir}/systemd/system/getty.target.wants/getty@tty1.service
}
FILES_${PN} += "${sysconfdir}/systemd/system"
REQUIRED_DISTRO_FEATURES= "systemd"
谢谢
边际
在较新版本的 systemd 中(如 Yocto dunfell 中的版本),服务链接不是由构建系统 (ninja) 创建的,而是由 运行ning systemctl preset-all
安装后 运行ning 系统(参见 here). This command reads the systemd preset files 确定默认启用或禁用哪些单元。
在 Yocto 中,这意味着在图像创建过程中,systemctl preset-all
不是作为 systemd 配方的一部分创建的链接,而是 运行 作为 IMAGE_PREPROCESS_COMMAND
的一部分image.bbclass
(参见 here)。这就是为什么从 systemd 配方中删除 /etc/systemd/system
中的符号链接的旧方法不再有效的原因。
相反,您需要做的是修改 90-systemd.preset
文件以通过更改以下行来禁用 getty@tty1
预设(或任何其他默认系统服务):
enable getty@.service
对此:
disable getty@.service
您可以使用 bbappend
文件完成此操作,如下所示*:
# systemd_%.bbappend
do_install_append() {
# Disable getty@tty1 from starting at boot time.
sed -i -e "s/enable getty@.service/disable getty@.service/g" ${D}${systemd_unitdir}/system-preset/90-systemd.preset
}
*
我正在为 raspberrypi4 构建 linux 系统,但出于某种原因,我需要删除 yocto 中的 getty@tty1 服务。
我已经为此创建了 systemd_%.bbappend 文件。
主机是 Ubuntu 18.04
这是与 warrior 分支合作
现在,我正在尝试使用 yocto 中的 dunfell 分支进行编译
但是在 systemd 编译时它给出了类似
的错误"无法删除 /etc/systemd/system/getty.target.wants/getty@tty1,没有这样的文件或目录
但最后,在最终图像中我可以看到 getty@tty1.service
此外,我找不到创建此 link 的任何其他收据。
systemd_%.bbappend 看起来像这样
DESCRIPTION = "Customization of systemD services."
do_install_append() {
rm ${D}${sysconfdir}/systemd/system/getty.target.wants/getty@tty1.service
}
FILES_${PN} += "${sysconfdir}/systemd/system"
REQUIRED_DISTRO_FEATURES= "systemd"
谢谢
边际
在较新版本的 systemd 中(如 Yocto dunfell 中的版本),服务链接不是由构建系统 (ninja) 创建的,而是由 运行ning systemctl preset-all
安装后 运行ning 系统(参见 here). This command reads the systemd preset files 确定默认启用或禁用哪些单元。
在 Yocto 中,这意味着在图像创建过程中,systemctl preset-all
不是作为 systemd 配方的一部分创建的链接,而是 运行 作为 IMAGE_PREPROCESS_COMMAND
的一部分image.bbclass
(参见 here)。这就是为什么从 systemd 配方中删除 /etc/systemd/system
中的符号链接的旧方法不再有效的原因。
相反,您需要做的是修改 90-systemd.preset
文件以通过更改以下行来禁用 getty@tty1
预设(或任何其他默认系统服务):
enable getty@.service
对此:
disable getty@.service
您可以使用 bbappend
文件完成此操作,如下所示*:
# systemd_%.bbappend
do_install_append() {
# Disable getty@tty1 from starting at boot time.
sed -i -e "s/enable getty@.service/disable getty@.service/g" ${D}${systemd_unitdir}/system-preset/90-systemd.preset
}
*