Chroot to a 32 bits environment
Flavio Pimentel Silvestrow
bozo at abutre.homeip.net
Sun Dec 25 03:14:14 PST 2005
Hello.
I'm trying to setup a 32 bits environment on a amd64 system (6.0-STABLE
as of Dec 18).
My goal is to be able to build (and run!) ports marked as
ONLY_FOR_ARCHS=i386. I'm not sure it's going to work, but I'm willing to
find out.
Anyway, I built the 32 bits world and installed on a different folder,
like this:
# cd /usr/src
# make TARGET_ARCH=i386 buildworld
# make TARGET_ARCH=i386 DESTDIR=/usr/32 installworld
All went fine. I then mount /usr/32/dev adding the line below
to /etc/rc.conf and restarting devd:
devfs_set_rulesets="/usr/32/dev=devfsrules_jail"
Finally, I mount /usr/32/proc and chroot the whole thing:
# mount -t procfs proc /usr/32/proc
# chroot /usr/32
First error is:
cannot stat /var/run/utmp. Please "unset watch".
Which makes commands like 'who' unhappy. On to a more important test:
# truss ping 127.0.0.1
[ *** SNIP *** ]
gettimeofday({1135506828 464440},0x0) = 0 (0x0)
sendto(0x3,0x804ee14,0,0x0,{ AF_INET 127.0.0.1:0 },0x10) = 64 (0x40)
gettimeofday({1135506828 468435},0x0) = 0 (0x0)
gettimeofday({1135506828 470434},0x0) = 0 (0x0)
select(4,{3},0x0,0x0,{0 998001}) = 1 (0x1)
recvmsg() ERR#78 'Function not
implemented'
SIGNAL 12 (SIGSYS)
SIGNAL 12 (SIGSYS)
Process stopped because of: 16
process exit, rval = 12
Bad system call
(Lines might wrap, sorry).
So, recvmsg() not implemented? Something fishy...
Lots of basic commands like netstat and top fail to work also (I can
send the output for those if anybody wants). I have COMPAT_IA32 on my
kernel. Not really sure what to do next...
Sorry for the long post, and happy holidays to all!
--
Flavio Pimentel Silvestrow <bozo at abutre.homeip.net>
More information about the freebsd-amd64
mailing list