BIND8, BIND9 static compilation problems
Ivan Ivanovic
iiv at drenik.net
Sat Sep 27 17:21:40 UTC 2003
----- Original Message -----
From: Mark Andrews
Sent: Friday, September 26, 2003 01:50
Subject: Re: BIND8, BIND9 static compilation problems
Quoting Mark Andrews:
> Glibc contains a weak references to handle the differences
> between threaded and non-threaded builds. BIND 8.4.2
> contains a work-around.
>
> lib/irs/irs_data.c:
> #ifdef _REENTRANT
> struct __res_state *
> .....................
> #endif
Hi Mark!
First, BIG thanks for your effort! Your patch helped me in creating
static binaries. You said that 8.4.2 contains corrections to this
problem but I didn't find 8.4.2 src on ftp.isc.org so I manually
applied your patch to lib/irs/irs_data.c. It' worked fine :)
ldd named not a dynamic executable
ldd named-xfer not a dynamic executable
-rwxr-xr-x 1 dns dns 1173437 Sep 26 15:14 named
-rwxr-xr-x 1 dns dns 846726 Sep 26 15:14 named-xfer
named -v
named 8.4.1-REL Fri Sep 26 15:07:39 CEST 2003
that's cool, but new problems arrived, as I couldn't start named
in chroot environment with -u and -g flags. Without -u/-g flags,
named started successfully in chroot env of course started by root
user again.
# chroot /chroot/dns /sbin/named -u dns -g dns
user "dns" unknown
etc/
ls -la
-r--r--r-- 1 root root 11 Sep 26 15:27 group
-r--r--r-- 1 root root 696 Sep 26 15:26 localtime
-r--r--r-- 1 root root 7912 Sep 27 17:26 named.conf
-r--r--r-- 1 root root 27 Sep 27 17:32 passwd
-r--r--r-- 1 root root 5748 Sep 27 16:53 protocols
-r--r--r-- 1 root root 43 Sep 27 17:25 resolv.conf
-r--r--r-- 1 root root 150 Sep 27 17:19 services
cat passwd
dns:x:1002:102::/:
cat group
dns:x:102:
d--x--x--x 2 root root 4096 Sep 26 15:24 dev/
drwxr-xr-x 2 root root 4096 Sep 27 18:45 etc/
d--x--x--x 2 root root 4096 Sep 27 18:17 sbin/
drwxr-xr-x 5 dns dns 4096 Sep 26 15:13 var/
Now, as created all necessary directories and put all needed
files in, I was curios what more bind need, so I used statically
compiled strace.
chroot /chroot/dns sbin/strace -o trace.out /sbin/named -u dns -g dns
And voala, I get some interesting output from trace.out log file:
-- snip --
execve("/sbin/named", ["/sbin/named", "-u", "dns", "-g", "dns"], [/* 25
vars */]) = 0
fcntl64(0, F_GETFD) = 0
fcntl64(1, F_GETFD) = 0
fcntl64(2, F_GETFD) = 0
geteuid32() = 0
getuid32() = 0
getegid32() = 0
getgid32() = 0
brk(0) = 0x8155d48
brk(0x8156d48) = 0x8156d48
brk(0x8157000) = 0x8157000
brk(0x8158000) = 0x8158000
brk(0x815c000) = 0x815c000
old_mmap(NULL, 266240, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40000000
getuid32() = 0
getgid32() = 0
gettimeofday({1064682873, 942469}, NULL) = 0
getpid() = 4968
umask(022) = 022
socket(PF_UNIX, SOCK_STREAM, 0) = 3
connect(3, {sa_family=AF_UNIX, path="/var/run/.nscd_socket"}, 110) = -1
ENOENT (No such file or directory)
close(3) = 0
open("/etc/nsswitch.conf", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/etc/ld.so.cache", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/lib/libnss_compat.so.2", O_RDONLY) = -1 ENOENT (No such file or
directory)
stat64("/lib", 0xbffff240) = -1 ENOENT (No such file or
directory)
open("/usr/lib/libnss_compat.so.2", O_RDONLY) = -1 ENOENT (No such file
or directory)
stat64("/usr/lib", 0xbffff240) = -1 ENOENT (No such file or
directory)
write(2, "user \"dns\" unknown\n", 19) = 19
exit_group(1) = ?
-- snap --
Why statically compiled binary send request for:
/lib
/usr/lib
/etc/ld.so.cache
/lib/libnss_compat.so.2
/lib/libnss_files.so.2
Now, I grep't thru bind-src/ for "dlopen" and only
binary files matched(?)
egrep -r "dlopen" src/*
Binary file src/bin/named/named matches
Binary file src/bin/named-xfer/named-xfer matches
Binary file src/bin/addr/addr matches
Binary file src/bin/dig/dig matches
Binary file src/bin/dnskeygen/dnskeygen matches
Binary file src/bin/dnsquery/dnsquery matches
Binary file src/bin/host/host matches
Binary file src/bin/irpd/irpd matches
Binary file src/bin/mkservdb/mkservdb matches
Binary file src/bin/ndc/ndc matches
Binary file src/bin/nslookup/nslookup matches
Binary file src/bin/nsupdate/nsupdate matches
Please advise... :)
Thanks again
Ivan
More information about the bind-users
mailing list