Here some detailed information about the incompatibility of
twonkymedia-armel-glibc-2.2.5-4.4.11-20090108.zip and Debian GNU/Linux 5.0 "lenny".
TwonkyMedia server is compiled against a old LIBC version which is not supported by LENNY anymore. Which interface version are supported by LIBC can be checked with the following command.
#
apt-get install binutils
#
objdump -p /lib/libc.so.6
...
Version definitions:
1 0x01 0x0865f4e6 libc.so.6
2 0x00 0x0d696914 GLIBC_2.4
3 0x00 0x0d696915 GLIBC_2.5
GLIBC_2.4
4 0x00 0x0d696916 GLIBC_2.6
GLIBC_2.5
5 0x00 0x0d696917 GLIBC_2.7
GLIBC_2.6
6 0x00 0x0963cf85 GLIBC_PRIVATE
GLIBC_2.7
Version References:
required from ld-linux.so.3:
0x0d696914 0x00 08 GLIBC_2.4
0x0963cf85 0x00 07 GLIBC_PRIVATE
private flags = 4000002: [Version4 EABI] [has entry point]
Now check the LIBC versions TwonkyMedia server requests.
#
objdump -p /usr/local/twonkymedia/twonkymediaserver
...
Version References:
required from libc.so.6:
0x0d696911 0x00 08 GLIBC_2.1
0x09691f73 0x00 07 GLIBC_2.1.3
0x0d696912 0x00 05 GLIBC_2.2
0x0d696910 0x00 04 GLIBC_2.0
required from libpthread.so.0:
0x0d696912 0x00 06 GLIBC_2.2
0x0d696911 0x00 03 GLIBC_2.1
0x0d696910 0x00 02 GLIBC_2.0
private flags = 2: [APCS-32] [FPA float format] [has entry point]
Until TwonkyMedia is build agains these new LIBC version we have to install a LIBC environment which satisfy this API version. With Debian GNU/Linux 4.0 "etch" this requirements are solved. To install a ETCH on LENNY do the follwoing steps.
#
apt-get install debootstrap
#
debootstrap --arch=arm etch /etch-root http://ftp.de.debian.org/debian/
Now we have a chroot environment installed in /etch-root including an older LIBC.
#
objdump -p /etch-root/lib/libc.so.6
Version definitions:
1 0x01 0x0865f4e6 libc.so.6
2 0x00 0x0d696910 GLIBC_2.0
3 0x00 0x0d696911 GLIBC_2.1
GLIBC_2.0
4 0x00 0x09691f71 GLIBC_2.1.1
GLIBC_2.1
5 0x00 0x09691f72 GLIBC_2.1.2
GLIBC_2.1.1
6 0x00 0x09691f73 GLIBC_2.1.3
GLIBC_2.1.2
7 0x00 0x0d696912 GLIBC_2.2
GLIBC_2.1.3
8 0x00 0x09691a71 GLIBC_2.2.1
GLIBC_2.2
9 0x00 0x09691a72 GLIBC_2.2.2
GLIBC_2.2.1
10 0x00 0x09691a73 GLIBC_2.2.3
GLIBC_2.2.2
11 0x00 0x09691a74 GLIBC_2.2.4
GLIBC_2.2.3
12 0x00 0x09691a76 GLIBC_2.2.6
GLIBC_2.2.4
13 0x00 0x0d696913 GLIBC_2.3
GLIBC_2.2.6
14 0x00 0x09691972 GLIBC_2.3.2
GLIBC_2.3
15 0x00 0x09691973 GLIBC_2.3.3
GLIBC_2.3.2
16 0x00 0x09691974 GLIBC_2.3.4
GLIBC_2.3.3
17 0x00 0x0963cf85 GLIBC_PRIVATE
GLIBC_2.3.4
18 0x00 0x0b792650 GCC_3.0
Version References:
required from ld-linux.so.2:
0x0d696911 0x00 21 GLIBC_2.1
0x0963cf85 0x00 20 GLIBC_PRIVATE
0x0d696910 0x00 19 GLIBC_2.0
private flags = 2: [APCS-32] [FPA float format] [has entry point]
This version of LIBC support the required API version by TwonkyServer. Extract now the TwonkyServer ZIP archive within the new chroot environment.
#
mkdir /etch-root/usr/local/twonkymedia
#
cd /etch-root/usr/local/twonkymedia
#
unzip /root/twonkymedia-armel-glibc-2.2.5-4.4.11-20090108.zip
#
chmod 700 twonky* cgi-bin/* plugins/*
#
cd /root
We are now ready to start the TwonkyMedia server within the chroot environment. But there are two other things we have to prepare. First, the /proc directory have to be seen within the chroot envirionement. This can be done by the following command.
#
mount --bind /proc /etch-root/proc
Second. Our media libarary is outside the chroot directory. We have to mount the media library into the chroot directory with the same mount --bind command.
#
mount --bind /home /etch-root/home
We are now ready to start the TwonkyMedia server within the chroot environment.
#
chroot /etch-root /usr/local/twonkymedia/twonkymedia.sh start
Setup the TwonkyMedia server to search within the /home directory and you are ready.
A script make it easier to handle.
Code: Select all
#!/bin/sh
set -e
action="$1"
case "$action" in
*start)
mount | grep -q " on /etch-root/proc " || mount --bind /proc /etch-root/proc
mount | grep -q " on /etch-root/home " || mount --bind /home /etch-root/home
;;
esac
chroot /etch-root /usr/local/twonkymedia/twonkymedia.sh $action || true
case "$action" in
stop)
mount | grep -q " on /etch-root/proc " && umount /etch-root/proc
mount | grep -q " on /etch-root/home " && umount /etch-root/home
;;
esac
I hope this help