Bernard Li
2008-11-05 02:01:46 UTC
Dear all:
IRC user v_davidoff alerted me of an issue where libresolv.so is not
included in the initrd template. After a pretty thorough
investigation, I realized that whether libresolv.so is included in the
initrd_template depends on the build of Python on your build system.
On CentOS 4.x:
# ldd /usr/lib/python2.3/lib-dynload/_ssl.so | grep libresolv
libresolv.so.2 => /lib/libresolv.so.2 (0x002b5000)
This _ssl.so file gets copied during the build of BitTorrent as part
of initrd_source. Since it is linked against libresolv.so.2, this
library gets copied to initrd_source/build_dir/lib which eventually
makes it to initrd_template.
However, if your Python's _ssl.so does not link against libresolv.so
(as in the case of Debian and openSUSE distributions), then it will
not be pulled and thus during your SystemImager client install, you
won't be able to do any hostname resolution via DNS.
I figure that libresolv is a fairly important component and am thus
suggesting the following patch:
--- initrd.rul.orig 2007-09-09 01:40:20.000000000 -0700
+++ initrd.rul 2008-11-04 17:37:26.000000000 -0800
@@ -142,6 +142,8 @@
)
# copy libnss files as they are not automatically included
cp -a /lib64/libnss* $(INITRD_BUILD_DIR)/lib64
+ # copy libresolv files in case they are not explicitly pulled
+ cp -a /lib64/libresolv* $(INITRD_BUILD_DIR)/lib64
else
( \
cd $(INITRD_BUILD_DIR) && \
@@ -149,6 +151,8 @@
)
# copy libnss files as they are not automatically included
cp -a /lib/libnss* $(INITRD_BUILD_DIR)/lib
+ # copy libresolv files in case they are not explicitly pulled
+ cp -a /lib/libresolv* $(INITRD_BUILD_DIR)/lib
endif
# Undo prelinking. -AR-
[ -x `which prelink` ] && (find $(INITRD_BUILD_DIR) -type f -exec
prelink -u {} \; 2>&1 | grep -v "does not have .gnu.prelink_undo
section\|is not an ELF file") || true
Thoughts?
P.S. I casually did some checks of the initrd_template binaries hosted
at SF.net and a few of them do not include libresolv.so -- we might
consider rebuilding those binaries and re-post them.
Cheers,
Bernard
IRC user v_davidoff alerted me of an issue where libresolv.so is not
included in the initrd template. After a pretty thorough
investigation, I realized that whether libresolv.so is included in the
initrd_template depends on the build of Python on your build system.
On CentOS 4.x:
# ldd /usr/lib/python2.3/lib-dynload/_ssl.so | grep libresolv
libresolv.so.2 => /lib/libresolv.so.2 (0x002b5000)
This _ssl.so file gets copied during the build of BitTorrent as part
of initrd_source. Since it is linked against libresolv.so.2, this
library gets copied to initrd_source/build_dir/lib which eventually
makes it to initrd_template.
However, if your Python's _ssl.so does not link against libresolv.so
(as in the case of Debian and openSUSE distributions), then it will
not be pulled and thus during your SystemImager client install, you
won't be able to do any hostname resolution via DNS.
I figure that libresolv is a fairly important component and am thus
suggesting the following patch:
--- initrd.rul.orig 2007-09-09 01:40:20.000000000 -0700
+++ initrd.rul 2008-11-04 17:37:26.000000000 -0800
@@ -142,6 +142,8 @@
)
# copy libnss files as they are not automatically included
cp -a /lib64/libnss* $(INITRD_BUILD_DIR)/lib64
+ # copy libresolv files in case they are not explicitly pulled
+ cp -a /lib64/libresolv* $(INITRD_BUILD_DIR)/lib64
else
( \
cd $(INITRD_BUILD_DIR) && \
@@ -149,6 +151,8 @@
)
# copy libnss files as they are not automatically included
cp -a /lib/libnss* $(INITRD_BUILD_DIR)/lib
+ # copy libresolv files in case they are not explicitly pulled
+ cp -a /lib/libresolv* $(INITRD_BUILD_DIR)/lib
endif
# Undo prelinking. -AR-
[ -x `which prelink` ] && (find $(INITRD_BUILD_DIR) -type f -exec
prelink -u {} \; 2>&1 | grep -v "does not have .gnu.prelink_undo
section\|is not an ELF file") || true
Thoughts?
P.S. I casually did some checks of the initrd_template binaries hosted
at SF.net and a few of them do not include libresolv.so -- we might
consider rebuilding those binaries and re-post them.
Cheers,
Bernard