Message ID | 20220408081533.1705128-1-yi.zhao@windriver.com |
---|---|
State | New |
Headers | show |
Series | bluez5: install /var/lib/bluetooth directory | expand |
Am 08.04.2022 um 10:15 schrieb Yi Zhao via lists.openembedded.org: > There is a bluetooth service startup failure: > bluetooth.service: Failed at step NAMESPACE spawning /usr/libexec/bluetooth/bluetoothd: No such file or directory > bluetooth.service: Failed to set up mount namespacing: /run/systemd/unit-root/var/lib/bluetooth: No such file or directory > > This is because the directory /var/lib/bluetooth has been listed in > ReadWritePaths= in the service unit file but does not exist. We need to > create it before service startup. > > Signed-off-by: Yi Zhao <yi.zhao@windriver.com> > --- > meta/recipes-connectivity/bluez5/bluez5.inc | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/meta/recipes-connectivity/bluez5/bluez5.inc b/meta/recipes-connectivity/bluez5/bluez5.inc > index 79d4645ca8..ee2cdbcc59 100644 > --- a/meta/recipes-connectivity/bluez5/bluez5.inc > +++ b/meta/recipes-connectivity/bluez5/bluez5.inc > @@ -102,6 +102,8 @@ do_install:append() { > # Patch python tools to use Python 3; they should be source compatible, but > # still refer to Python 2 in the shebang > sed -i -e '1s,#!.*python.*,#!${bindir}/python3,' ${D}${libdir}/bluez/test/* > + > + install -d ${D}${localstatedir}/lib/bluetooth Please use systemd StateDirectory= [1]. Maybe it is reasonable to replace the ReadWritePaths= with StateDirectory=. [1] https://www.freedesktop.org/software/systemd/man/systemd.exec.html#RuntimeDirectory=
On 4/8/22 16:34, Stefan Herbrechtsmeier wrote: > Am 08.04.2022 um 10:15 schrieb Yi Zhao via lists.openembedded.org: >> There is a bluetooth service startup failure: >> bluetooth.service: Failed at step NAMESPACE spawning >> /usr/libexec/bluetooth/bluetoothd: No such file or directory >> bluetooth.service: Failed to set up mount namespacing: >> /run/systemd/unit-root/var/lib/bluetooth: No such file or directory >> >> This is because the directory /var/lib/bluetooth has been listed in >> ReadWritePaths= in the service unit file but does not exist. We need to >> create it before service startup. >> >> Signed-off-by: Yi Zhao <yi.zhao@windriver.com> >> --- >> meta/recipes-connectivity/bluez5/bluez5.inc | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/meta/recipes-connectivity/bluez5/bluez5.inc >> b/meta/recipes-connectivity/bluez5/bluez5.inc >> index 79d4645ca8..ee2cdbcc59 100644 >> --- a/meta/recipes-connectivity/bluez5/bluez5.inc >> +++ b/meta/recipes-connectivity/bluez5/bluez5.inc >> @@ -102,6 +102,8 @@ do_install:append() { >> # Patch python tools to use Python 3; they should be source >> compatible, but >> # still refer to Python 2 in the shebang >> sed -i -e '1s,#!.*python.*,#!${bindir}/python3,' >> ${D}${libdir}/bluez/test/* >> + >> + install -d ${D}${localstatedir}/lib/bluetooth > > Please use systemd StateDirectory= [1]. Maybe it is reasonable to > replace the ReadWritePaths= with StateDirectory=. > > [1] > https://www.freedesktop.org/software/systemd/man/systemd.exec.html#RuntimeDirectory= Thanks Stefank, but the ReadWritePaths= is set by bluez: https://github.com/bluez/bluez/commit/442d211b5f30f00d5ddd69b43385a03c1428ac45 //Yi
Am 08.04.2022 um 11:23 schrieb Yi Zhao: > > On 4/8/22 16:34, Stefan Herbrechtsmeier wrote: >> Am 08.04.2022 um 10:15 schrieb Yi Zhao via lists.openembedded.org: >>> There is a bluetooth service startup failure: >>> bluetooth.service: Failed at step NAMESPACE spawning >>> /usr/libexec/bluetooth/bluetoothd: No such file or directory >>> bluetooth.service: Failed to set up mount namespacing: >>> /run/systemd/unit-root/var/lib/bluetooth: No such file or directory >>> >>> This is because the directory /var/lib/bluetooth has been listed in >>> ReadWritePaths= in the service unit file but does not exist. We need to >>> create it before service startup. >>> >>> Signed-off-by: Yi Zhao <yi.zhao@windriver.com> >>> --- >>> meta/recipes-connectivity/bluez5/bluez5.inc | 2 ++ >>> 1 file changed, 2 insertions(+) >>> >>> diff --git a/meta/recipes-connectivity/bluez5/bluez5.inc >>> b/meta/recipes-connectivity/bluez5/bluez5.inc >>> index 79d4645ca8..ee2cdbcc59 100644 >>> --- a/meta/recipes-connectivity/bluez5/bluez5.inc >>> +++ b/meta/recipes-connectivity/bluez5/bluez5.inc >>> @@ -102,6 +102,8 @@ do_install:append() { >>> # Patch python tools to use Python 3; they should be source >>> compatible, but >>> # still refer to Python 2 in the shebang >>> sed -i -e '1s,#!.*python.*,#!${bindir}/python3,' >>> ${D}${libdir}/bluez/test/* >>> + >>> + install -d ${D}${localstatedir}/lib/bluetooth >> >> Please use systemd StateDirectory= [1]. Maybe it is reasonable to >> replace the ReadWritePaths= with StateDirectory=. >> >> [1] >> https://www.freedesktop.org/software/systemd/man/systemd.exec.html#RuntimeDirectory= >> > > > Thanks Stefank, but the ReadWritePaths= is set by bluez: > > https://github.com/bluez/bluez/commit/442d211b5f30f00d5ddd69b43385a03c1428ac45 And who creates the directory before the patch? The systemd solution to create a state directory is StateDirectory= (or tmpfiles.d for older versions of systemd). Systemd supports stateless system [1] and therefore every service must work with an empty /var/lib. This patch hide a bug in bluez and the problem should be fixed in bluez. [1] https://0pointer.net/blog/projects/stateless.html
On 4/8/22 18:51, Stefan Herbrechtsmeier wrote: > Am 08.04.2022 um 11:23 schrieb Yi Zhao: >> >> On 4/8/22 16:34, Stefan Herbrechtsmeier wrote: >>> Am 08.04.2022 um 10:15 schrieb Yi Zhao via lists.openembedded.org: >>>> There is a bluetooth service startup failure: >>>> bluetooth.service: Failed at step NAMESPACE spawning >>>> /usr/libexec/bluetooth/bluetoothd: No such file or directory >>>> bluetooth.service: Failed to set up mount namespacing: >>>> /run/systemd/unit-root/var/lib/bluetooth: No such file or directory >>>> >>>> This is because the directory /var/lib/bluetooth has been listed in >>>> ReadWritePaths= in the service unit file but does not exist. We >>>> need to >>>> create it before service startup. >>>> >>>> Signed-off-by: Yi Zhao <yi.zhao@windriver.com> >>>> --- >>>> meta/recipes-connectivity/bluez5/bluez5.inc | 2 ++ >>>> 1 file changed, 2 insertions(+) >>>> >>>> diff --git a/meta/recipes-connectivity/bluez5/bluez5.inc >>>> b/meta/recipes-connectivity/bluez5/bluez5.inc >>>> index 79d4645ca8..ee2cdbcc59 100644 >>>> --- a/meta/recipes-connectivity/bluez5/bluez5.inc >>>> +++ b/meta/recipes-connectivity/bluez5/bluez5.inc >>>> @@ -102,6 +102,8 @@ do_install:append() { >>>> # Patch python tools to use Python 3; they should be source >>>> compatible, but >>>> # still refer to Python 2 in the shebang >>>> sed -i -e '1s,#!.*python.*,#!${bindir}/python3,' >>>> ${D}${libdir}/bluez/test/* >>>> + >>>> + install -d ${D}${localstatedir}/lib/bluetooth >>> >>> Please use systemd StateDirectory= [1]. Maybe it is reasonable to >>> replace the ReadWritePaths= with StateDirectory=. >>> >>> [1] >>> https://www.freedesktop.org/software/systemd/man/systemd.exec.html#RuntimeDirectory= >>> >> >> >> Thanks Stefank, but the ReadWritePaths= is set by bluez: >> >> https://github.com/bluez/bluez/commit/442d211b5f30f00d5ddd69b43385a03c1428ac45 >> > > And who creates the directory before the patch? There is no need this directory before the patch. The service can startup without this directory. > > The systemd solution to create a state directory is StateDirectory= > (or tmpfiles.d for older versions of systemd). Systemd supports > stateless system [1] and therefore every service must work with an > empty /var/lib. I'll try adding StateDirecotry to service unit file to see if this can solve the problem. Thanks. //Yi > > This patch hide a bug in bluez and the problem should be fixed in bluez. > > [1] https://0pointer.net/blog/projects/stateless.html
also had this issue and found out, that the bluetooth service did come up, once bluetooth was enabled My fix was to edit like this ReadWritePaths=:/var/lib/bluetooth The colon ensures that the service won't fail if the directory doesn't exist Am 08.04.22 um 13:01 schrieb Yi Zhao: > > On 4/8/22 18:51, Stefan Herbrechtsmeier wrote: >> Am 08.04.2022 um 11:23 schrieb Yi Zhao: >>> >>> On 4/8/22 16:34, Stefan Herbrechtsmeier wrote: >>>> Am 08.04.2022 um 10:15 schrieb Yi Zhao via lists.openembedded.org: >>>>> There is a bluetooth service startup failure: >>>>> bluetooth.service: Failed at step NAMESPACE spawning >>>>> /usr/libexec/bluetooth/bluetoothd: No such file or directory >>>>> bluetooth.service: Failed to set up mount namespacing: >>>>> /run/systemd/unit-root/var/lib/bluetooth: No such file or directory >>>>> >>>>> This is because the directory /var/lib/bluetooth has been listed in >>>>> ReadWritePaths= in the service unit file but does not exist. We >>>>> need to >>>>> create it before service startup. >>>>> >>>>> Signed-off-by: Yi Zhao <yi.zhao@windriver.com> >>>>> --- >>>>> meta/recipes-connectivity/bluez5/bluez5.inc | 2 ++ >>>>> 1 file changed, 2 insertions(+) >>>>> >>>>> diff --git a/meta/recipes-connectivity/bluez5/bluez5.inc >>>>> b/meta/recipes-connectivity/bluez5/bluez5.inc >>>>> index 79d4645ca8..ee2cdbcc59 100644 >>>>> --- a/meta/recipes-connectivity/bluez5/bluez5.inc >>>>> +++ b/meta/recipes-connectivity/bluez5/bluez5.inc >>>>> @@ -102,6 +102,8 @@ do_install:append() { >>>>> # Patch python tools to use Python 3; they should be source >>>>> compatible, but >>>>> # still refer to Python 2 in the shebang >>>>> sed -i -e '1s,#!.*python.*,#!${bindir}/python3,' >>>>> ${D}${libdir}/bluez/test/* >>>>> + >>>>> + install -d ${D}${localstatedir}/lib/bluetooth >>>> >>>> Please use systemd StateDirectory= [1]. Maybe it is reasonable to >>>> replace the ReadWritePaths= with StateDirectory=. >>>> >>>> [1] >>>> https://www.freedesktop.org/software/systemd/man/systemd.exec.html#RuntimeDirectory= >>>> >>> >>> >>> Thanks Stefank, but the ReadWritePaths= is set by bluez: >>> >>> https://github.com/bluez/bluez/commit/442d211b5f30f00d5ddd69b43385a03c1428ac45 >>> >> >> And who creates the directory before the patch? > > There is no need this directory before the patch. The service can > startup without this directory. > > >> >> The systemd solution to create a state directory is StateDirectory= >> (or tmpfiles.d for older versions of systemd). Systemd supports >> stateless system [1] and therefore every service must work with an >> empty /var/lib. > > > I'll try adding StateDirecotry to service unit file to see if this > can solve the problem. Thanks. > > > //Yi > >> >> This patch hide a bug in bluez and the problem should be fixed in bluez. >> >> [1] https://0pointer.net/blog/projects/stateless.html > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#164159): https://lists.openembedded.org/g/openembedded-core/message/164159 > Mute This Topic: https://lists.openembedded.org/mt/90331367/3618223 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [f_l_k@t-online.de] > -=-=-=-=-=-=-=-=-=-=-=- >
Am 08.04.2022 um 22:03 schrieb Markus Volk via lists.openembedded.org: > also had this issue and found out, that the bluetooth service did come > up, once bluetooth was enabled > > My fix was to edit like this > > ReadWritePaths=:/var/lib/bluetooth > > The colon ensures that the service won't fail if the directory doesn't > exist Regarding the documentation the ReadOnlyPaths and ReadWritePaths makes not sense because ProtectSystem=full mounts /usr, boot loader and /etc directories read-only. Have somebody report the problem to the bluez project? Regards Stefan > > > Am 08.04.22 um 13:01 schrieb Yi Zhao: >> >> On 4/8/22 18:51, Stefan Herbrechtsmeier wrote: >>> Am 08.04.2022 um 11:23 schrieb Yi Zhao: >>>> >>>> On 4/8/22 16:34, Stefan Herbrechtsmeier wrote: >>>>> Am 08.04.2022 um 10:15 schrieb Yi Zhao via lists.openembedded.org: >>>>>> There is a bluetooth service startup failure: >>>>>> bluetooth.service: Failed at step NAMESPACE spawning >>>>>> /usr/libexec/bluetooth/bluetoothd: No such file or directory >>>>>> bluetooth.service: Failed to set up mount namespacing: >>>>>> /run/systemd/unit-root/var/lib/bluetooth: No such file or directory >>>>>> >>>>>> This is because the directory /var/lib/bluetooth has been listed in >>>>>> ReadWritePaths= in the service unit file but does not exist. We >>>>>> need to >>>>>> create it before service startup. >>>>>> >>>>>> Signed-off-by: Yi Zhao <yi.zhao@windriver.com> >>>>>> --- >>>>>> meta/recipes-connectivity/bluez5/bluez5.inc | 2 ++ >>>>>> 1 file changed, 2 insertions(+) >>>>>> >>>>>> diff --git a/meta/recipes-connectivity/bluez5/bluez5.inc >>>>>> b/meta/recipes-connectivity/bluez5/bluez5.inc >>>>>> index 79d4645ca8..ee2cdbcc59 100644 >>>>>> --- a/meta/recipes-connectivity/bluez5/bluez5.inc >>>>>> +++ b/meta/recipes-connectivity/bluez5/bluez5.inc >>>>>> @@ -102,6 +102,8 @@ do_install:append() { >>>>>> # Patch python tools to use Python 3; they should be source >>>>>> compatible, but >>>>>> # still refer to Python 2 in the shebang >>>>>> sed -i -e '1s,#!.*python.*,#!${bindir}/python3,' >>>>>> ${D}${libdir}/bluez/test/* >>>>>> + >>>>>> + install -d ${D}${localstatedir}/lib/bluetooth >>>>> >>>>> Please use systemd StateDirectory= [1]. Maybe it is reasonable to >>>>> replace the ReadWritePaths= with StateDirectory=. >>>>> >>>>> [1] >>>>> https://www.freedesktop.org/software/systemd/man/systemd.exec.html#RuntimeDirectory= >>>>> >>>> >>>> >>>> Thanks Stefank, but the ReadWritePaths= is set by bluez: >>>> >>>> https://github.com/bluez/bluez/commit/442d211b5f30f00d5ddd69b43385a03c1428ac45 >>>> >>> >>> And who creates the directory before the patch? >> >> There is no need this directory before the patch. The service can >> startup without this directory. >> >> >>> >>> The systemd solution to create a state directory is StateDirectory= >>> (or tmpfiles.d for older versions of systemd). Systemd supports >>> stateless system [1] and therefore every service must work with an >>> empty /var/lib. >> >> >> I'll try adding StateDirecotry to service unit file to see if this >> can solve the problem. Thanks. >> >> >> //Yi >> >>> >>> This patch hide a bug in bluez and the problem should be fixed in bluez. >>> >>> [1] https://0pointer.net/blog/projects/stateless.html >> >> >> > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#164177): https://lists.openembedded.org/g/openembedded-core/message/164177 > Mute This Topic: https://lists.openembedded.org/mt/90331367/6374899 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [stefan.herbrechtsmeier-oss@weidmueller.com] > -=-=-=-=-=-=-=-=-=-=-=- >
Hi, Am 11.04.2022 um 09:17 schrieb Stefan Herbrechtsmeier via lists.openembedded.org: > Am 08.04.2022 um 22:03 schrieb Markus Volk via lists.openembedded.org: >> also had this issue and found out, that the bluetooth service did come >> up, once bluetooth was enabled >> >> My fix was to edit like this >> >> ReadWritePaths=:/var/lib/bluetooth >> >> The colon ensures that the service won't fail if the directory doesn't >> exist > > Regarding the documentation the ReadOnlyPaths and ReadWritePaths makes > not sense because ProtectSystem=full mounts /usr, boot loader and /etc > directories read-only. > > Have somebody report the problem to the bluez project? I have open an issue: https://github.com/bluez/bluez/issues/329 I will post a patch when we come to a solution. Regards Stefan
On Wed, 2022-04-13 at 10:21 +0200, Stefan Herbrechtsmeier wrote: > Hi, > > Am 11.04.2022 um 09:17 schrieb Stefan Herbrechtsmeier via > lists.openembedded.org: > > Am 08.04.2022 um 22:03 schrieb Markus Volk via lists.openembedded.org: > > > also had this issue and found out, that the bluetooth service did come > > > up, once bluetooth was enabled > > > > > > My fix was to edit like this > > > > > > ReadWritePaths=:/var/lib/bluetooth > > > > > > The colon ensures that the service won't fail if the directory doesn't > > > exist > > > > Regarding the documentation the ReadOnlyPaths and ReadWritePaths makes > > not sense because ProtectSystem=full mounts /usr, boot loader and /etc > > directories read-only. > > > > Have somebody report the problem to the bluez project? > > I have open an issue: > https://github.com/bluez/bluez/issues/329 > > I will post a patch when we come to a solution. We have a slight challenge in that I'd like to build 4.0 rc2 but I think there will be complaints if this is left broken. I'm going to post a version of your patch and hope that improves things. If anyone knows of issues with that patch please let me know ASAP. Cheers, Richard
diff --git a/meta/recipes-connectivity/bluez5/bluez5.inc b/meta/recipes-connectivity/bluez5/bluez5.inc index 79d4645ca8..ee2cdbcc59 100644 --- a/meta/recipes-connectivity/bluez5/bluez5.inc +++ b/meta/recipes-connectivity/bluez5/bluez5.inc @@ -102,6 +102,8 @@ do_install:append() { # Patch python tools to use Python 3; they should be source compatible, but # still refer to Python 2 in the shebang sed -i -e '1s,#!.*python.*,#!${bindir}/python3,' ${D}${libdir}/bluez/test/* + + install -d ${D}${localstatedir}/lib/bluetooth } PACKAGES =+ "${PN}-testtools ${PN}-obex ${PN}-noinst-tools"
There is a bluetooth service startup failure: bluetooth.service: Failed at step NAMESPACE spawning /usr/libexec/bluetooth/bluetoothd: No such file or directory bluetooth.service: Failed to set up mount namespacing: /run/systemd/unit-root/var/lib/bluetooth: No such file or directory This is because the directory /var/lib/bluetooth has been listed in ReadWritePaths= in the service unit file but does not exist. We need to create it before service startup. Signed-off-by: Yi Zhao <yi.zhao@windriver.com> --- meta/recipes-connectivity/bluez5/bluez5.inc | 2 ++ 1 file changed, 2 insertions(+)