x86_64 linuxulator patches

Alexander Leidinger Alexander at Leidinger.net
Mon Aug 18 08:05:51 UTC 2008


Quoting "Chagin Dmitry" <dchagin at freebsd.org> (from Sun, 17 Aug 2008  
22:17:57 +0400):

> 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.
>
> there are other opinions?

I propose:
  - /compat/linux64 for 64bit stuff
  - /compat/linux32 a symlink to /compat/linux
  - /compat/linux for 32bit stuff (we can think about having)

Reasons:
  - existing installations don't get fucked up with a partial update
    (very big point!)
  - we don't have to special case amd64-linux32 for LINUXBASE, we
    just have to distinguish 32 and 64 bit (maybe with switches
    USE_LINUX and USE_LINUX64, we have to have separate 64bit
    ports anyway, when we want to be able to install in parallel)

Bye,
Alexander.

-- 
If God wanted us to be brave, why did he give us legs?
		-- Marvin Kitman

http://www.Leidinger.net    Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org       netchild @ FreeBSD.org  : PGP ID = 72077137


More information about the freebsd-emulation mailing list