* [PATCH V2 0/2] dhcp-client: fix invoke dhclient-script failed on Read-only file system
@ 2013-12-03 13:46 Hongxu Jia
2013-12-03 13:46 ` [PATCH 1/2] dhclient-script: let resolv.conf and resolv.conf.dhclient on the same direcotry Hongxu Jia
2013-12-03 13:46 ` [PATCH 2/2] dhclient-script: override make_resolv_conf for read-only fs Hongxu Jia
0 siblings, 2 replies; 7+ messages in thread
From: Hongxu Jia @ 2013-12-03 13:46 UTC (permalink / raw)
To: openembedded-core; +Cc: saul.wold
Change in V2:
* we should *never* check IMAGE_FEATURES in individual recipes.
Two reasons:
1) It may cause unnecessary rebuilds.
2) IMAGE_FEATURES may be set in <image>.bb instead of local.conf.
* The make_resolv_conf function in that script doesn't take into
consideration the situation in which /etc/resolv.conf is a symlink
to /var/run/resolv.conf.
The following changes since commit a17ffbdbb7d142a94ef842a32b749b18e2e7f0a1:
bitbake: hob: fix rotating progress icon animation (2013-12-02 17:51:35 +0000)
are available in the git repository at:
git://git.pokylinux.org/poky-contrib hongxu/fix-dhcpclient
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=hongxu/fix-dhcpclient
Hongxu Jia (2):
dhclient-script: let resolv.conf and resolv.conf.dhclient on the same
direcotry
dhclient-script: override make_resolv_conf for read-only fs
meta/recipes-connectivity/dhcp/dhcp.inc | 7 +-
...ript-let-resolv.conf-and-resolv.conf.dhcl.patch | 74 ++++++++++++++++++++++
.../dhcp/files/readonly-dhclient-enter-hooks | 31 +++++++++
3 files changed, 111 insertions(+), 1 deletion(-)
create mode 100644 meta/recipes-connectivity/dhcp/dhcp/dhclient-script-let-resolv.conf-and-resolv.conf.dhcl.patch
create mode 100644 meta/recipes-connectivity/dhcp/files/readonly-dhclient-enter-hooks
--
1.8.1.2
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH 1/2] dhclient-script: let resolv.conf and resolv.conf.dhclient on the same direcotry 2013-12-03 13:46 [PATCH V2 0/2] dhcp-client: fix invoke dhclient-script failed on Read-only file system Hongxu Jia @ 2013-12-03 13:46 ` Hongxu Jia 2013-12-03 22:09 ` Phil Blundell 2013-12-10 4:41 ` Saul Wold 2013-12-03 13:46 ` [PATCH 2/2] dhclient-script: override make_resolv_conf for read-only fs Hongxu Jia 1 sibling, 2 replies; 7+ messages in thread From: Hongxu Jia @ 2013-12-03 13:46 UTC (permalink / raw) To: openembedded-core; +Cc: saul.wold Even though '/etc' is on the readonly partition, it's possible that /etc/resolv.conf is on a separate writable partition. In this situation, we should make sure the temp file resolv.conf.dhclient on the same direcotry. [YOCTO #5624] Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> --- meta/recipes-connectivity/dhcp/dhcp.inc | 1 + ...ript-let-resolv.conf-and-resolv.conf.dhcl.patch | 74 ++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 meta/recipes-connectivity/dhcp/dhcp/dhclient-script-let-resolv.conf-and-resolv.conf.dhcl.patch diff --git a/meta/recipes-connectivity/dhcp/dhcp.inc b/meta/recipes-connectivity/dhcp/dhcp.inc index ad82b57..d8376aa 100644 --- a/meta/recipes-connectivity/dhcp/dhcp.inc +++ b/meta/recipes-connectivity/dhcp/dhcp.inc @@ -16,6 +16,7 @@ SRC_URI = "ftp://ftp.isc.org/isc/dhcp/${PV}/dhcp-${PV}.tar.gz \ file://site.h \ file://init-relay file://default-relay \ file://init-server file://default-server \ + file://dhclient-script-let-resolv.conf-and-resolv.conf.dhcl.patch \ file://dhclient.conf file://dhcpd.conf" inherit autotools diff --git a/meta/recipes-connectivity/dhcp/dhcp/dhclient-script-let-resolv.conf-and-resolv.conf.dhcl.patch b/meta/recipes-connectivity/dhcp/dhcp/dhclient-script-let-resolv.conf-and-resolv.conf.dhcl.patch new file mode 100644 index 0000000..db56f70 --- /dev/null +++ b/meta/recipes-connectivity/dhcp/dhcp/dhclient-script-let-resolv.conf-and-resolv.conf.dhcl.patch @@ -0,0 +1,74 @@ +dhclient-script: let resolv.conf and resolv.conf.dhclient on the same direcotry + +Even though '/etc' is on the readonly partition, it's possible that +/etc/resolv.conf is on a separate writable partition. + +In this situation, we should make sure the temp file resolv.conf.dhclient +on the same direcotry. + +Upstream-Status: Pending +Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> +--- + client/scripts/linux | 24 +++++++++++++----------- + 1 file changed, 13 insertions(+), 11 deletions(-) + +diff --git a/client/scripts/linux b/client/scripts/linux +index 6f8ea4b..fbc6324 100755 +--- a/client/scripts/linux ++++ b/client/scripts/linux +@@ -27,27 +27,29 @@ ip=/sbin/ip + + make_resolv_conf() { + if [ x"$new_domain_name_servers" != x ]; then +- cat /dev/null > /etc/resolv.conf.dhclient +- chmod 644 /etc/resolv.conf.dhclient ++ sysconfdir=`dirname $(readlink -f '/etc/resolv.conf')` ++ cat /dev/null > $sysconfdir/resolv.conf.dhclient ++ chmod 644 $sysconfdir/resolv.conf.dhclient + if [ x"$new_domain_search" != x ]; then +- echo search $new_domain_search >> /etc/resolv.conf.dhclient ++ echo search $new_domain_search >> $sysconfdir/esolv.conf.dhclient + elif [ x"$new_domain_name" != x ]; then + # Note that the DHCP 'Domain Name Option' is really just a domain + # name, and that this practice of using the domain name option as + # a search path is both nonstandard and deprecated. +- echo search $new_domain_name >> /etc/resolv.conf.dhclient ++ echo search $new_domain_name >> $sysconfdir/resolv.conf.dhclient + fi + for nameserver in $new_domain_name_servers; do +- echo nameserver $nameserver >>/etc/resolv.conf.dhclient ++ echo nameserver $nameserver >>$sysconfdir/resolv.conf.dhclient + done + +- mv /etc/resolv.conf.dhclient /etc/resolv.conf ++ mv $sysconfdir/resolv.conf.dhclient $sysconfdir/resolv.conf + elif [ "x${new_dhcp6_name_servers}" != x ] ; then +- cat /dev/null > /etc/resolv.conf.dhclient6 +- chmod 644 /etc/resolv.conf.dhclient6 ++ sysconfdir=`dirname $(readlink -f '/etc/resolv.conf')` ++ cat /dev/null > $sysconfdir/resolv.conf.dhclient6 ++ chmod 644 $sysconfdir/resolv.conf.dhclient6 + + if [ "x${new_dhcp6_domain_search}" != x ] ; then +- echo search ${new_dhcp6_domain_search} >> /etc/resolv.conf.dhclient6 ++ echo search ${new_dhcp6_domain_search} >> $sysconfdir/resolv.conf.dhclient6 + fi + shopt -s nocasematch + for nameserver in ${new_dhcp6_name_servers} ; do +@@ -59,11 +61,11 @@ make_resolv_conf() { + else + zone_id= + fi +- echo nameserver ${nameserver}$zone_id >> /etc/resolv.conf.dhclient6 ++ echo nameserver ${nameserver}$zone_id >> $sysconfdir/resolv.conf.dhclient6 + done + shopt -u nocasematch + +- mv /etc/resolv.conf.dhclient6 /etc/resolv.conf ++ mv $sysconfdir/resolv.conf.dhclient6 $sysconfdir/resolv.conf + fi + } + +-- +1.7.9.5 + -- 1.8.1.2 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] dhclient-script: let resolv.conf and resolv.conf.dhclient on the same direcotry 2013-12-03 13:46 ` [PATCH 1/2] dhclient-script: let resolv.conf and resolv.conf.dhclient on the same direcotry Hongxu Jia @ 2013-12-03 22:09 ` Phil Blundell 2013-12-04 2:00 ` Hongxu Jia 2013-12-10 4:41 ` Saul Wold 1 sibling, 1 reply; 7+ messages in thread From: Phil Blundell @ 2013-12-03 22:09 UTC (permalink / raw) To: Hongxu Jia; +Cc: saul.wold, openembedded-core On Tue, 2013-12-03 at 21:46 +0800, Hongxu Jia wrote: > +- echo search $new_domain_search >> /etc/resolv.conf.dhclient > ++ echo search $new_domain_search >> $sysconfdir/esolv.conf.dhclient Should that be "$sysconfdir/resolv.conf.dhclient"? p. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] dhclient-script: let resolv.conf and resolv.conf.dhclient on the same direcotry 2013-12-03 22:09 ` Phil Blundell @ 2013-12-04 2:00 ` Hongxu Jia 0 siblings, 0 replies; 7+ messages in thread From: Hongxu Jia @ 2013-12-04 2:00 UTC (permalink / raw) To: Phil Blundell; +Cc: saul.wold, openembedded-core On 12/04/2013 06:09 AM, Phil Blundell wrote: > On Tue, 2013-12-03 at 21:46 +0800, Hongxu Jia wrote: >> +- echo search $new_domain_search >> /etc/resolv.conf.dhclient >> ++ echo search $new_domain_search >> $sysconfdir/esolv.conf.dhclient > Should that be "$sysconfdir/resolv.conf.dhclient"? Yes, sorry for the missing, I have updated the git tree to fix this. //Hongxu > p. > > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] dhclient-script: let resolv.conf and resolv.conf.dhclient on the same direcotry 2013-12-03 13:46 ` [PATCH 1/2] dhclient-script: let resolv.conf and resolv.conf.dhclient on the same direcotry Hongxu Jia 2013-12-03 22:09 ` Phil Blundell @ 2013-12-10 4:41 ` Saul Wold 2013-12-10 10:25 ` Hongxu Jia 1 sibling, 1 reply; 7+ messages in thread From: Saul Wold @ 2013-12-10 4:41 UTC (permalink / raw) To: Hongxu Jia, openembedded-core On 12/03/2013 05:46 AM, Hongxu Jia wrote: > Even though '/etc' is on the readonly partition, it's possible that > /etc/resolv.conf is on a separate writable partition. > > In this situation, we should make sure the temp file resolv.conf.dhclient > on the same direcotry. > > [YOCTO #5624] > > Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> > --- > meta/recipes-connectivity/dhcp/dhcp.inc | 1 + > ...ript-let-resolv.conf-and-resolv.conf.dhcl.patch | 74 ++++++++++++++++++++++ These new scripts are doing alot of out calling from the shell script, and can cause additional fork/execs during the critical path of system startup, is there any way to reduce this? Sau! > 2 files changed, 75 insertions(+) > create mode 100644 meta/recipes-connectivity/dhcp/dhcp/dhclient-script-let-resolv.conf-and-resolv.conf.dhcl.patch > > diff --git a/meta/recipes-connectivity/dhcp/dhcp.inc b/meta/recipes-connectivity/dhcp/dhcp.inc > index ad82b57..d8376aa 100644 > --- a/meta/recipes-connectivity/dhcp/dhcp.inc > +++ b/meta/recipes-connectivity/dhcp/dhcp.inc > @@ -16,6 +16,7 @@ SRC_URI = "ftp://ftp.isc.org/isc/dhcp/${PV}/dhcp-${PV}.tar.gz \ > file://site.h \ > file://init-relay file://default-relay \ > file://init-server file://default-server \ > + file://dhclient-script-let-resolv.conf-and-resolv.conf.dhcl.patch \ > file://dhclient.conf file://dhcpd.conf" > > inherit autotools > diff --git a/meta/recipes-connectivity/dhcp/dhcp/dhclient-script-let-resolv.conf-and-resolv.conf.dhcl.patch b/meta/recipes-connectivity/dhcp/dhcp/dhclient-script-let-resolv.conf-and-resolv.conf.dhcl.patch > new file mode 100644 > index 0000000..db56f70 > --- /dev/null > +++ b/meta/recipes-connectivity/dhcp/dhcp/dhclient-script-let-resolv.conf-and-resolv.conf.dhcl.patch > @@ -0,0 +1,74 @@ > +dhclient-script: let resolv.conf and resolv.conf.dhclient on the same direcotry > + > +Even though '/etc' is on the readonly partition, it's possible that > +/etc/resolv.conf is on a separate writable partition. > + > +In this situation, we should make sure the temp file resolv.conf.dhclient > +on the same direcotry. > + > +Upstream-Status: Pending > +Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> > +--- > + client/scripts/linux | 24 +++++++++++++----------- > + 1 file changed, 13 insertions(+), 11 deletions(-) > + > +diff --git a/client/scripts/linux b/client/scripts/linux > +index 6f8ea4b..fbc6324 100755 > +--- a/client/scripts/linux > ++++ b/client/scripts/linux > +@@ -27,27 +27,29 @@ ip=/sbin/ip > + > + make_resolv_conf() { > + if [ x"$new_domain_name_servers" != x ]; then > +- cat /dev/null > /etc/resolv.conf.dhclient > +- chmod 644 /etc/resolv.conf.dhclient > ++ sysconfdir=`dirname $(readlink -f '/etc/resolv.conf')` > ++ cat /dev/null > $sysconfdir/resolv.conf.dhclient > ++ chmod 644 $sysconfdir/resolv.conf.dhclient > + if [ x"$new_domain_search" != x ]; then > +- echo search $new_domain_search >> /etc/resolv.conf.dhclient > ++ echo search $new_domain_search >> $sysconfdir/esolv.conf.dhclient > + elif [ x"$new_domain_name" != x ]; then > + # Note that the DHCP 'Domain Name Option' is really just a domain > + # name, and that this practice of using the domain name option as > + # a search path is both nonstandard and deprecated. > +- echo search $new_domain_name >> /etc/resolv.conf.dhclient > ++ echo search $new_domain_name >> $sysconfdir/resolv.conf.dhclient > + fi > + for nameserver in $new_domain_name_servers; do > +- echo nameserver $nameserver >>/etc/resolv.conf.dhclient > ++ echo nameserver $nameserver >>$sysconfdir/resolv.conf.dhclient > + done > + > +- mv /etc/resolv.conf.dhclient /etc/resolv.conf > ++ mv $sysconfdir/resolv.conf.dhclient $sysconfdir/resolv.conf > + elif [ "x${new_dhcp6_name_servers}" != x ] ; then > +- cat /dev/null > /etc/resolv.conf.dhclient6 > +- chmod 644 /etc/resolv.conf.dhclient6 > ++ sysconfdir=`dirname $(readlink -f '/etc/resolv.conf')` > ++ cat /dev/null > $sysconfdir/resolv.conf.dhclient6 > ++ chmod 644 $sysconfdir/resolv.conf.dhclient6 > + > + if [ "x${new_dhcp6_domain_search}" != x ] ; then > +- echo search ${new_dhcp6_domain_search} >> /etc/resolv.conf.dhclient6 > ++ echo search ${new_dhcp6_domain_search} >> $sysconfdir/resolv.conf.dhclient6 > + fi > + shopt -s nocasematch > + for nameserver in ${new_dhcp6_name_servers} ; do > +@@ -59,11 +61,11 @@ make_resolv_conf() { > + else > + zone_id= > + fi > +- echo nameserver ${nameserver}$zone_id >> /etc/resolv.conf.dhclient6 > ++ echo nameserver ${nameserver}$zone_id >> $sysconfdir/resolv.conf.dhclient6 > + done > + shopt -u nocasematch > + > +- mv /etc/resolv.conf.dhclient6 /etc/resolv.conf > ++ mv $sysconfdir/resolv.conf.dhclient6 $sysconfdir/resolv.conf > + fi > + } > + > +-- > +1.7.9.5 > + > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] dhclient-script: let resolv.conf and resolv.conf.dhclient on the same direcotry 2013-12-10 4:41 ` Saul Wold @ 2013-12-10 10:25 ` Hongxu Jia 0 siblings, 0 replies; 7+ messages in thread From: Hongxu Jia @ 2013-12-10 10:25 UTC (permalink / raw) To: Saul Wold, openembedded-core On 12/10/2013 12:41 PM, Saul Wold wrote: > On 12/03/2013 05:46 AM, Hongxu Jia wrote: >> Even though '/etc' is on the readonly partition, it's possible that >> /etc/resolv.conf is on a separate writable partition. >> >> In this situation, we should make sure the temp file >> resolv.conf.dhclient >> on the same direcotry. >> >> [YOCTO #5624] >> >> Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> >> --- >> meta/recipes-connectivity/dhcp/dhcp.inc | 1 + >> ...ript-let-resolv.conf-and-resolv.conf.dhcl.patch | 74 >> ++++++++++++++++++++++ > > These new scripts are doing alot of out calling from the shell script, > and can cause additional fork/execs during the critical path of system > startup, is there any way to reduce this? > Do you mean the new script :readonly-dhclient-enter-hooks ? If yes, we could just drop the [PATCH 2/2] patch and it could work while read-only is enabled; Because /etc/resolv.conf is a symlink to /var/run/ resolv.conf in oe-core, and it's always writable: #ls /etc/resolv.conf -al lrwxrwxrwx 1 root root 29 Oct 22 2012 /etc/resolv.conf -> /var/run/resolv.conf //Hongxu > Sau! > >> 2 files changed, 75 insertions(+) >> create mode 100644 >> meta/recipes-connectivity/dhcp/dhcp/dhclient-script-let-resolv.conf-and-resolv.conf.dhcl.patch >> >> diff --git a/meta/recipes-connectivity/dhcp/dhcp.inc >> b/meta/recipes-connectivity/dhcp/dhcp.inc >> index ad82b57..d8376aa 100644 >> --- a/meta/recipes-connectivity/dhcp/dhcp.inc >> +++ b/meta/recipes-connectivity/dhcp/dhcp.inc >> @@ -16,6 +16,7 @@ SRC_URI = >> "ftp://ftp.isc.org/isc/dhcp/${PV}/dhcp-${PV}.tar.gz \ >> file://site.h \ >> file://init-relay file://default-relay \ >> file://init-server file://default-server \ >> + file://dhclient-script-let-resolv.conf-and-resolv.conf.dhcl.patch \ >> file://dhclient.conf file://dhcpd.conf" >> >> inherit autotools >> diff --git >> a/meta/recipes-connectivity/dhcp/dhcp/dhclient-script-let-resolv.conf-and-resolv.conf.dhcl.patch >> b/meta/recipes-connectivity/dhcp/dhcp/dhclient-script-let-resolv.conf-and-resolv.conf.dhcl.patch >> >> new file mode 100644 >> index 0000000..db56f70 >> --- /dev/null >> +++ >> b/meta/recipes-connectivity/dhcp/dhcp/dhclient-script-let-resolv.conf-and-resolv.conf.dhcl.patch >> @@ -0,0 +1,74 @@ >> +dhclient-script: let resolv.conf and resolv.conf.dhclient on the >> same direcotry >> + >> +Even though '/etc' is on the readonly partition, it's possible that >> +/etc/resolv.conf is on a separate writable partition. >> + >> +In this situation, we should make sure the temp file >> resolv.conf.dhclient >> +on the same direcotry. >> + >> +Upstream-Status: Pending >> +Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> >> +--- >> + client/scripts/linux | 24 +++++++++++++----------- >> + 1 file changed, 13 insertions(+), 11 deletions(-) >> + >> +diff --git a/client/scripts/linux b/client/scripts/linux >> +index 6f8ea4b..fbc6324 100755 >> +--- a/client/scripts/linux >> ++++ b/client/scripts/linux >> +@@ -27,27 +27,29 @@ ip=/sbin/ip >> + >> + make_resolv_conf() { >> + if [ x"$new_domain_name_servers" != x ]; then >> +- cat /dev/null > /etc/resolv.conf.dhclient >> +- chmod 644 /etc/resolv.conf.dhclient >> ++ sysconfdir=`dirname $(readlink -f '/etc/resolv.conf')` >> ++ cat /dev/null > $sysconfdir/resolv.conf.dhclient >> ++ chmod 644 $sysconfdir/resolv.conf.dhclient >> + if [ x"$new_domain_search" != x ]; then >> +- echo search $new_domain_search >> /etc/resolv.conf.dhclient >> ++ echo search $new_domain_search >> >> $sysconfdir/esolv.conf.dhclient >> + elif [ x"$new_domain_name" != x ]; then >> + # Note that the DHCP 'Domain Name Option' is really just a >> domain >> + # name, and that this practice of using the domain name >> option as >> + # a search path is both nonstandard and deprecated. >> +- echo search $new_domain_name >> /etc/resolv.conf.dhclient >> ++ echo search $new_domain_name >> $sysconfdir/resolv.conf.dhclient >> + fi >> + for nameserver in $new_domain_name_servers; do >> +- echo nameserver $nameserver >>/etc/resolv.conf.dhclient >> ++ echo nameserver $nameserver >>$sysconfdir/resolv.conf.dhclient >> + done >> + >> +- mv /etc/resolv.conf.dhclient /etc/resolv.conf >> ++ mv $sysconfdir/resolv.conf.dhclient $sysconfdir/resolv.conf >> + elif [ "x${new_dhcp6_name_servers}" != x ] ; then >> +- cat /dev/null > /etc/resolv.conf.dhclient6 >> +- chmod 644 /etc/resolv.conf.dhclient6 >> ++ sysconfdir=`dirname $(readlink -f '/etc/resolv.conf')` >> ++ cat /dev/null > $sysconfdir/resolv.conf.dhclient6 >> ++ chmod 644 $sysconfdir/resolv.conf.dhclient6 >> + >> + if [ "x${new_dhcp6_domain_search}" != x ] ; then >> +- echo search ${new_dhcp6_domain_search} >> >> /etc/resolv.conf.dhclient6 >> ++ echo search ${new_dhcp6_domain_search} >> >> $sysconfdir/resolv.conf.dhclient6 >> + fi >> + shopt -s nocasematch >> + for nameserver in ${new_dhcp6_name_servers} ; do >> +@@ -59,11 +61,11 @@ make_resolv_conf() { >> + else >> + zone_id= >> + fi >> +- echo nameserver ${nameserver}$zone_id >> >> /etc/resolv.conf.dhclient6 >> ++ echo nameserver ${nameserver}$zone_id >> >> $sysconfdir/resolv.conf.dhclient6 >> + done >> + shopt -u nocasematch >> + >> +- mv /etc/resolv.conf.dhclient6 /etc/resolv.conf >> ++ mv $sysconfdir/resolv.conf.dhclient6 $sysconfdir/resolv.conf >> + fi >> + } >> + >> +-- >> +1.7.9.5 >> + >> > ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/2] dhclient-script: override make_resolv_conf for read-only fs 2013-12-03 13:46 [PATCH V2 0/2] dhcp-client: fix invoke dhclient-script failed on Read-only file system Hongxu Jia 2013-12-03 13:46 ` [PATCH 1/2] dhclient-script: let resolv.conf and resolv.conf.dhclient on the same direcotry Hongxu Jia @ 2013-12-03 13:46 ` Hongxu Jia 1 sibling, 0 replies; 7+ messages in thread From: Hongxu Jia @ 2013-12-03 13:46 UTC (permalink / raw) To: openembedded-core; +Cc: saul.wold When dhclient-script starts, the client script first defines a shell function, make_resolv_conf , which is later used to create the /etc/resolv.conf file. But the read-only filesystem didn't permit the modification, so override the default behaviour and redefine this function in the enter hook script. http://linux.about.com/library/cmd/blcmdl8_dhclient-script.htm [YOCTO #5624] Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> --- meta/recipes-connectivity/dhcp/dhcp.inc | 6 ++++- .../dhcp/files/readonly-dhclient-enter-hooks | 31 ++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-connectivity/dhcp/files/readonly-dhclient-enter-hooks diff --git a/meta/recipes-connectivity/dhcp/dhcp.inc b/meta/recipes-connectivity/dhcp/dhcp.inc index d8376aa..58715be 100644 --- a/meta/recipes-connectivity/dhcp/dhcp.inc +++ b/meta/recipes-connectivity/dhcp/dhcp.inc @@ -16,6 +16,7 @@ SRC_URI = "ftp://ftp.isc.org/isc/dhcp/${PV}/dhcp-${PV}.tar.gz \ file://site.h \ file://init-relay file://default-relay \ file://init-server file://default-server \ + file://readonly-dhclient-enter-hooks \ file://dhclient-script-let-resolv.conf-and-resolv.conf.dhcl.patch \ file://dhclient.conf file://dhcpd.conf" @@ -52,6 +53,7 @@ do_install_append () { mv ${D}${sbindir}/dhclient ${D}${base_sbindir}/ fi install -m 0755 ${S}/client/scripts/linux ${D}${base_sbindir}/dhclient-script + install -m 0755 ${WORKDIR}/readonly-dhclient-enter-hooks ${D}${sysconfdir}/dhclient-enter-hooks } PACKAGES += "dhcp-server dhcp-server-config dhcp-client dhcp-relay dhcp-omshell" @@ -67,7 +69,9 @@ FILES_dhcp-server-config = "${sysconfdir}/default/dhcp-server ${sysconfdir}/dhcp FILES_dhcp-relay = "${sbindir}/dhcrelay ${sysconfdir}/init.d/dhcp-relay ${sysconfdir}/default/dhcp-relay" -FILES_dhcp-client = "${base_sbindir}/dhclient ${base_sbindir}/dhclient-script ${sysconfdir}/dhcp/dhclient.conf" +FILES_dhcp-client = "${base_sbindir}/dhclient ${base_sbindir}/dhclient-script ${sysconfdir}/dhcp/dhclient.conf \ + ${sysconfdir}/dhclient-enter-hooks \ +" RDEPENDS_dhcp-client = "bash" FILES_dhcp-omshell = "${bindir}/omshell" diff --git a/meta/recipes-connectivity/dhcp/files/readonly-dhclient-enter-hooks b/meta/recipes-connectivity/dhcp/files/readonly-dhclient-enter-hooks new file mode 100644 index 0000000..c43e81f --- /dev/null +++ b/meta/recipes-connectivity/dhcp/files/readonly-dhclient-enter-hooks @@ -0,0 +1,31 @@ +is_on_read_only_partition () { + FILE=$1 + dir=`dirname $(readlink -f "$FILE")` + while true; do + if [ ! -d "$dir" ]; then + echo "ERROR: $dir is not a directory" + exit 1 + else + for flag in `awk -v dir=$dir '{ if ($2 == dir) { print "FOUND"; split($4,FLAGS,",") } }; \ + END { for (f in FLAGS) print FLAGS[f] }' < /proc/mounts`; do + [ "$flag" = "FOUND" ] && partition="read-write" + [ "$flag" = "ro" ] && { partition="read-only"; break; } + done + if [ "$dir" = "/" -o -n "$partition" ]; then + break + else + dir=`dirname $dir` + fi + fi + done + [ "$partition" = "read-only" ] && echo "yes" || echo "no" +} + +# If resolv.conf on the readonly partition, we should override make_resolv_conf +if [ `is_on_read_only_partition /etc/resolv.conf` = "no" ]; then + return +fi + +make_resolv_conf(){ + : +} -- 1.8.1.2 ^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2013-12-10 10:25 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-12-03 13:46 [PATCH V2 0/2] dhcp-client: fix invoke dhclient-script failed on Read-only file system Hongxu Jia 2013-12-03 13:46 ` [PATCH 1/2] dhclient-script: let resolv.conf and resolv.conf.dhclient on the same direcotry Hongxu Jia 2013-12-03 22:09 ` Phil Blundell 2013-12-04 2:00 ` Hongxu Jia 2013-12-10 4:41 ` Saul Wold 2013-12-10 10:25 ` Hongxu Jia 2013-12-03 13:46 ` [PATCH 2/2] dhclient-script: override make_resolv_conf for read-only fs Hongxu Jia
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox