Apesar de haver poucas notícias sobre o Fuchsia OS, o projeto continua a se desenvolver e é muito ativo. Prova - Uma mensagem dos desenvolvedores sobre seus planos de implementar um mecanismo para executar programas não modificados que são construídos para Linux.
Este mecanismo é baseado em uma "camada" especial, que é chamada starnix. É ela quem fornece compatibilidade com o Linux ABI.
As interfaces do sistema do kernel Linux são implementadas em um manipulador que é executado como um processo para o sistema operacional Fuchsia. O processo funciona no espaço do usuário, traduzindo as solicitações de programas Linux em chamadas para os subsistemas do sistema operacional correspondentes. Durante o desenvolvimento deste projeto, muitos subsistemas terão que ser modificados para que todas as interfaces de sistema necessárias estejam disponíveis para os usuários.
A arquitetura da "camada", segundo os desenvolvedores, se assemelha fortemente a um subsistema semelhante para Windows, que é chamado de Subsistema Windows para Linux. Ele também é usado para traduzir chamadas de sistema Linux em chamadas de sistema Windows.
O código interlayer será escrito em Rust para mitigar os problemas de vulnerabilidade. Os desenvolvedores acreditam que esta linguagem de programação ajudará a minimizar o risco de vulnerabilidades que podem ser exploradas para elevar os privilégios de um processo Linux para o próprio processo starnix. Para isso, os mecanismos de proteção padrão Fuchsia também serão usados.
Exemplo: ao acessar o sistema de arquivos, pilha de rede ou subsistema gráfico, o starnix irá traduzir as solicitações, convertendo a ABI do Linux para a ABI do sistema Fuchsia. Isso, por sua vez, permitirá as mesmas restrições que são usadas para processos normais em fúcsia. Os mecanismos de autorização padrão do Linux também serão usados.
É importante notar que os desenvolvedores do sistema operacional desenvolveram a capacidade de executar aplicativos Linux no Fuchsia anteriormente. Mas eles usaram uma implementação semelhante à usada no Chrome OS. Em geral, você pode entendê-los, porque Fuchsia é uma espécie de projeto de estimação do Google. Anteriormente, para compatibilidade com o Linux, era proposto o uso da biblioteca Machina, que roda o software Linux em uma máquina virtual especial, que é formada por meio de um hipervisor baseado no kernel Zircon e nas especificações VirtIO.
Até onde você pode ver, a virtualização será usada em paralelo no Fuchsia, uma vez que não é tão fácil implementar a interface do sistema Linux. Muito provavelmente, a virtualização será usada em conjunto com a "camada". Nesse caso, o kernel do Linux será executado em uma máquina virtual separada, o que não é ruim, mas requer recursos. É por causa da intensidade dos recursos que a equipe da Microsoft que trabalhava no subsistema Windows para Linux abandonou o tradutor e usou o kernel Linux nativo no WSL 2.
A propósito, os desenvolvedores do Fuchsia não comem pão à toa - o sistema operacional já oferece o nível de compatibilidade POSIX Lite, que funciona em cima do Fuchsia System ABI. Tudo isso permite que você execute vários programas Linux, mas é necessário recompilar os aplicativos ou até mesmo modificar o código-fonte. Um dos problemas do POSIX Lite é a implementação incompleta de todos os recursos do POSIX.
O principal problema aqui é a falta de suporte para chamadas para alterar o estado global dos processos, incluindo kill. Conseqüentemente, se houver uma discrepância com os conceitos de segurança em Fuchsia, a alteração do estado global é proibida. No entanto, usar a versão lite do POSIX compensa ao portar aplicativos de código aberto. É verdade que há um problema com a execução de programas que não têm acesso ao código.
Quanto ao Fuchsia, é um sistema operacional universal: ainda não se sabe onde exatamente será usado. No entanto, é compatível com quase qualquer tipo de dispositivo, incluindo estações de trabalho, smartphones, dispositivos IoT e eletrônicos de consumo. O desenvolvimento é realizado levando em consideração a experiência de criação de uma plataforma Android e deficiências no campo de escalonamento e segurança.
A base do novo sistema operacional é o microkernel Zircon, que, por sua vez, é baseado nos desenvolvimentos do projeto LK.
O projeto está relativamente ativo há vários anos, com sugestões publicadas na rede de que o Google o está desenvolvendo como alternativa ao Android. Todo esse tempo, o sistema operacional continuou a evoluir. Por exemplo, em 2017, foi relatado que o sistema operacional recebeu uma nova interface de usuário, recursos de linha de comando e vários outros recursos. Em 2018, o Google lançou uma nova versão de seu sistema operacional, que já poderia ser testada.
Fuchsia tem sua própria GUI que é escrita em Dart usando a estrutura de flutter.
Além disso, o projeto desenvolve:
- framework para construção de interfaces de usuário Peridot;
- Gerenciador de pacotes Fargo;
- biblioteca padrão libc;
- sistema de renderização Escher;
- Vulkan driver Magma;
- Gerenciador de composição cênica;
- sistemas de arquivos MinFS, MemFS, ThinFS (FAT na linguagem Go) e Blobfs
- Gerenciador de partição FVM.
Para o desenvolvimento de aplicativos, suporte para C / C ++, Dart é fornecido, Rust também é permitido em componentes do sistema, Go é permitido na pilha de rede e Python é usado no sistema de montagem de linguagem.
O gerenciador de sistema é usado para carregar, que funciona com appmgr para criar o ambiente de software inicial. Sysmgr e basemgr são usados para formar o ambiente de inicialização e o ambiente do usuário, respectivamente.
Para proteger o sistema, é utilizada uma "sandbox", que não dá acesso a novos processos aos objetos do kernel, além disso, nenhuma memória é alocada para eles e nenhum código é executado. O acesso aos recursos é feito por um sistema de namespace que define as permissões disponíveis. O sandbox usa uma estrutura que permite a criação de componentes especializados que podem interagir com outros componentes por meio do IPC.