x86_64 linuxulator patches

Roman Divacky rdivacky at freebsd.org
Sun Aug 17 19:08:02 UTC 2008


On Sun, Aug 17, 2008 at 10:17:57PM +0400, Chagin Dmitry wrote:
> On Sun, Aug 10, 2008 at 03:21:24PM +0300, Kostik Belousov wrote:
> > On Sun, Aug 10, 2008 at 04:04:24PM +0400, Chagin Dmitry wrote:
> > > On Sun, Aug 10, 2008 at 02:54:06PM +0300, Kostik Belousov wrote:
> > > > On Sun, Aug 10, 2008 at 11:20:13AM +0400, Chagin Dmitry wrote:
> > > > > Hi, as promised, I place x86_64 linuxulator patches.
> > > > > 
> > > > > here the basic patch:
> > > > > http://78.107.232.239/linuxulator64-current.patch
> > > > > 
> > > > > here recvmsg && sendmsg patch (not tested with really applications):
> > > > > http://78.107.232.239/send-recv-msg.patch
> > > > > 
> > > > > here master repository:
> > > > > git://78.107.232.239/linuxulator
> > > > > 
> > > > > and ports used for testing (and only for testing):
> > > > > git://78.107.232.239/linux_base-f8
> > > > > git://78.107.232.239/linux_devel-f8
> > > > > git://78.107.232.239/linux_kdump-1.6
> > > > > 
> > > > > by default on amd64 builds i386 linuxulator, for build x86_64 use
> > > > > cd sys/modules/linux
> > > > > make -D COMPAT_LINUX64
> > > > > 
> > > > > for correct recognition of what linuxulator version is used
> > > > > added new sysctl compat.linux.platform
> > > > > for example use in ports Makefile's:
> > > > > 
> > > > > LINUX_PLATFORM!=        /sbin/sysctl -n compat.linux.platform 2>/dev/null
> > > > > 
> > > > > .if ${LINUX_PLATFORM}x == "x"
> > > > > IGNORE=                 linuxulator is not (kld)loaded
> > > > > .elif ${LINUX_PLATFORM} == "i386"
> > > > > LINUX_RPM_ARCH=         i386
> > > > > .elif ${LINUX_PLATFORM} == "x86_64"
> > > > > LINUX_RPM_ARCH=         x86_64
> > > > > SFX=                    64
> > > > > .else
> > > > > IGNORE=                 ${LINUX_PLATFORM} is not supported
> > > > > .endif
> > > > > 
> > > > > I shal glad to remarks, proposals and results of testing.
> > > > > thnx
> > > > 
> > > > Reading your email, I got an impression that i386/linux and x86_64/linux
> > > > ABI emulators are mutually exclusive. Is this right ? I think it would
> > > > be most useful to be able to have them both in one kernel.
> > > 
> > > yes, it so. if there are ports working only on i386 it's necessary
> > > to do it. I don't know such ports :(
> > 
> > Whether there is a _port_ that has no amd64 counterpart for i386 one is
> > irrelevant there. The Linux ABI emulation is supposed to work not only with
> > a software installed from port, but with most binaries.
> > 
> > If emulating both ia32 and x86_64 simultaneously is technically feasible
> > (and I believe it is), then both should be available. i386->amd64 is
> > not the replacement step, this is an backward-compatible upgrade.
> 
> Something few the interested participants of discussion :)
> problem in that I am not familiar with a ports infrastructure...
> 
> in my opinion the best decision for amd64 looks so. 
> we use two modules. linux.ko for x86_64 and linux32.ko for ia32,
> option COMPAT_LINUX for x86_64 and COMPAT_LINUX32 for ia32.
> and two  linux_base directories: /compat/linux for x86_64
> and /compat/linux32 for ia32.

I generally agree with that but the problem is that this breaks
POLA... :(


More information about the freebsd-emulation mailing list