32-bit jails on a 64-bit system?
Mark Huizer
freebsd+jail at dohd.org
Fri Mar 5 12:06:13 UTC 2010
On 1/21/2010 10:12, Miroslav Lachman wrote:
>
> I think it is nothing new to 8.0, it is the same as release note for 7.2.
>
> I didn't test it, but I think you can install (copy) i386 jail (or
> whole system) in to amd64 host and just run it as any other jail.
>
Actually, that's what I tried, since I want to move a server to new
hardware, but with serious time constraints on my side :-( So my plan
is/was: "rsync the entire machine, build a script that fixes IP
addresses here and there in the copy, run the jail".
I did have to fix a few little things, stuff like copy a few binaries
over (netstat, ps, ifconfig, w, top, ldd, ldd32) and of course the ld*
files in /libexec. Furthermore I moved /usr/lib to /usr/lib32 and copied
/usr/lib from the amd64 install.
So far so good, I start jail, I see ssh, apache etc running, I start to
get happy.
But... a few things don't seem to work as intended, although I haven't
checked each and every detail:
* cronolog seems to ignore part of the arguments, so if you tell it to
log to /data/logs/%Y/%m/%d/access.log it will log to
/data/logs/access.log ; didn't investigate yet
* postfix won't start. This I looked at a little more, but without success.
On the count of postfix:
# ldd /usr/local/sbin/postfix
/usr/local/sbin/postfix:
libpcre.so.0 => /usr/local/lib/libpcre.so.0 (0x2809d000)
libsasl2.so.2 => /usr/local/lib/libsasl2.so.2 (0x280cf000)
libpam.so.5 => not found (0x0)
libcrypt.so.5 => /usr/lib32/libcrypt.so.5 (0x280e6000)
libssl.so.6 => not found (0x0)
libcrypto.so.6 => /usr/lib32/libcrypto.so.6 (0x280ff000)
libc.so.7 => /usr/lib32/libc.so.7 (0x2825a000)
# ls -la /usr/lib*/libpam.so.5
-r--r--r-- 1 root wheel 35848 Mar 3 23:31 /usr/lib/libpam.so.5
-r--r--r-- 1 root wheel 28296 Mar 3 23:33 /usr/lib32/libpam.so.5
You'd say it should work, but it doesn't. The best I've got so far is
not copy /usr/lib from the amd64 host but make it a symlink to
/usr/lib32. Then postfix works, but netstat etc won't, of course.
While typing this, this brought me to another idea.
- make /usr/lib symlink to /usr/lib32, mkdir /usr/lib64 filled with the
libs from the hostmachine's /usr/lib, and then edit /etc/rc.d/ldconfig,
change _LDC's /usr/lib to /usr/lib64, restart, and presto postfix works.
It's dirty but it seems to work for now, time for testing.
But I don't really understand why apache etc works, and postfix doesn't.
So far I see the issues with libpam and libssl, which both are in
/usr/lib, where libc.so.7 is symlinked to /lib. Anyone who can explain
the difference to me? And is this intended behaviour?
And now off to cronolog's not working %Y :-)
mark
More information about the freebsd-jail
mailing list