Em abril de 2007, a camada de emulação do Linux® é capaz de emular o kernel Linux® 2.6.16 muito bem. Os problemas remanescentes dizem respeito a futexes, inacabado na família de syscalls *at, entrega de sinais problemáticos, falta de epoll
e inotify
e provavelmente alguns bugs que ainda não descobrimos. Apesar disso, somos capazes de executar basicamente todos os programas Linux® incluídos na coleção de ports do FreeBSD com o Fedora Core 4 em 2.6.16 e há alguns relatos rudimentares de sucesso com o Fedora Core 6 em 2.6.16. O linux_base do Fedora Core 6 foi recentemente comprometido permitindo alguns testes adicionais da camada de emulação e nos dando mais algumas dicas onde devemos nos esforçar para implementar o material que está faltando.
Nós podemos rodar os aplicativos mais usados como o www/linux-firefox, net-im/skype e alguns jogos da coleção dos ports. Alguns dos programas exibem mau comportamento na emulação 2.6, mas isso está atualmente sob investigação e, espera-se, será corrigido em breve. A única grande aplicação que se sabe que não funciona é o Java™ Development Kit do Linux® e isto é devido ao requisito de epoll
habilidade que não está diretamente relacionada ao kernel do Linux® 2.6.
Esperamos habilitar a emulação 2.6.16 por padrão algum tempo depois que o FreeBSD 7.0 for lançado pelo menos para expor as partes da emulação 2.6 para alguns testes mais amplos. Feito isso, podemos mudar para o Fedora Core 6 linux_base, que é o plano final.
O trabalho futuro deve focar na correção dos problemas remanescentes com futexes, implementar o restante da família de syscalls, corrigir a entrega de sinal e possivelmente implementar os recursos de epoll
e inotify
.
Esperamos poder executar os programas mais importantes com perfeição em breve, por isso poderemos alternar para a emulação 2.6 por padrão e fazer do Fedora Core 6 o linux_base padrão porque o nosso atualmente usado Fedora Core 4 não é mais suportado.
O outro objetivo possível é compartilhar nosso código com o NetBSD e o DragonflyBSD. O NetBSD tem algum suporte para emulação 2.6, mas está longe de ser concluído e não foi realmente testado. O DragonflyBSD manifestou algum interesse em portar as melhorias do 2.6.
Geralmente, como o Linux® se desenvolve, gostaríamos de acompanhar seu desenvolvimento, implementando a syscalls recém-adicionado. Splice vem em mente primeiro. Algumas syscalls já implementadas também são altamente danificadas, por exemplo mremap
e outras. Alguns aprimoramentos de desempenho também podem ser feitos, um lock mais refinado e outros.
Eu colaborei neste projeto com (em ordem alfabética):
John Baldwin <jhb@FreeBSD.org>
Konstantin Belousov <kib@FreeBSD.org>
Emmanuel Dreyfus
Scot Hetzel
Jung-uk Kim <jkim@FreeBSD.org>
Alexander Leidinger <netchild@FreeBSD.org>
Suleiman Souhlal <ssouhlal@FreeBSD.org>
Li Xiao
David Xu <davidxu@FreeBSD.org>
Gostaria de agradecer a todas as pessoas por seus conselhos, revisões de código e apoio geral.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.