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>