O projeto Kerla está desenvolvendo um kernel compatível com Linux na linguagem Rust

O projeto Kerla está desenvolvendo um kernel de sistema operacional escrito na linguagem Rust. O novo kernel está inicialmente focado em fornecer compatibilidade com o kernel Linux no nível ABI, o que permitirá que arquivos executáveis ​​não modificados compilados para Linux sejam executados em um ambiente baseado em Kerla. O código é distribuído sob as licenças Apache 2.0 e MIT. O projeto está sendo desenvolvido pelo desenvolvedor japonês Seiya Nuta, conhecido por criar o sistema operacional microkernel Resea, escrito na linguagem C.

Em seu estágio atual de desenvolvimento, Kerla só pode ser executado em sistemas x86_64 e implementa chamadas básicas de sistema, como write, stat, mmap, pipe e poll, suporta sinais, pipes não nomeados e trocas de contexto. Chamadas como fork, wait4 e execve são fornecidas para controlar processos. Há suporte para tty e pseudoterminais (pty). Os sistemas de arquivos atualmente suportados são initramfs (usado para montar o sistema de arquivos raiz), tmpfs e devfs. É fornecida uma pilha de rede com suporte para soquetes TCP e UDP, implementada com base na biblioteca smoltcp.

O desenvolvedor preparou um ambiente de boot que roda no QEMU ou na máquina virtual Firecracker com o driver virtio-net, ao qual você já pode se conectar via SSH. musl é usado como biblioteca do sistema e BusyBox é usado como utilitários de usuário.

O projeto Kerla está desenvolvendo um kernel compatível com Linux na linguagem Rust

Foi preparado um sistema de compilação baseado em Docker que permite criar seu próprio initramfs de inicialização com o kernel Kerla. Separadamente, o shell de software nsh semelhante ao fish e a pilha GUI Kazari baseada no protocolo Wayland estão sendo desenvolvidos.

O projeto Kerla está desenvolvendo um kernel compatível com Linux na linguagem Rust

O uso da linguagem Rust em um projeto permite reduzir o número de erros no código usando técnicas de programação seguras e aumentando a eficiência na identificação de problemas ao trabalhar com memória. Rust reforça a segurança da memória em tempo de compilação por meio de verificação de referência, propriedade de objetos e rastreamento de vida útil do objeto (escopos) e avaliando a correção dos acessos à memória em tempo de execução. Rust também fornece proteção contra estouros de inteiros, requer que valores de variáveis ​​sejam inicializados antes do uso, reforça o conceito de referências e variáveis ​​imutáveis ​​por padrão, oferece tipagem estática forte para minimizar erros lógicos e simplifica o tratamento de valores de entrada com padrão combinando. .

Para o desenvolvimento de componentes de baixo nível, como o kernel do sistema operacional, Rust fornece suporte para ponteiros brutos, empacotamento de estrutura, inserções embutidas em assembler e incorporação de arquivos assembler. Para trabalhar sem estar vinculado à biblioteca padrão, existem pacotes de caixas separados para realizar operações com strings, vetores e sinalizadores de bits. Outra vantagem são as ferramentas integradas para avaliar a qualidade do código (linter, analisador de ferrugem) e criar testes unitários que podem ser executados não apenas em hardware real, mas também no QEMU.

Fonte: opennet.ru

Adicionar um comentário