diff mbox series

[1/3] kea: add volatile files to create runtime directory

Message ID 20251218033846.107161-1-yi.zhao@windriver.com
State New
Headers show
Series [1/3] kea: add volatile files to create runtime directory | expand

Commit Message

Yi Zhao Dec. 18, 2025, 3:38 a.m. UTC
Use volatile files to create runtime directories, instead of creating
them in systemd unit/initscript files.

Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
---
 .../kea/files/kea-dhcp-ddns.service           |  2 -
 .../kea/files/kea-dhcp4.service               |  3 --
 .../kea/files/kea-dhcp6.service               |  3 --
 .../kea/files/kea.tmpfiles                    |  2 +
 .../kea/files/kea.volatiles                   |  2 +
 meta/recipes-connectivity/kea/kea_3.0.1.bb    | 43 +++++++++++++------
 6 files changed, 34 insertions(+), 21 deletions(-)
 create mode 100644 meta/recipes-connectivity/kea/files/kea.tmpfiles
 create mode 100644 meta/recipes-connectivity/kea/files/kea.volatiles

Comments

Anuj Mittal Dec. 18, 2025, 4:21 a.m. UTC | #1
On Thu, Dec 18, 2025 at 11:39 AM Yi Zhao via lists.openembedded.org
<yi.zhao=eng.windriver.com@lists.openembedded.org> wrote:
>
> Use volatile files to create runtime directories, instead of creating
> them in systemd unit/initscript files.
>
> Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
> ---
>  .../kea/files/kea-dhcp-ddns.service           |  2 -
>  .../kea/files/kea-dhcp4.service               |  3 --
>  .../kea/files/kea-dhcp6.service               |  3 --
>  .../kea/files/kea.tmpfiles                    |  2 +
>  .../kea/files/kea.volatiles                   |  2 +
>  meta/recipes-connectivity/kea/kea_3.0.1.bb    | 43 +++++++++++++------
>  6 files changed, 34 insertions(+), 21 deletions(-)
>  create mode 100644 meta/recipes-connectivity/kea/files/kea.tmpfiles
>  create mode 100644 meta/recipes-connectivity/kea/files/kea.volatiles
>
> diff --git a/meta/recipes-connectivity/kea/files/kea-dhcp-ddns.service b/meta/recipes-connectivity/kea/files/kea-dhcp-ddns.service
> index aec6446f0e..fe09ef6437 100644
> --- a/meta/recipes-connectivity/kea/files/kea-dhcp-ddns.service
> +++ b/meta/recipes-connectivity/kea/files/kea-dhcp-ddns.service
> @@ -5,8 +5,6 @@ After=network-online.target
>  After=time-sync.target
>
>  [Service]
> -ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/run/kea/
> -ExecStartPre=@BASE_BINDIR@/chmod 750 @LOCALSTATEDIR@/run/kea/
>  ExecStart=@SBINDIR@/kea-dhcp-ddns -c @SYSCONFDIR@/kea/kea-dhcp-ddns.conf
>
>  [Install]
> diff --git a/meta/recipes-connectivity/kea/files/kea-dhcp4.service b/meta/recipes-connectivity/kea/files/kea-dhcp4.service
> index a2ed4edb59..a48a230654 100644
> --- a/meta/recipes-connectivity/kea/files/kea-dhcp4.service
> +++ b/meta/recipes-connectivity/kea/files/kea-dhcp4.service
> @@ -5,9 +5,6 @@ After=network-online.target
>  After=time-sync.target
>
>  [Service]
> -ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/run/kea/
> -ExecStartPre=@BASE_BINDIR@/chmod 750 @LOCALSTATEDIR@/run/kea/
> -ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/lib/kea
>  ExecStart=@SBINDIR@/kea-dhcp4 -c @SYSCONFDIR@/kea/kea-dhcp4.conf
>
>  [Install]
> diff --git a/meta/recipes-connectivity/kea/files/kea-dhcp6.service b/meta/recipes-connectivity/kea/files/kea-dhcp6.service
> index ed6e017d0c..a441df9ad2 100644
> --- a/meta/recipes-connectivity/kea/files/kea-dhcp6.service
> +++ b/meta/recipes-connectivity/kea/files/kea-dhcp6.service
> @@ -5,9 +5,6 @@ After=network-online.target
>  After=time-sync.target
>
>  [Service]
> -ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/run/kea/
> -ExecStartPre=@BASE_BINDIR@/chmod 750 @LOCALSTATEDIR@/run/kea/
> -ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/lib/kea
>  ExecStart=@SBINDIR@/kea-dhcp6 -c @SYSCONFDIR@/kea/kea-dhcp6.conf
>
>  [Install]
> diff --git a/meta/recipes-connectivity/kea/files/kea.tmpfiles b/meta/recipes-connectivity/kea/files/kea.tmpfiles
> new file mode 100644
> index 0000000000..5da74be3a6
> --- /dev/null
> +++ b/meta/recipes-connectivity/kea/files/kea.tmpfiles
> @@ -0,0 +1,2 @@
> +d /run/kea 0750 root root -
> +d /var/lib/kea 0644 root root -

