mirror of
https://git.yoctoproject.org/poky
synced 2026-06-04 02:00:04 +00:00
dhcp-client: fix invoke dhclient-script failed on Read-only file system
In read-only file system, '/etc' is on the readonly partition, and '/etc/resolv.conf' is symlinked to a separate writable partition. In this situation, we should use shell variable to instead of the temp file '/etc/resolv.conf.dhclient'. [YOCTO #5624] (From OE-Core rev: df793f4356b411cbb92445c4559c9b21eb6d99fc) Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
41917e83b5
commit
45bbd217c2
@@ -0,0 +1,70 @@
|
||||
dhcp-client: fix invoke dhclient-script failed on Read-only file system
|
||||
|
||||
In read-only file system, '/etc' is on the readonly partition,
|
||||
and '/etc/resolv.conf' is symlinked to a separate writable
|
||||
partition.
|
||||
|
||||
In this situation, we should use shell variable to instead of
|
||||
temp files '/etc/resolv.conf.dhclient' and '/etc/resolv.conf.dhclient6'.
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
|
||||
---
|
||||
client/scripts/linux | 20 +++++++++-----------
|
||||
1 file changed, 9 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/client/scripts/linux b/client/scripts/linux
|
||||
--- a/client/scripts/linux
|
||||
+++ b/client/scripts/linux
|
||||
@@ -27,27 +27,25 @@ 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
|
||||
+ resolv_conf=""
|
||||
if [ x"$new_domain_search" != x ]; then
|
||||
- echo search $new_domain_search >> /etc/resolv.conf.dhclient
|
||||
+ resolv_conf="search ${new_domain_search}\n"
|
||||
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
|
||||
+ resolv_conf="search ${new_domain_name}\n"
|
||||
fi
|
||||
for nameserver in $new_domain_name_servers; do
|
||||
- echo nameserver $nameserver >>/etc/resolv.conf.dhclient
|
||||
+ resolv_conf="${resolv_conf}nameserver ${nameserver}\n"
|
||||
done
|
||||
|
||||
- mv /etc/resolv.conf.dhclient /etc/resolv.conf
|
||||
+ echo -e "${resolv_conf}" > /etc/resolv.conf
|
||||
elif [ "x${new_dhcp6_name_servers}" != x ] ; then
|
||||
- cat /dev/null > /etc/resolv.conf.dhclient6
|
||||
- chmod 644 /etc/resolv.conf.dhclient6
|
||||
+ resolv_conf=""
|
||||
|
||||
if [ "x${new_dhcp6_domain_search}" != x ] ; then
|
||||
- echo search ${new_dhcp6_domain_search} >> /etc/resolv.conf.dhclient6
|
||||
+ resolv_conf="search ${new_dhcp6_domain_search}\n"
|
||||
fi
|
||||
shopt -s nocasematch
|
||||
for nameserver in ${new_dhcp6_name_servers} ; do
|
||||
@@ -59,11 +57,11 @@ make_resolv_conf() {
|
||||
else
|
||||
zone_id=
|
||||
fi
|
||||
- echo nameserver ${nameserver}$zone_id >> /etc/resolv.conf.dhclient6
|
||||
+ resolv_conf="${resolv_conf}nameserver ${nameserver}$zone_id\n"
|
||||
done
|
||||
shopt -u nocasematch
|
||||
|
||||
- mv /etc/resolv.conf.dhclient6 /etc/resolv.conf
|
||||
+ echo -e "${resolv_conf}" > /etc/resolv.conf
|
||||
fi
|
||||
}
|
||||
|
||||
--
|
||||
1.8.1.2
|
||||
|
||||
@@ -6,6 +6,7 @@ SRC_URI += "file://dhcp-3.0.3-dhclient-dbus.patch;striplevel=0 \
|
||||
file://fix-external-bind.patch \
|
||||
file://link-with-lcrypto.patch \
|
||||
file://fixsepbuild.patch \
|
||||
file://dhclient-script-drop-resolv.conf.dhclient.patch \
|
||||
"
|
||||
|
||||
SRC_URI[md5sum] = "f68e3c1f00a9af5742bc5e71d567cf93"
|
||||
|
||||
Reference in New Issue
Block a user