[RFC]: switch to 2.6 linux emulation on default

Ed Schouten ed at 80386.nl
Fri May 30 09:51:18 UTC 2008


* Alexander Leidinger <Alexander at Leidinger.net> wrote:
> Quoting Ed Schouten <ed at 80386.nl> (from Fri, 30 May 2008 07:04:53 +0200):
>
>> Hello Roman,
>>
>> * Roman Divacky <rdivacky at freebsd.org> wrote:
>>> FreeBSD 7.0 contains support for running emulation of Linux 2.6
>>> (= NPTL, futexes, TLS basically) and I'd like to switch this
>>> on default in HEAD to see if we can ship 8.0 with this emulation
>>> running on default.
>>
>> Speaking about Linux emulation: a couple of days ago I added Linux
>> support to my TTY code in the mpsafetty branch. This means that it can
>> handle the things done in posix_openpt() and ptsname().
>>
>> Because Linux wants the minor number to be within a certain region, the
>> PTY driver creates a linux_device_handler for each device. ptsname()
>
> There's already something like a device handler or wrapper or whatever  
> (I hadn't a close look at this) for some devices. Does your work use  
> this existing infrastructure or is this something else?

It just calls linux_device_register_handler() to create the mapping. I'm
not entirely happy with this yet, because this means our pts(4) driver
needs to be recompiled to work with Linux binary compatibility.

In CVS, there is already some code in place to make the mapping work for
/dev/pts/XXX (see linux_stats.c), but it always returns the same device
number for all pts devices. I should probably just change that code to
parse the device number and base the major/minor number on that.

>> seems to do an fstat() on the controller descriptor, followed by looping
>> on the files in /dev and /dev/pts, to find the matching device number.
>>
>> Unfortunately sendmsg() seems broken on amd64 with COMPAT_LINUX32. This
>
> The LTP test (http://wiki.freebsd.org/linux-kernel/ltp) for sendmsg  
> tells it is broken on all architectures. Did you test on a i386 system  
> too?

On i386, it works good enough to at least make sshd work. On amd64 it
returns EINVAL, using the same Linux binaries.

>> means that SSH'ing to a Linux jail only works on i386, or on amd64 when
>> logging in as root (in that case sshd seems to be taking a shortcut, not
>> causing sendmsg() to be called).
>
> That's not nice, this should work even for normal users. I think we  
> should raise the priority for the sendmsg part.

Yes, we should. Unfortunately I don't I have the time to look into that.

-- 
 Ed Schouten <ed at 80386.nl>
 WWW: http://80386.nl/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-emulation/attachments/20080530/3301add2/attachment.pgp


More information about the freebsd-emulation mailing list