How to run a software based on an old glibc in a chroot jail?
Linux - SoftwareThis forum is for Software issues.
Having a problem installing a new program? Want to know which application is best for the job? Post your question in this forum.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
How to run a software based on an old glibc in a chroot jail?
I need to run sybase-11.0.3.3 or 11.9.2 on centos5.
Because the glibc-2.5-24 of centos5 is too newer for sybase-11 and the known “seg fault” problem, I make a plan to install and run sybase11 in a chroot jail on centos5.
And in the chroot jail, there is a glibc-2.2.93 from Redhat8.0.
I've made many researches.
I've succeeded once (sybase11.0.3.3 running ok ), then I deleted the virtual machine since I thought all things were ok.
But after that, I've never succeeded and I still got the “segmentation fault” when booting the sybase server.
I think that something detail was important in that success, but I didn’t notice it.
Any help would be greatly appreciated.
Here’s my steps:
>>>On Redhat8.0:
(1)Install and run a sybase-11.0.3.3 instance. All things are ok.
# ldd $SYBASE/bin/dataserver
/lib/libNoVersion.so.1 => /lib/libNoVersion.so.1 (0×40013000)
libm.so.6 => /lib/i686/libm.so.6 (0x4001a000)
libc.so.6 => /lib/i686/libc.so.6 (0×42000000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0×40000000)
>>>On CentOS5:
(2)Make a chroot jail:/home/dbroot. In the jail, there are these dirs:
/bin, /lib, /sbin, /var/lib/rpm, /usr/lib, /usr/bin, /dev, /proc, /sys, /tmp
mount -o bind /proc /home/dbroot/proc
mount -o bind /dev /home/dbroot/dev
mount -o bind /sys /home/dbroot/sys
(3)Move these dirs with all their subdirs & files from Redhat8.0 to CentOS jail(/home/dbroot):
/bin, /lib, /sbin, /var/lib/rpm, /usr/lib, /usr/bin
(4)Configure /etc/chroot.conf and /etc/pam.d/login to make sybase loginning into jail.
All seems to be right, the dataserver is based on just the same libraries as those on Redhat8.0.
(6)Login as sybase, of cause it’s into $jail/opt/sybase(/home/dbroot/opt/sybase) now.
$ export LD_POINTER_GUARD=0 (LD_POINTER_GUARD=1 is tried also, no help)
$ sybinit
I still get the “segmentation fault” when trying to boot the server.
It’s so unreasonable!
Login this jail, the /lib that sybase can find only is in jail($jail/lib).
And the only glibc that sybase can address is the glibc-2.2.93 in $jail/lib.
It’s impossible for sybase to find glibc-2.5-24 of CentOS5 out of the jail.
Then, what’s wrong?
I found the reason is "number of opened files". If it's great than 1024, the sybase server cannot be booted. To execute "$ ulimit -n 1024", it's ok.
Further more, I think if ulimit "number of opened files" to be great than 1024, it's possible to boot sybase, the point is what other kernel parametres must be adjusted together?
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.