As of April 2007 the Linux® emulation layer is capable of
emulating the Linux® 2.6.16 kernel quite well. The remaining
problems concern futexes, unfinished *at family of syscalls,
problematic signals delivery, missing epoll
and
inotify
and probably some bugs we have not
discovered yet. Despite this we are capable of running basically all
the Linux® programs included in FreeBSD Ports Collection with
Fedora Core 4 at 2.6.16 and there are some rudimentary
reports of success with Fedora Core 6 at 2.6.16. The
Fedora Core 6 linux_base was recently committed enabling
some further testing of the emulation layer and giving us some more
hints where we should put our effort in implementing missing
stuff.
We are able to run the most used applications like
www/linux-firefox,
www/linux-opera,
net-im/skype and some games from
the Ports Collection. Some of the programs exhibit bad behaviour
under 2.6 emulation but this is currently under investigation and
hopefully will be fixed soon. The only big application that is
known not to work is the Linux® Java™ Development Kit and this is
because of the requirement of epoll
facility which is not directly related to the Linux®
kernel 2.6.
We hope to enable 2.6.16 emulation by default some time after FreeBSD 7.0 is released at least to expose the 2.6 emulation parts for some wider testing. Once this is done we can switch to Fedora Core 6 linux_base, which is the ultimate plan.
Future work should focus on fixing the remaining issues with
futexes, implement the rest of the *at family of syscalls, fix the
signal delivery and possibly implement the epoll
and inotify
facilities.
We hope to be able to run the most important programs flawlessly soon, so we will be able to switch to the 2.6 emulation by default and make the Fedora Core 6 the default linux_base because our currently used Fedora Core 4 is not supported any more.
The other possible goal is to share our code with NetBSD and DragonflyBSD. NetBSD has some support for 2.6 emulation but its far from finished and not really tested. DragonflyBSD has expressed some interest in porting the 2.6 improvements.
Generally, as Linux® develops we would like to keep up with their
development, implementing newly added syscalls. Splice comes to mind
first. Some already implemented syscalls are also heavily crippled,
for example mremap
and others. Some performance
improvements can also be made, finer grained locking and others.
I cooperated on this project with (in alphabetical order):
John Baldwin <[email protected]>
Konstantin Belousov <[email protected]>
Emmanuel Dreyfus
Scot Hetzel
Jung-uk Kim <[email protected]>
Alexander Leidinger <[email protected]>
Suleiman Souhlal <[email protected]>
Li Xiao
David Xu <[email protected]>
I would like to thank all those people for their advice, code reviews and general support.
All FreeBSD documents are available for download at http://ftp.FreeBSD.org/pub/FreeBSD/doc/
Questions that are not answered by the
documentation may be
sent to <[email protected]>.
Send questions about this document to <[email protected]>.