Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 26 Dec 2005 10:18:18 -0600
From:      Astrodog <astrodog@gmail.com>
To:        Flavio Pimentel Silvestrow <bozo@abutre.homeip.net>
Cc:        freebsd-amd64@freebsd.org
Subject:   Re: Chroot to a 32 bits environment
Message-ID:  <2fd864e0512260818j869c6f2u1d7e61b22b8a41a8@mail.gmail.com>
In-Reply-To: <1135509244.49716.24.camel@abutre>
References:  <1135509244.49716.24.camel@abutre>

next in thread | previous in thread | raw e-mail | index | archive | help
On 12/25/05, Flavio Pimentel Silvestrow <bozo@abutre.homeip.net> 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=3Di386. I'm not sure it's going to work, but I'm willing t=
o
> find out.
>
> Anyway, I built the 32 bits world and installed on a different folder,
> like this:
>
>         # cd /usr/src
>         # make TARGET_ARCH=3Di386 buildworld
>         # make TARGET_ARCH=3Di386 DESTDIR=3D/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=3D"/usr/32/dev=3Ddevfsrules_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)            =3D 0 (0x0)
> sendto(0x3,0x804ee14,0,0x0,{ AF_INET 127.0.0.1:0 },0x10) =3D 64 (0x40)
> gettimeofday({1135506828 468435},0x0)            =3D 0 (0x0)
> gettimeofday({1135506828 470434},0x0)            =3D 0 (0x0)
> select(4,{3},0x0,0x0,{0 998001})                 =3D 1 (0x1)
> recvmsg()                                        ERR#78 'Function not
> implemented'
> SIGNAL 12 (SIGSYS)
> SIGNAL 12 (SIGSYS)
> Process stopped because of:  16
> process exit, rval =3D 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@abutre.homeip.net>

Within the jail environment, it becomes impossible for the 32-bit
binaries you're trying to run, to get to the libraries FreeBSD uses to
provide 32-bit compat, I suspect. As far as the "Only for i386" stuff
goes, in my experence, ~50% of the ports that show that, actually
compile on amd64 without too much in the way of bug fixing. For the
other 50%, I try to use things like i386 packages, which are, for the
most part, perfectly happy on amd64.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2fd864e0512260818j869c6f2u1d7e61b22b8a41a8>