Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 9 Aug 2005 10:31:58 -0700
From:      Peter Wemm <peter@wemm.org>
To:        freebsd-amd64@freebsd.org
Subject:   Re: Booting a FreeBSD 5.4 amd64 kernel on root filesystem populated with i386 binaries
Message-ID:  <200508091031.59055.peter@wemm.org>
In-Reply-To: <20050808201354.GH1936@odin.ac.hmc.edu>
References:  <42F7B9F1.4090004@palisadesys.com> <20050808201354.GH1936@odin.ac.hmc.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
On Monday 08 August 2005 01:13 pm, Brooks Davis wrote:
> On Mon, Aug 08, 2005 at 03:00:49PM -0500, Guy Helmer wrote:
> > Should it be possible to boot a FreeBSD 5.4 amd64 kernel (built
> > with IA32 compatibility) using a root filesystem that contains i386
> > binaries?  I'm trying to upgrade systems in-place where the first
> > step is installing an amd64 kernel, /sbin/init,
> > /libexec/ld-elf32.so.1 and populating /lib32 with a copy of the
> > 32-bit libraries, and then rebooting.  However, after the kernel
> > boots, it gives a signal 10 when trying to invoke /bin/sh to run
> > /etc/rc.
> >
> > Am I way off base trying to do this?  It seems like it should work
> > but I'm missing something that isn't easy to diagnose.  Do I need
> > to replace /libexec/ld-elf.so.1 with an amd64 binary also?
>
> I'm pretty sure it's not supported under 5.x.  The i386 support just
> isn't good enough.  I'm not sure about 6.x.  Support is supposed to
> be a lot better there, but I don't recall any word of people testing
> this so at that point I suspect not.  I would suspect a jailed root
> will work before a real root file system does.

The emulation layer is targeted at application level programs, not 
system tools.  That means that system tools that use a binary interface 
with the kernel (mount, mountd, and so on) just won't work because we 
don't have a translation layer for that stuff.  There are problems with 
sysctl too, any 32 bit app that expects a 'long' item to be 32 bits 
will find out the hard way too.  This is probably what is breaking 
init, and it'll certainly break the boot shortly after init anyway.

Making a 64 bit kernel work perfectly with a 32 bit world is a huge 
task.  There are administrative ioctls with binary interfaces buried 
all over the place.  Not to mention libkvm consumers...

-- 
Peter Wemm - peter@wemm.org; peter@FreeBSD.org; peter@yahoo-inc.com
"All of this is for nothing if we don't go to the stars" - JMS/B5



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