* [Buildroot] [PATCH] Fix dhcp symlink in target/var/lib/dhcp
@ 2016-09-28 16:07 Root, Build
2016-10-05 23:20 ` Arnout Vandecappelle
0 siblings, 1 reply; 6+ messages in thread
From: Root, Build @ 2016-09-28 16:07 UTC (permalink / raw)
To: buildroot
The symlink was to /tmp causing an error on the target install step:
rsync: chgrp "/<path>/output/target/var/lib/dhcp" failed: Operation
not permitted
Changing the symlink to "../../tmp" rather than "/tmp" references the
target's /tmp directory rather than the build machine's /tmp directory.
Signed-off-by: Gerald Van Baren <jerry@vibrationresearch.com>
---
package/dhcp/dhcp.mk | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/package/dhcp/dhcp.mk b/package/dhcp/dhcp.mk
index 5cb6043..80c984b 100644
--- a/package/dhcp/dhcp.mk
+++ b/package/dhcp/dhcp.mk
@@ -56,7 +56,7 @@ endif
ifeq ($(BR2_PACKAGE_DHCP_SERVER),y)
define DHCP_INSTALL_SERVER
mkdir -p $(TARGET_DIR)/var/lib
- (cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp)
+ (cd $(TARGET_DIR)/var/lib; ln -snf ../../tmp dhcp)
$(INSTALL) -m 0755 -D $(@D)/server/dhcpd $(TARGET_DIR)/usr/sbin/dhcpd
$(INSTALL) -m 0644 -D package/dhcp/dhcpd.conf \
$(TARGET_DIR)/etc/dhcp/dhcpd.conf
@@ -66,7 +66,7 @@ endif
ifeq ($(BR2_PACKAGE_DHCP_RELAY),y)
define DHCP_INSTALL_RELAY
mkdir -p $(TARGET_DIR)/var/lib
- (cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp)
+ (cd $(TARGET_DIR)/var/lib; ln -snf ../../tmp dhcp)
$(INSTALL) -m 0755 -D $(DHCP_DIR)/relay/dhcrelay \
$(TARGET_DIR)/usr/sbin/dhcrelay
endef
@@ -75,7 +75,7 @@ endif
ifeq ($(BR2_PACKAGE_DHCP_CLIENT),y)
define DHCP_INSTALL_CLIENT
mkdir -p $(TARGET_DIR)/var/lib
- (cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp)
+ (cd $(TARGET_DIR)/var/lib; ln -snf ../../tmp dhcp)
$(INSTALL) -m 0755 -D $(DHCP_DIR)/client/dhclient \
$(TARGET_DIR)/sbin/dhclient
$(INSTALL) -m 0644 -D package/dhcp/dhclient.conf \
--
1.9.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH] Fix dhcp symlink in target/var/lib/dhcp
2016-09-28 16:07 [Buildroot] [PATCH] Fix dhcp symlink in target/var/lib/dhcp Root, Build
@ 2016-10-05 23:20 ` Arnout Vandecappelle
2016-10-06 17:38 ` Jerry Van Baren
2016-10-24 21:01 ` Thomas Petazzoni
0 siblings, 2 replies; 6+ messages in thread
From: Arnout Vandecappelle @ 2016-10-05 23:20 UTC (permalink / raw)
To: buildroot
On 28-09-16 18:07, Root, Build wrote:
> The symlink was to /tmp causing an error on the target install step:
> rsync: chgrp "/<path>/output/target/var/lib/dhcp" failed: Operation
> not permitted
Could you explain this a little more? The install step of this package only
calls $(INSTALL), not rsync or 'make install' or anything like that. So how does
this happen?
Also note that we don't have such failures in the autobuilders. And anyway, I
thought that a failing chgrp in rsync was non-fatal?
> Changing the symlink to "../../tmp" rather than "/tmp" references the
> target's /tmp directory rather than the build machine's /tmp directory.
The problem is that /var/lib itself may be a symlink to somewhere else. Some
people need to have /var/lib in a writeable partition while /var itself is on
the readonly rootfs. When /var/lib is a symlink, the ../.. will be interpreted
relative to the target of that symlink, which may be a different number of
levels down from root.
Also, since /tmp always exists on the build machine, symlinking to /tmp just works.
Regards,
Arnout
>
> Signed-off-by: Gerald Van Baren <jerry@vibrationresearch.com>
> ---
> package/dhcp/dhcp.mk | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/package/dhcp/dhcp.mk b/package/dhcp/dhcp.mk
> index 5cb6043..80c984b 100644
> --- a/package/dhcp/dhcp.mk
> +++ b/package/dhcp/dhcp.mk
> @@ -56,7 +56,7 @@ endif
> ifeq ($(BR2_PACKAGE_DHCP_SERVER),y)
> define DHCP_INSTALL_SERVER
> mkdir -p $(TARGET_DIR)/var/lib
> - (cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp)
> + (cd $(TARGET_DIR)/var/lib; ln -snf ../../tmp dhcp)
> $(INSTALL) -m 0755 -D $(@D)/server/dhcpd $(TARGET_DIR)/usr/sbin/dhcpd
> $(INSTALL) -m 0644 -D package/dhcp/dhcpd.conf \
> $(TARGET_DIR)/etc/dhcp/dhcpd.conf
> @@ -66,7 +66,7 @@ endif
> ifeq ($(BR2_PACKAGE_DHCP_RELAY),y)
> define DHCP_INSTALL_RELAY
> mkdir -p $(TARGET_DIR)/var/lib
> - (cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp)
> + (cd $(TARGET_DIR)/var/lib; ln -snf ../../tmp dhcp)
> $(INSTALL) -m 0755 -D $(DHCP_DIR)/relay/dhcrelay \
> $(TARGET_DIR)/usr/sbin/dhcrelay
> endef
> @@ -75,7 +75,7 @@ endif
> ifeq ($(BR2_PACKAGE_DHCP_CLIENT),y)
> define DHCP_INSTALL_CLIENT
> mkdir -p $(TARGET_DIR)/var/lib
> - (cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp)
> + (cd $(TARGET_DIR)/var/lib; ln -snf ../../tmp dhcp)
> $(INSTALL) -m 0755 -D $(DHCP_DIR)/client/dhclient \
> $(TARGET_DIR)/sbin/dhclient
> $(INSTALL) -m 0644 -D package/dhcp/dhclient.conf \
> --
> 1.9.1
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
>
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286500
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH] Fix dhcp symlink in target/var/lib/dhcp
2016-10-05 23:20 ` Arnout Vandecappelle
@ 2016-10-06 17:38 ` Jerry Van Baren
2016-10-06 19:22 ` Arnout Vandecappelle
2016-10-24 21:01 ` Thomas Petazzoni
1 sibling, 1 reply; 6+ messages in thread
From: Jerry Van Baren @ 2016-10-06 17:38 UTC (permalink / raw)
To: buildroot
Hi Arnout,
On Wed, Oct 5, 2016 at 7:20 PM, Arnout Vandecappelle <arnout@mind.be> wrote:
>
>
> On 28-09-16 18:07, Root, Build wrote:
>> The symlink was to /tmp causing an error on the target install step:
>> rsync: chgrp "/<path>/output/target/var/lib/dhcp" failed: Operation
>> not permitted
>
> Could you explain this a little more? The install step of this package only
> calls $(INSTALL), not rsync or 'make install' or anything like that. So how does
> this happen?
I have not dug to the bottom of this, but the issue is the DHCP
(server, not client)
package is creates
/var/lib/dhcp/dhcpd.leases
which ends up in /tmp/dhcpd.leases without the patch. With the patch it ends up
in .../output/target/tmp/dhcpd.leases.
(Informed guessing here) When buildroot creates the file system image, it does a
rsync with chgrp (and chown) to the proper owner (root.root), but that
is not allowed
as an unprivileged user running buildroot on the host's /tmp directory.
I'm running very stock Ubuntu 14.04.5 x86 "server" installation cross compiling
to an ARM target.
I did not have a problem with older versions of Buildroot, it was when we pulled
our baseline forward to 2016.08 that we had the problem (previously was 2014
timeframe).
> Also note that we don't have such failures in the autobuilders. And anyway, I
> thought that a failing chgrp in rsync was non-fatal?
Not for me. :-/ I will look into it further. Total speculation: it may
be a double fault
where the chown root fails followed by a chgrp root which also fails,
aborting the script.
As you note, the autobuilders are not catching it, so it might be
something in how
my build machine is set up.
>> Changing the symlink to "../../tmp" rather than "/tmp" references the
>> target's /tmp directory rather than the build machine's /tmp directory.
>
> The problem is that /var/lib itself may be a symlink to somewhere else. Some
> people need to have /var/lib in a writeable partition while /var itself is on
> the readonly rootfs. When /var/lib is a symlink, the ../.. will be interpreted
> relative to the target of that symlink, which may be a different number of
> levels down from root.
>
> Also, since /tmp always exists on the build machine, symlinking to /tmp just works.
The symlink works fine, the chgrp to root on /tmp/dhcpd.leases doesn't. :-(
Thanks,
gvb
>>
>> Signed-off-by: Gerald Van Baren <jerry@vibrationresearch.com>
>> ---
>> package/dhcp/dhcp.mk | 6 +++---
>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/package/dhcp/dhcp.mk b/package/dhcp/dhcp.mk
>> index 5cb6043..80c984b 100644
>> --- a/package/dhcp/dhcp.mk
>> +++ b/package/dhcp/dhcp.mk
>> @@ -56,7 +56,7 @@ endif
>> ifeq ($(BR2_PACKAGE_DHCP_SERVER),y)
>> define DHCP_INSTALL_SERVER
>> mkdir -p $(TARGET_DIR)/var/lib
>> - (cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp)
>> + (cd $(TARGET_DIR)/var/lib; ln -snf ../../tmp dhcp)
>> $(INSTALL) -m 0755 -D $(@D)/server/dhcpd $(TARGET_DIR)/usr/sbin/dhcpd
>> $(INSTALL) -m 0644 -D package/dhcp/dhcpd.conf \
>> $(TARGET_DIR)/etc/dhcp/dhcpd.conf
>> @@ -66,7 +66,7 @@ endif
>> ifeq ($(BR2_PACKAGE_DHCP_RELAY),y)
>> define DHCP_INSTALL_RELAY
>> mkdir -p $(TARGET_DIR)/var/lib
>> - (cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp)
>> + (cd $(TARGET_DIR)/var/lib; ln -snf ../../tmp dhcp)
>> $(INSTALL) -m 0755 -D $(DHCP_DIR)/relay/dhcrelay \
>> $(TARGET_DIR)/usr/sbin/dhcrelay
>> endef
>> @@ -75,7 +75,7 @@ endif
>> ifeq ($(BR2_PACKAGE_DHCP_CLIENT),y)
>> define DHCP_INSTALL_CLIENT
>> mkdir -p $(TARGET_DIR)/var/lib
>> - (cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp)
>> + (cd $(TARGET_DIR)/var/lib; ln -snf ../../tmp dhcp)
>> $(INSTALL) -m 0755 -D $(DHCP_DIR)/client/dhclient \
>> $(TARGET_DIR)/sbin/dhclient
>> $(INSTALL) -m 0644 -D package/dhcp/dhclient.conf \
>> --
>> 1.9.1
>> _______________________________________________
>> buildroot mailing list
>> buildroot at busybox.net
>> http://lists.busybox.net/mailman/listinfo/buildroot
>>
>
> --
> Arnout Vandecappelle arnout at mind be
> Senior Embedded Software Architect +32-16-286500
> Essensium/Mind http://www.mind.be
> G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
> LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
> GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH] Fix dhcp symlink in target/var/lib/dhcp
2016-10-06 17:38 ` Jerry Van Baren
@ 2016-10-06 19:22 ` Arnout Vandecappelle
2016-10-06 21:02 ` Jerry Van Baren
0 siblings, 1 reply; 6+ messages in thread
From: Arnout Vandecappelle @ 2016-10-06 19:22 UTC (permalink / raw)
To: buildroot
On 06-10-16 19:38, Jerry Van Baren wrote:
> Hi Arnout,
>
> On Wed, Oct 5, 2016 at 7:20 PM, Arnout Vandecappelle <arnout@mind.be> wrote:
>>
>>
>> On 28-09-16 18:07, Root, Build wrote:
>>> The symlink was to /tmp causing an error on the target install step:
>>> rsync: chgrp "/<path>/output/target/var/lib/dhcp" failed: Operation
>>> not permitted
>>
>> Could you explain this a little more? The install step of this package only
>> calls $(INSTALL), not rsync or 'make install' or anything like that. So how does
>> this happen?
>
> I have not dug to the bottom of this, but the issue is the DHCP
> (server, not client)
> package is creates
> /var/lib/dhcp/dhcpd.leases
> which ends up in /tmp/dhcpd.leases without the patch. With the patch it ends up
> in .../output/target/tmp/dhcpd.leases.
I forgot to explain this in my original mail: it doesn't (or shouldn't) matter
if the dhcpd.leases file is lost, because (in many situations) a tmpfs will be
mounted on /tmp at runtime so the pre-installed dhcpd.leases is lost anyway.
Moreover, the dhcp package doesn't even install this leases file. I just tested
it here: with any combination of DHCP sub-options, no leases file is installed
in output/target/tmp or output/target/var/lib/* or anywhere else.
>
> (Informed guessing here) When buildroot creates the file system image, it does a
> rsync with chgrp (and chown) to the proper owner (root.root), but that
> is not allowed
> as an unprivileged user running buildroot on the host's /tmp directory.
Actually, no, buildroot doesn't do any rsyncing. It only rsyncs the skeleton
from package/skeleton to the target directory, but that is at the beginning of
the build before anything else is done.
There is also an rsync of the BR2_ROOTFS_OVERLAY directories at the end of the
build. Aha, that is probably what happens: you have a var/lib/dhcp/dhcpd.leases
in you overlay!
>
> I'm running very stock Ubuntu 14.04.5 x86 "server" installation cross compiling
> to an ARM target.
>
> I did not have a problem with older versions of Buildroot, it was when we pulled
> our baseline forward to 2016.08 that we had the problem (previously was 2014
> timeframe).
Aha bis: the symlink logic for the dhcp package has been there since 2005, but
the --keep-dirlinks argument of the rootfs overlay's rsync command was added
this year.
>
>> Also note that we don't have such failures in the autobuilders. And anyway, I
>> thought that a failing chgrp in rsync was non-fatal?
>
> Not for me. :-/ I will look into it further. Total speculation: it may
> be a double fault
> where the chown root fails followed by a chgrp root which also fails,
> aborting the script.
My rsync 3.1.1 doesn't complain when I use the -a option and it can't preserve
owner or group.
>
> As you note, the autobuilders are not catching it, so it might be
> something in how
> my build machine is set up.
>
>>> Changing the symlink to "../../tmp" rather than "/tmp" references the
>>> target's /tmp directory rather than the build machine's /tmp directory.
>>
>> The problem is that /var/lib itself may be a symlink to somewhere else. Some
>> people need to have /var/lib in a writeable partition while /var itself is on
>> the readonly rootfs. When /var/lib is a symlink, the ../.. will be interpreted
>> relative to the target of that symlink, which may be a different number of
>> levels down from root.
>>
>> Also, since /tmp always exists on the build machine, symlinking to /tmp just works.
>
> The symlink works fine, the chgrp to root on /tmp/dhcpd.leases doesn't. :-(
So, easy solution: in your overlay, put the dhcpd.leases in /tmp where it belongs.
Regards,
Arnout
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286500
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH] Fix dhcp symlink in target/var/lib/dhcp
2016-10-06 19:22 ` Arnout Vandecappelle
@ 2016-10-06 21:02 ` Jerry Van Baren
0 siblings, 0 replies; 6+ messages in thread
From: Jerry Van Baren @ 2016-10-06 21:02 UTC (permalink / raw)
To: buildroot
[snip]
> There is also an rsync of the BR2_ROOTFS_OVERLAY directories at the end of the
> build. Aha, that is probably what happens: you have a var/lib/dhcp/dhcpd.leases
> in you overlay!
BINGO! I missed that.
Thanks!
gvb
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH] Fix dhcp symlink in target/var/lib/dhcp
2016-10-05 23:20 ` Arnout Vandecappelle
2016-10-06 17:38 ` Jerry Van Baren
@ 2016-10-24 21:01 ` Thomas Petazzoni
1 sibling, 0 replies; 6+ messages in thread
From: Thomas Petazzoni @ 2016-10-24 21:01 UTC (permalink / raw)
To: buildroot
Hello,
On Thu, 6 Oct 2016 01:20:56 +0200, Arnout Vandecappelle wrote:
> > Changing the symlink to "../../tmp" rather than "/tmp" references the
> > target's /tmp directory rather than the build machine's /tmp directory.
>
> The problem is that /var/lib itself may be a symlink to somewhere else. Some
> people need to have /var/lib in a writeable partition while /var itself is on
> the readonly rootfs. When /var/lib is a symlink, the ../.. will be interpreted
> relative to the target of that symlink, which may be a different number of
> levels down from root.
>
> Also, since /tmp always exists on the build machine, symlinking to /tmp just works.
Note that the skeleton already installs /var/lib/misc -> ../../tmp
However, since this is part of the skeleton, one can assume that those
folks who replace /var/lib with a symlink will adapt the skeleton
accordingly (by using their own custom skeleton).
However, there's one thing I'm not entirely happy with with the
current /var/lib -> /tmp symlink. It means that the Buildroot build
will potentially install random stuff in /tmp. This doesn't seem really
nice.
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-10-24 21:01 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-09-28 16:07 [Buildroot] [PATCH] Fix dhcp symlink in target/var/lib/dhcp Root, Build
2016-10-05 23:20 ` Arnout Vandecappelle
2016-10-06 17:38 ` Jerry Van Baren
2016-10-06 19:22 ` Arnout Vandecappelle
2016-10-06 21:02 ` Jerry Van Baren
2016-10-24 21:01 ` Thomas Petazzoni
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.