[PATCH 4/4] systemd: arrange for volatile /etc/resolv.conf

Christopher Larson
2015-11-12T23:41:53Z

From: Christopher Larson <chris_larson@mentor.com>

On sysvinit systems, volatiles is configured to make /etc/resolv.conf symlink
to a file in a volatile path, which lets us write to /etc/resolv.conf for
read-only-rootfs. For systemd, this isn't set up unless we enable
systemd-resolved, which we don't by default. When it's not enabled, create the
/etc/resolv.conf symlink and ensure the volatile path is created on boot with
tmpfiles.d.

Signed-off-by: Christopher Larson <chris_larson@mentor.com>
---
meta/recipes-core/systemd/systemd_225.bb | 8 ++++++++
1 file changed, 8 insertions(+)

diff --git a/meta/recipes-core/systemd/systemd_225.bb b/meta/recipes-core/systemd/systemd_225.bb
index 20515f5..095448d 100644
--- a/meta/recipes-core/systemd/systemd_225.bb
+++ b/meta/recipes-core/systemd/systemd_225.bb
@@ -196,6 +196,13 @@ do_install() {
if [ -s ${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf ]; then
${@bb.utils.contains('PACKAGECONFIG', 'networkd', ':', 'sed -i -e "\$ad /run/systemd/netif/links 0755 root root -" ${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf', d)}
fi
+ if ! ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'true', 'false', d)}; then
+ # if resolved is disabled, it won't handle the link of resolv.conf, so
+ # set it up ourselves
+ ln -s ../run/resolv.conf ${D}${sysconfdir}/resolv.conf
+ echo 'L! ${sysconfdir}/resolv.conf - - - - ../run/resolv.conf' >>${D}${exec_prefix}/lib/tmpfiles.d/etc.conf
+ echo 'f /run/resolv.conf 0644 root root' >>${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf
+ fi
install -Dm 0755 ${S}/src/systemctl/systemd-sysv-install.SKELETON ${D}${systemd_unitdir}/systemd-sysv-install
}

@@ -290,6 +297,7 @@ FILES_${PN} = " ${base_bindir}/* \
${sysconfdir}/tmpfiles.d/ \
${sysconfdir}/xdg/ \
${sysconfdir}/init.d/README \
+ ${sysconfdir}/resolv.conf \
${rootlibexecdir}/systemd/* \
${systemd_unitdir}/* \
${base_libdir}/security/*.so \
--
2.2.1