[OE-core] [PATCH 1/2] dhclient-script: let resolv.conf and resolv.conf.dhclient on the same direcotry
Hongxu Jia
hongxu.jia at windriver.com
Tue Dec 10 10:25:50 UTC 2013
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 at 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 at 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
>> +
>>
>
More information about the Openembedded-core
mailing list