Análise detalhada de elementos internos

Esse é um processo avançado que não recomendamos para novos usuários do Linux.

O ChromeOS permite executar código arbitrário em VMs. Esta é a documentação de baixo nível sobre esse suporte. Para uma visão mais fácil de usar, consulte as faq.

Pré-requisitos

Recursos do ambiente de execução

Ao executar o contêiner do Linux, você pode esperar que os seguintes recursos funcionem:

  • Conexões de rede de saída (IPv4).
  • Gráficos não acelerados.
  • Gráficos acelerados (via OpenGL).
  • Programas Wayland (preferencialmente via Sommelier).
  • Programas X (compatibilidade via Sommelier e XWayland).
  • Saída de áudio no M74+ e captura/microfone experimental em imagens R79+.

Recursos em falta

Estamos trabalhando em muitas oportunidades fáceis de aproveitar. Alguns exemplos claros são:

  • Decodificação de hardware de vídeo.
  • IMEs.

Embora haja mais coisas sendo consideradas, a equipe do ChromeOS adota uma abordagem ponderada para lançar novos recursos e garantir que a segurança geral do sistema não seja comprometida. Consulte as perguntas frequentes sobre o Crostini para mais informações sobre a maioria dos tópicos relacionados ao desenvolvimento do Linux no ChromeOS.

Segurança

Embora a execução de código arbitrário seja normalmente um risco de segurança, a equipe do ChromeOS acredita que o modelo de tempo de execução usado pelo contêiner do Linux no ChromeOS mitiga e contém esse risco de segurança. A máquina virtual (VM) é o limite de segurança, e tudo dentro dela é considerado não confiável. A imagem convidada da VM atual também está executando um kernel personalizado para melhorar ainda mais a segurança dos contêineres, mas isso é considerado um recurso interessante, em vez de ser usado para garantir a segurança geral do sistema.

Nesse modelo, o restante do sistema ChromeOS permanece protegido contra códigos arbitrários (maliciosos ou acidentais) executados nos contêineres dentro da VM.

O único contato com o mundo externo é via crosvm, e cada canal se comunica com processos individuais (cada um deles em sandbox).

Dados do usuário no contêiner

Com a mudança para serviços de nuvem, o pensamento atual sobre segurança destaca o fato de que obter credenciais de conta (por exemplo, suas senhas do Google/Facebook) é um vetor de ataque mais lucrativo do que atacar seu computador desktop ou laptop. Elas não estão erradas. A solução atual de VM/contêiner do ChromeOS não melhora isso. Em outras palavras, qualquer coisa inserida no contêiner é de responsabilidade do usuário no momento. Assim, se você executar um contêiner não seguro ou comprometido e digitar suas senhas nele, elas poderão ser roubadas mesmo que o restante do sistema ChromeOS permaneça seguro.

Persistência de processos

Os processos em VMs e contêineres não sobrevivem ao encerramento da sessão (já que ficam no armazenamento criptografado do usuário) e são encerrados automaticamente. Eles também não são iniciados automaticamente no login (para evitar ataques persistentes) nem podem ser executados automaticamente na inicialização (sem uma sessão de login), já que não seriam acessíveis (porque estão no armazenamento criptografado do usuário).

Código executável e gravável

A imagem do disco da VM Termina é baixada para a partição com estado gravável, assim como outros componentes do Chrome. Para garantir que o conteúdo não seja modificado, o dm-verity é usado. Isso também significa que apenas imagens assinadas pelo Google podem ser carregadas, e a imagem é sempre somente leitura.

Ataques de hardware

As vulnerabilidades Meltdown/Spectre têm implicações para o uso seguro de VMs. Aplicamos correções e mitigações para garantir que as VMs não ataquem o sistema host ou outras VMs. Consulte a página wiki do Chromium OS sobre o status da vulnerabilidade do Meltdown e do Spectre para dispositivos ChromeOS para mais detalhes.

Ciclos de vida

Depois de ativar o contêiner do Linux (que instala todos os outros componentes necessários, como o Termina), o sistema está pronto para uso.

Embora esses componentes possam ser instalados, nada começa a ser executado imediatamente. Quando você faz logout, tudo é desligado e encerrado. Ao fazer login, nada é reiniciado automaticamente.

Quando você executa o app Terminal ou qualquer outro app Linux que inicia o contêiner e o contêiner principal ainda não está em execução, a VM do Terminal é iniciada automaticamente, e o contêiner padrão do Linux no ChromeOS (também conhecido como Crostini) é iniciado nela. Isso permite que você se conecte ao contêiner por SSH ou SFTP (pelo app Arquivos).

Quando você fecha todos os aplicativos visíveis, a VM/os contêineres não são desligados. Se quiser, você pode parar e iniciar manualmente, além de gerar mais contêineres do que apenas o padrão.

Persistência de dados

Todas as VMs e contêineres criados, e os dados dentro desses contêineres, vão persistir entre as sessões do usuário (logout/login). Eles são mantidos no mesmo armazenamento criptografado por usuário que o restante dos dados do navegador.

Se uma VM ou um contêiner for parado ou encerrado de maneira inadequada (por exemplo, perda de energia), os dados poderão ser perdidos e precisarão ser recuperados como qualquer outra coisa no sistema.

Suporte do dispositivo

Embora o objetivo seja que o Linux no ChromeOS funcione com todos os Chromebooks, os recursos necessários de kernel e hardware limitam onde ele pode ser implantado. A equipe se concentrou na segurança e na estabilidade do sistema ao fazer o backport de recursos quando fazia sentido. Essa é uma área de esforço contínuo.

Agora disponível

Para conferir uma lista de dispositivos compatíveis, consulte Sistemas Chrome OS compatíveis com Linux.

Requisitos de hardware

Embora não haja uma quantidade mínima de RAM, armazenamento ou velocidade da CPU necessária para executar o contêiner do Linux no ChromeOS, quanto mais você tiver de cada um, melhor será o desempenho do sistema.

No entanto, você precisa de uma CPU que ofereça suporte à virtualização de hardware. Em plataformas x86, isso tem muitos nomes. A Intel se refere a ele como VT-x e VMX. A AMD se refere a ela como AMD-V e SVM.

Sistemas BayTrail

Os Chromebooks que usam o BayTrail da Intel não incluem VT-x. Embora essa CPU normalmente inclua VMX, a variante em Chromebooks não inclui e, portanto, nunca será compatível.

Para saber se uma placa é compatível, pesquise BayTrail na coluna Platform da nossa lista de dispositivos pública.

Kernels antigos

Não há planos para oferecer suporte ao Linux 3.14 ou versões anteriores. Isso exige backports de novos recursos extensos e muitas vezes invasivos. Exemplo:

Para saber se uma placa é compatível, pesquise na nossa lista de dispositivos pública números de versão inferiores a 3.14 na coluna Kernel.

CPUs ARM de 32 bits

Fazer máquinas virtuais funcionarem em CPUs ARM de 32 bits é difícil, não é padrão e exige coordenação com o firmware. Infelizmente, o firmware do ChromeOS não costuma configurar as extensões. Por isso, esses sistemas não são compatíveis.

Para saber se uma placa é compatível, pesquise arm na coluna Kernel ABI da nossa lista de dispositivos pública.