I think it'd be better if we add StateDirectory and RuntimeDirectory
to the service file if the lifetime of directory is tied to the unit:
https://www.freedesktop.org/software/systemd/man/latest/systemd.exec.html#RuntimeDirectory=

Debian also does something similar.

> diff --git a/meta/recipes-connectivity/kea/files/kea.volatiles b/meta/recipes-connectivity/kea/files/kea.volatiles
> new file mode 100644
> index 0000000000..d0350e38a6
> --- /dev/null
> +++ b/meta/recipes-connectivity/kea/files/kea.volatiles
> @@ -0,0 +1,2 @@
> +d root root 0750 /var/run/kea none
> +d root root 0644 /var/lib/kea none
> diff --git a/meta/recipes-connectivity/kea/kea_3.0.1.bb b/meta/recipes-connectivity/kea/kea_3.0.1.bb
> index 8729b1162e..5c46498d5b 100644
> --- a/meta/recipes-connectivity/kea/kea_3.0.1.bb
> +++ b/meta/recipes-connectivity/kea/kea_3.0.1.bb
> @@ -14,6 +14,8 @@ SRC_URI = "http://ftp.isc.org/isc/kea/${PV}/${BP}.tar.xz \
>             file://kea-dhcp4-server \
>             file://kea-dhcp6-server \
>             file://kea-dhcp-ddns-server \
> +           file://kea.volatiles \
> +           file://kea.tmpfiles \
>             file://fix-multilib-conflict.patch \
>             file://fix_pid_keactrl.patch \
>             file://0001-src-lib-log-logger_unittest_support.cc-do-not-write-.patch \
> @@ -61,26 +63,41 @@ do_compile:prepend:class-target() {
>  }
>
>  do_install:append() {
> -    install -d ${D}${sysconfdir}/init.d
> -    install -d ${D}${systemd_system_unitdir}
> -
> -    install -m 0644 ${UNPACKDIR}/kea-dhcp*service ${D}${systemd_system_unitdir}
> -    install -m 0755 ${UNPACKDIR}/kea-*-server ${D}${sysconfdir}/init.d
> -    sed -i -e 's,@SBINDIR@,${sbindir},g' -e 's,@BASE_BINDIR@,${base_bindir},g' \
> -           -e 's,@LOCALSTATEDIR@,${localstatedir},g' -e 's,@SYSCONFDIR@,${sysconfdir},g' \
> -           ${D}${systemd_system_unitdir}/kea-dhcp*service ${D}${sbindir}/keactrl
> +    if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
> +        install -d ${D}${sysconfdir}/init.d
> +        install -d ${D}/${sysconfdir}/default/volatiles
> +
> +        install -m 0755 ${UNPACKDIR}/kea-*-server ${D}${sysconfdir}/init.d
> +        install -m 0644 ${UNPACKDIR}/kea.volatiles ${D}/${sysconfdir}/default/volatiles/99_kea
> +    fi
> +
> +    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
> +        install -d ${D}${systemd_system_unitdir}
> +        install -d ${D}${sysconfdir}/tmpfiles.d
> +
> +        install -m 0644 ${UNPACKDIR}/kea-dhcp*service ${D}${systemd_system_unitdir}
> +        install -m 0644 ${UNPACKDIR}/kea.tmpfiles ${D}/${sysconfdir}/tmpfiles.d/kea.conf
> +
> +        sed -i -e 's,@SBINDIR@,${sbindir},g' -e 's,@BASE_BINDIR@,${base_bindir},g' \
> +            -e 's,@LOCALSTATEDIR@,${localstatedir},g' -e 's,@SYSCONFDIR@,${sysconfdir},g' \
> +            ${D}${systemd_system_unitdir}/kea-dhcp*service
> +    fi
> +
>      sed -i -e "s:${B}:@abs_top_builddir_placeholder@:g" \
>             -e "s:${S}:@abs_top_srcdir_placeholder@:g" \
>             ${D}${sbindir}/kea-admin
> +
>      rm -rf ${D}${datadir}/${BPN}/meson-info
>      rm -rf ${D}${runtimedir}
> +    rm -rf ${D}${localstatedir}
>  }
>
> -do_install:append() {
> -    rm -rf "${D}${localstatedir}"
> -}
> -
> -CONFFILES:${PN} = "${sysconfdir}/kea/keactrl.conf"
> +CONFFILES:${PN} = "${sysconfdir}/kea/keactrl.conf \
> +                   ${sysconfdir}/kea/kea-ctrl-agent.conf \
> +                   ${sysconfdir}/kea/kea-dhcp-ddns.conf \
> +                   ${sysconfdir}/kea/kea-dhcp4.conf \
> +                   ${sysconfdir}/kea/kea-dhcp6.conf \
> +                  "
>
>  PACKAGES =+ "${PN}-python"
>  FILES:${PN}-python = "${nonarch_libdir}/python*/site-packages/*"
> --
> 2.34.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#228085): https://lists.openembedded.org/g/openembedded-core/message/228085
> Mute This Topic: https://lists.openembedded.org/mt/116837599/3616702
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [anuj.mittal@oss.qualcomm.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Yi Zhao Dec. 18, 2025, 6:55 a.m. UTC | #2
On 12/18/25 12:21, Anuj Mittal wrote:
> On Thu, Dec 18, 2025 at 11:39 AM Yi Zhao via lists.openembedded.org
> <yi.zhao=eng.windriver.com@lists.openembedded.org> wrote:
>> Use volatile files to create runtime directories, instead of creating
>> them in systemd unit/initscript files.
>>
>> Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
>> ---
>>   .../kea/files/kea-dhcp-ddns.service           |  2 -
>>   .../kea/files/kea-dhcp4.service               |  3 --
>>   .../kea/files/kea-dhcp6.service               |  3 --
>>   .../kea/files/kea.tmpfiles                    |  2 +
>>   .../kea/files/kea.volatiles                   |  2 +
>>   meta/recipes-connectivity/kea/kea_3.0.1.bb    | 43 +++++++++++++------
>>   6 files changed, 34 insertions(+), 21 deletions(-)
>>   create mode 100644 meta/recipes-connectivity/kea/files/kea.tmpfiles
>>   create mode 100644 meta/recipes-connectivity/kea/files/kea.volatiles
>>
>> diff --git a/meta/recipes-connectivity/kea/files/kea-dhcp-ddns.service b/meta/recipes-connectivity/kea/files/kea-dhcp-ddns.service
>> index aec6446f0e..fe09ef6437 100644
>> --- a/meta/recipes-connectivity/kea/files/kea-dhcp-ddns.service
>> +++ b/meta/recipes-connectivity/kea/files/kea-dhcp-ddns.service
>> @@ -5,8 +5,6 @@ After=network-online.target
>>   After=time-sync.target
>>
>>   [Service]
>> -ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/run/kea/
>> -ExecStartPre=@BASE_BINDIR@/chmod 750 @LOCALSTATEDIR@/run/kea/
>>   ExecStart=@SBINDIR@/kea-dhcp-ddns -c @SYSCONFDIR@/kea/kea-dhcp-ddns.conf
>>
>>   [Install]
>> diff --git a/meta/recipes-connectivity/kea/files/kea-dhcp4.service b/meta/recipes-connectivity/kea/files/kea-dhcp4.service
>> index a2ed4edb59..a48a230654 100644
>> --- a/meta/recipes-connectivity/kea/files/kea-dhcp4.service
>> +++ b/meta/recipes-connectivity/kea/files/kea-dhcp4.service
>> @@ -5,9 +5,6 @@ After=network-online.target
>>   After=time-sync.target
>>
>>   [Service]
>> -ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/run/kea/
>> -ExecStartPre=@BASE_BINDIR@/chmod 750 @LOCALSTATEDIR@/run/kea/
>> -ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/lib/kea
>>   ExecStart=@SBINDIR@/kea-dhcp4 -c @SYSCONFDIR@/kea/kea-dhcp4.conf
>>
>>   [Install]
>> diff --git a/meta/recipes-connectivity/kea/files/kea-dhcp6.service b/meta/recipes-connectivity/kea/files/kea-dhcp6.service
>> index ed6e017d0c..a441df9ad2 100644
>> --- a/meta/recipes-connectivity/kea/files/kea-dhcp6.service
>> +++ b/meta/recipes-connectivity/kea/files/kea-dhcp6.service
>> @@ -5,9 +5,6 @@ After=network-online.target
>>   After=time-sync.target
>>
>>   [Service]
>> -ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/run/kea/
>> -ExecStartPre=@BASE_BINDIR@/chmod 750 @LOCALSTATEDIR@/run/kea/
>> -ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/lib/kea
>>   ExecStart=@SBINDIR@/kea-dhcp6 -c @SYSCONFDIR@/kea/kea-dhcp6.conf
>>
>>   [Install]
>> diff --git a/meta/recipes-connectivity/kea/files/kea.tmpfiles b/meta/recipes-connectivity/kea/files/kea.tmpfiles
>> new file mode 100644
>> index 0000000000..5da74be3a6
>> --- /dev/null
>> +++ b/meta/recipes-connectivity/kea/files/kea.tmpfiles
>> @@ -0,0 +1,2 @@
>> +d /run/kea 0750 root root -
>> +d /var/lib/kea 0644 root root -
> I think it'd be better if we add StateDirectory and RuntimeDirectory
> to the service file if the lifetime of directory is tied to the unit:
> https://www.freedesktop.org/software/systemd/man/latest/systemd.exec.html#RuntimeDirectory=
>
> Debian also does something similar.

Thanks. I will try this.


//Yi

>
>> diff --git a/meta/recipes-connectivity/kea/files/kea.volatiles b/meta/recipes-connectivity/kea/files/kea.volatiles
>> new file mode 100644
>> index 0000000000..d0350e38a6
>> --- /dev/null
>> +++ b/meta/recipes-connectivity/kea/files/kea.volatiles
>> @@ -0,0 +1,2 @@
>> +d root root 0750 /var/run/kea none
>> +d root root 0644 /var/lib/kea none
>> diff --git a/meta/recipes-connectivity/kea/kea_3.0.1.bb b/meta/recipes-connectivity/kea/kea_3.0.1.bb
>> index 8729b1162e..5c46498d5b 100644
>> --- a/meta/recipes-connectivity/kea/kea_3.0.1.bb
>> +++ b/meta/recipes-connectivity/kea/kea_3.0.1.bb
>> @@ -14,6 +14,8 @@ SRC_URI = "http://ftp.isc.org/isc/kea/${PV}/${BP}.tar.xz \
>>              file://kea-dhcp4-server \
>>              file://kea-dhcp6-server \
>>              file://kea-dhcp-ddns-server \
>> +           file://kea.volatiles \
>> +           file://kea.tmpfiles \
>>              file://fix-multilib-conflict.patch \
>>              file://fix_pid_keactrl.patch \
>>              file://0001-src-lib-log-logger_unittest_support.cc-do-not-write-.patch \
>> @@ -61,26 +63,41 @@ do_compile:prepend:class-target() {
>>   }
>>
>>   do_install:append() {
>> -    install -d ${D}${sysconfdir}/init.d
>> -    install -d ${D}${systemd_system_unitdir}
>> -
>> -    install -m 0644 ${UNPACKDIR}/kea-dhcp*service ${D}${systemd_system_unitdir}
>> -    install -m 0755 ${UNPACKDIR}/kea-*-server ${D}${sysconfdir}/init.d
>> -    sed -i -e 's,@SBINDIR@,${sbindir},g' -e 's,@BASE_BINDIR@,${base_bindir},g' \
>> -           -e 's,@LOCALSTATEDIR@,${localstatedir},g' -e 's,@SYSCONFDIR@,${sysconfdir},g' \
>> -           ${D}${systemd_system_unitdir}/kea-dhcp*service ${D}${sbindir}/keactrl
>> +    if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
>> +        install -d ${D}${sysconfdir}/init.d
>> +        install -d ${D}/${sysconfdir}/default/volatiles
>> +
>> +        install -m 0755 ${UNPACKDIR}/kea-*-server ${D}${sysconfdir}/init.d
>> +        install -m 0644 ${UNPACKDIR}/kea.volatiles ${D}/${sysconfdir}/default/volatiles/99_kea
>> +    fi
>> +
>> +    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
>> +        install -d ${D}${systemd_system_unitdir}
>> +        install -d ${D}${sysconfdir}/tmpfiles.d
>> +
>> +        install -m 0644 ${UNPACKDIR}/kea-dhcp*service ${D}${systemd_system_unitdir}
>> +        install -m 0644 ${UNPACKDIR}/kea.tmpfiles ${D}/${sysconfdir}/tmpfiles.d/kea.conf
>> +
>> +        sed -i -e 's,@SBINDIR@,${sbindir},g' -e 's,@BASE_BINDIR@,${base_bindir},g' \
>> +            -e 's,@LOCALSTATEDIR@,${localstatedir},g' -e 's,@SYSCONFDIR@,${sysconfdir},g' \
>> +            ${D}${systemd_system_unitdir}/kea-dhcp*service
>> +    fi
>> +
>>       sed -i -e "s:${B}:@abs_top_builddir_placeholder@:g" \
>>              -e "s:${S}:@abs_top_srcdir_placeholder@:g" \
>>              ${D}${sbindir}/kea-admin
>> +
>>       rm -rf ${D}${datadir}/${BPN}/meson-info
>>       rm -rf ${D}${runtimedir}
>> +    rm -rf ${D}${localstatedir}
>>   }
>>
>> -do_install:append() {
>> -    rm -rf "${D}${localstatedir}"
>> -}
>> -
>> -CONFFILES:${PN} = "${sysconfdir}/kea/keactrl.conf"
>> +CONFFILES:${PN} = "${sysconfdir}/kea/keactrl.conf \
>> +                   ${sysconfdir}/kea/kea-ctrl-agent.conf \
>> +                   ${sysconfdir}/kea/kea-dhcp-ddns.conf \
>> +                   ${sysconfdir}/kea/kea-dhcp4.conf \
>> +                   ${sysconfdir}/kea/kea-dhcp6.conf \
>> +                  "
>>
>>   PACKAGES =+ "${PN}-python"
>>   FILES:${PN}-python = "${nonarch_libdir}/python*/site-packages/*"
>> --
>> 2.34.1
>>
>>
>> -=-=-=-=-=-=-=-=-=-=-=-
>> Links: You receive all messages sent to this group.
>> View/Reply Online (#228085): https://lists.openembedded.org/g/openembedded-core/message/228085
>> Mute This Topic: https://lists.openembedded.org/mt/116837599/3616702
>> Group Owner: openembedded-core+owner@lists.openembedded.org
>> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [anuj.mittal@oss.qualcomm.com]
>> -=-=-=-=-=-=-=-=-=-=-=-
>>
diff mbox series

Patch

diff --git a/meta/recipes-connectivity/kea/files/kea-dhcp-ddns.service b/meta/recipes-connectivity/kea/files/kea-dhcp-ddns.service
index aec6446f0e..fe09ef6437 100644
--- a/meta/recipes-connectivity/kea/files/kea-dhcp-ddns.service
+++ b/meta/recipes-connectivity/kea/files/kea-dhcp-ddns.service
@@ -5,8 +5,6 @@  After=network-online.target
 After=time-sync.target
 
 [Service]
-ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/run/kea/
-ExecStartPre=@BASE_BINDIR@/chmod 750 @LOCALSTATEDIR@/run/kea/
 ExecStart=@SBINDIR@/kea-dhcp-ddns -c @SYSCONFDIR@/kea/kea-dhcp-ddns.conf
 
 [Install]
diff --git a/meta/recipes-connectivity/kea/files/kea-dhcp4.service b/meta/recipes-connectivity/kea/files/kea-dhcp4.service
index a2ed4edb59..a48a230654 100644
--- a/meta/recipes-connectivity/kea/files/kea-dhcp4.service
+++ b/meta/recipes-connectivity/kea/files/kea-dhcp4.service
@@ -5,9 +5,6 @@  After=network-online.target
 After=time-sync.target
 
 [Service]
-ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/run/kea/
-ExecStartPre=@BASE_BINDIR@/chmod 750 @LOCALSTATEDIR@/run/kea/
-ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/lib/kea
 ExecStart=@SBINDIR@/kea-dhcp4 -c @SYSCONFDIR@/kea/kea-dhcp4.conf
 
 [Install]
diff --git a/meta/recipes-connectivity/kea/files/kea-dhcp6.service b/meta/recipes-connectivity/kea/files/kea-dhcp6.service
index ed6e017d0c..a441df9ad2 100644
--- a/meta/recipes-connectivity/kea/files/kea-dhcp6.service
+++ b/meta/recipes-connectivity/kea/files/kea-dhcp6.service
@@ -5,9 +5,6 @@  After=network-online.target
 After=time-sync.target
 
 [Service]
-ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/run/kea/
-ExecStartPre=@BASE_BINDIR@/chmod 750 @LOCALSTATEDIR@/run/kea/
-ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/lib/kea
 ExecStart=@SBINDIR@/kea-dhcp6 -c @SYSCONFDIR@/kea/kea-dhcp6.conf
 
 [Install]
diff --git a/meta/recipes-connectivity/kea/files/kea.tmpfiles b/meta/recipes-connectivity/kea/files/kea.tmpfiles
new file mode 100644
index 0000000000..5da74be3a6
--- /dev/null
+++ b/meta/recipes-connectivity/kea/files/kea.tmpfiles
@@ -0,0 +1,2 @@ 
+d /run/kea 0750 root root -
+d /var/lib/kea 0644 root root -
diff --git a/meta/recipes-connectivity/kea/files/kea.volatiles b/meta/recipes-connectivity/kea/files/kea.volatiles
new file mode 100644
index 0000000000..d0350e38a6
--- /dev/null
+++ b/meta/recipes-connectivity/kea/files/kea.volatiles
@@ -0,0 +1,2 @@ 
+d root root 0750 /var/run/kea none
+d root root 0644 /var/lib/kea none
diff --git a/meta/recipes-connectivity/kea/kea_3.0.1.bb b/meta/recipes-connectivity/kea/kea_3.0.1.bb
index 8729b1162e..5c46498d5b 100644
--- a/meta/recipes-connectivity/kea/kea_3.0.1.bb
+++ b/meta/recipes-connectivity/kea/kea_3.0.1.bb
@@ -14,6 +14,8 @@  SRC_URI = "http://ftp.isc.org/isc/kea/${PV}/${BP}.tar.xz \
            file://kea-dhcp4-server \
            file://kea-dhcp6-server \
            file://kea-dhcp-ddns-server \
+           file://kea.volatiles \
+           file://kea.tmpfiles \
            file://fix-multilib-conflict.patch \
            file://fix_pid_keactrl.patch \
            file://0001-src-lib-log-logger_unittest_support.cc-do-not-write-.patch \
@@ -61,26 +63,41 @@  do_compile:prepend:class-target() {
 }
 
 do_install:append() {
-    install -d ${D}${sysconfdir}/init.d
-    install -d ${D}${systemd_system_unitdir}
-
-    install -m 0644 ${UNPACKDIR}/kea-dhcp*service ${D}${systemd_system_unitdir}
-    install -m 0755 ${UNPACKDIR}/kea-*-server ${D}${sysconfdir}/init.d
-    sed -i -e 's,@SBINDIR@,${sbindir},g' -e 's,@BASE_BINDIR@,${base_bindir},g' \
-           -e 's,@LOCALSTATEDIR@,${localstatedir},g' -e 's,@SYSCONFDIR@,${sysconfdir},g' \
-           ${D}${systemd_system_unitdir}/kea-dhcp*service ${D}${sbindir}/keactrl
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+        install -d ${D}${sysconfdir}/init.d
+        install -d ${D}/${sysconfdir}/default/volatiles
+
+        install -m 0755 ${UNPACKDIR}/kea-*-server ${D}${sysconfdir}/init.d
+        install -m 0644 ${UNPACKDIR}/kea.volatiles ${D}/${sysconfdir}/default/volatiles/99_kea
+    fi
+
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        install -d ${D}${systemd_system_unitdir}
+        install -d ${D}${sysconfdir}/tmpfiles.d
+
+        install -m 0644 ${UNPACKDIR}/kea-dhcp*service ${D}${systemd_system_unitdir}
+        install -m 0644 ${UNPACKDIR}/kea.tmpfiles ${D}/${sysconfdir}/tmpfiles.d/kea.conf
+
+        sed -i -e 's,@SBINDIR@,${sbindir},g' -e 's,@BASE_BINDIR@,${base_bindir},g' \
+            -e 's,@LOCALSTATEDIR@,${localstatedir},g' -e 's,@SYSCONFDIR@,${sysconfdir},g' \
+            ${D}${systemd_system_unitdir}/kea-dhcp*service
+    fi
+
     sed -i -e "s:${B}:@abs_top_builddir_placeholder@:g" \
            -e "s:${S}:@abs_top_srcdir_placeholder@:g" \
            ${D}${sbindir}/kea-admin
+
     rm -rf ${D}${datadir}/${BPN}/meson-info
     rm -rf ${D}${runtimedir}
+    rm -rf ${D}${localstatedir}
 }
 
-do_install:append() {
-    rm -rf "${D}${localstatedir}"
-}
-
-CONFFILES:${PN} = "${sysconfdir}/kea/keactrl.conf"
+CONFFILES:${PN} = "${sysconfdir}/kea/keactrl.conf \
+                   ${sysconfdir}/kea/kea-ctrl-agent.conf \
+                   ${sysconfdir}/kea/kea-dhcp-ddns.conf \
+                   ${sysconfdir}/kea/kea-dhcp4.conf \
+                   ${sysconfdir}/kea/kea-dhcp6.conf \
+                  "
 
 PACKAGES =+ "${PN}-python"
 FILES:${PN}-python = "${nonarch_libdir}/python*/site-packages/*"