Bug#324162: lvm2create_initrd.gz does not filter linux-gate.so.1
when calculating library dependencies
Thomas Venieris
mot at mediaweb.gr
Mon Feb 13 01:41:46 UTC 2006
The LIBFILES=`ldd .....` line in lvm2create_initrd is an accident
waiting to happen.
Apart from not filtering linux-gate.so.1, it also _filters_ needed
libraries:
mot at bones:~$ ldd /bin/bash
linux-gate.so.1 => (0xffffe000)
libncurses.so.5 => /lib/libncurses.so.5 (0xb7ecb000)
libdl.so.2 => /lib/tls/libdl.so.2 (0xb7ec7000)
libc.so.6 => /lib/tls/libc.so.6 (0xb7d90000)
/lib/ld-linux.so.2 (0xb7f26000) # <------ This line is filtered
...because it does not contain a '=>'. That library is named differently
on x86-64 systems btw.
So the best way I found to make the script work is this:
# Make sure NOT to include linux-gate.so.1 which is virtual (does not
really exist)
LIBFILES=`ldd $BINFILES 2>/dev/null | grep -v "linux-gate.so.1 =>" | awk
'{if (/=>/) { print $3 }}' | sort -u`
# Make sure to INCLUDE the ld-linux.so lib (does not have a '=>')
LD_SO_FILE=`ldd $BINFILES | grep -v " => " | grep "/ld-linux" | awk '{
print $1 }' | sort -u`
LIBFILES="$LIBFILES $LD_SO_FILE"
Yes, its ugly as hell but thats the best I could do. Feel free to make
it better :-)
Finally, when the script creates the directories on the initrd
filesystem, it should be nice if it created the link from /lib64 to /lib
for x86-64 systems:
verbose "creating basic set of directories in $TMPMNT"
(cd $TMPMNT; mkdir bin dev etc lib proc sbin var; ln -s lib lib64)
Hope those help. Best regards!
--
moT
"There's the television. It's all right there. It's all
right there. Look. Listen. Kneel. Pray. Commercials."
(12 Monkeys)
More information about the pkg-lvm-maintainers
mailing list