Chroot to a 32 bits environment
John Baldwin
jhb at freebsd.org
Tue Dec 27 08:25:43 PST 2005
On Sunday 25 December 2005 06:14 am, Flavio Pimentel Silvestrow wrote:
> 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
Try backporting the changes to sys/compat/freebsd32/ from HEAD which include
recvmsg and friends.
--
John Baldwin <jhb at FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve" = http://www.FreeBSD.org
More information about the freebsd-amd64
mailing list