Perguntas frequentes sobre o Linux

Onde posso conversar com desenvolvedores?

Todas as discussões sobre o desenvolvimento do Chromium OS acontecem na Comunidade de Ajuda do Chromebook. Você pode perguntar o que quiser, mas primeiro pesquise para ver se sua dúvida já foi abordada.

Onde posso enviar solicitações de recursos?

Como é um projeto novo, temos muito trabalho e planos de lançamento. Por isso, seria bom esperar um pouco e verificar novamente após alguns lançamentos do ChromeOS.

Enquanto isso, você pode conversar/perguntar na lista de e-mails acima.

Quando estivermos em um lugar mais estável, você poderá usar nosso rastreador de problemas. Consulte a próxima pergunta para mais detalhes.

Onde posso registrar bugs?

Primeiro, verifique se você está usando o canal de desenvolvimento mais recente. Ainda há muito trabalho em andamento.

Em seguida, verifique se o problema já é conhecido ou foi corrigido. Confira a lista de bugs existentes.

Se você ainda quiser enviar feedback, envie um relatório e inclua #crostini (outro nome para o Linux no ChromeOS) na descrição. Para enviar feedback sobre qualquer parte do ChromeOS, pressione alt+shift+i.

Se você ainda quiser enviar um bug aos desenvolvedores, use este link para encaminhar às pessoas certas.

Por que o nome Crostini?

É uma brincadeira com crouton, um projeto para criar facilmente ambientes Linux completos (incluindo ferramentas de desenvolvedor) para usuários que ativaram o modo de desenvolvedor. O Crostini (Linux no ChromeOS) tem como objetivo atender à maioria dos casos de uso cobertos pelo crouton e é um petisco maior e mais saboroso do que um crouton, daí o nome.

O crouton ajudou a definir muitos dos casos de uso que os desenvolvedores queriam com o ChromeOS, orientando o Linux no ChromeOS do ponto de vista dos requisitos. Queríamos garantir que a maioria dos usuários do crouton pudesse usar o Linux no ChromeOS para atender às necessidades em um ambiente seguro.

Assim, o crouton ajudou a inspirar a direção do Linux no ChromeOS, mas nenhum código foi compartilhado ou reutilizado entre os dois. Não é que o crouton seja ruim, mas ele é um modelo completamente diferente.

Quando meu dispositivo será compatível?

No momento, não estamos publicando nenhuma informação além deste documento. Se o dispositivo não estiver listado na seção Suporte a dispositivos da documentação oficial do Chromium OS, ainda não tomamos nenhuma decisão sobre ele que esteja pronta para o público.

Por isso, não peça roteiros de suporte a dispositivos, porque não temos.

Preciso ativar o modo de desenvolvedor?

Não é necessário ativar o modo de desenvolvedor (em que você vê a tela assustadora na inicialização sobre a verificação do SO estar desativada). Todos esses recursos foram projetados para serem executados com segurança enquanto o sistema está no modo normal/verificado.

Em alguns dispositivos, talvez seja necessário mudar para o canal de desenvolvimento, mas isso não tem relação alguma com o modo de desenvolvedor.

Estou executando o Linux no ChromeOS?

Se você estiver usando o app Terminal ou programas no contêiner padrão que fornecemos, incluindo nossos programas para facilitar a integração (por exemplo, Sommelier), a resposta é sim.

Se você estiver executando seu próprio contêiner ou VM, a resposta é não.

Por que executar VMs? Os contêineres não são seguros?

Embora os contêineres geralmente se isolem (via namespaces do Linux), eles não isolam o kernel ou recursos de sistema semelhantes. Isso significa que basta um único bug no kernel para explorar totalmente o sistema e roubar seus dados.

Isso não é bom o suficiente para o ChromeOS, por isso colocamos tudo em uma VM. Agora você precisa explorar o crosvm pelas interações limitadas com o convidado, e o próprio crosvm está em sandbox.

Para mais detalhes, consulte a seção Segurança da documentação oficial do Chromium OS.

Como faço para compartilhar arquivos entre o ChromeOS e o contêiner?

O armazenamento do contêiner padrão do Linux no ChromeOS pode ser acessado em "Arquivos do Linux" no app Arquivos do ChromeOS. Usando o Secure Shell, é possível configurar uma ativação de SFTP para os outros contêineres remotos e navegar pelo app Arquivos também.

Posso acessar arquivos quando o contêiner não está em execução?

No momento, o contêiner precisa estar em execução para acessar o conteúdo. O contêiner padrão do Linux no ChromeOS será iniciado automaticamente quando os "Arquivos do Linux" forem acessados no app Arquivos.

Posso instalar módulos personalizados do kernel?

No momento, não. O Termina não inclui suporte a módulos. Isso significa que não é possível usar softwares que exigem a criação ou o carregamento de módulos de kernel personalizados, como o VirtualBox. Confira também a próxima pergunta.

Posso executar uma VM dentro de outra VM?

A virtualização aninhada é compatível com alguns dispositivos ChromeOS para permitir o suporte do Android Emulator. Além disso, você pode executar o qemu-system para emular o hardware e inicializar o SO que quiser. Infelizmente, ele será bastante lento, já que o QEMU não poderá usar o KVM para aceleração de hardware.

Posso executar um contêiner do Docker ou outro contêiner dentro do contêiner do Linux do ChromeOS?

Sim. Talvez seja necessário instalar os pacotes relevantes primeiro para qualquer formato de contêiner que você queira executar.

Qual arquitetura funciona no meu sistema?

A arquitetura do contêiner Linux vai corresponder à arquitetura do dispositivo. Você pode descobrir o que é isso de duas maneiras diferentes:

  • Em uma nova guia, acesse chrome://settings/help/details e confira a plataforma. Em seguida, compare o nome da placa com nossa lista de dispositivos pública. Consulte o campo "ABI do usuário" para saber qual tipo de CPU você tem.
  • Abra o crosh e execute uname -m. Isso vai imprimir a arquitetura do seu dispositivo atual.

Se você vir x86_64, poderá executar o código compilado para Intel/AMD (32 bits/64 bits/x32 devem funcionar).

Se você encontrar arm (ou algo semelhante, como armv7l) ou aarch64, poderá executar o código compilado para ARM/ARM64.

Posso executar outras arquiteturas?

No momento, não há suporte integrado para executar, por exemplo, código ARM em um sistema Intel ou vice-versa. Você pode fazer isso por conta própria (por exemplo, usando qemu-user), mas se você conhece o qemu-user, já sabe disso.

Posso executar programas que continuam funcionando depois de sair?

Não. Todas as VMs (e os contêineres delas) estão vinculadas à sua sessão de login. Assim que você faz logout, todos os programas são encerrados/desativados por design.

Como todos os seus dados ficam na sua casa criptografada, não queremos que eles vazem quando você sair da conta.

Para mais detalhes, consulte a seção Segurança da documentação oficial do Chromium OS.

Posso executar programas automaticamente ao fazer login?

Não. Todas as VMs (e os contêineres delas) precisam ser reiniciadas manualmente. Isso ajuda a evitar exploits persistentes.

Para mais detalhes, consulte a seção Segurança da documentação oficial do Chromium OS.

Posso executar programas automaticamente na inicialização?

Não. Consulte as perguntas anteriores.

Posso definir variáveis de ambiente para meu contêiner?

Claro! Há algumas maneiras de fazer isso.

  • Com o environment.d, é possível definir variáveis de ambiente para sua sessão do systemd --user, incluindo o Terminal e todos os apps da GUI. Talvez seja necessário um contêiner mais recente, o Debian 10 "buster", para usar esse método.
  • Se você quiser apenas variáveis de ambiente no Terminal, defina-as no arquivo de configuração do shell, como ~/.bashrc ou ~/.zshrc.

As mudanças nas variáveis de ambiente só entram em vigor para programas iniciados recentemente. Talvez seja necessário reiniciar programas ou todo o contêiner para que as mudanças entrem em vigor.

Há suporte para multiprofilos?

Não, o Terminal só é compatível com o perfil principal (*). Nosso objetivo é oferecer uma experiência totalmente funcional e tranquila para o perfil principal, sem falhas ou problemas em perfis secundários. Não planejamos adicionar mais recursos aos perfis secundários.

Se você não conhece a compatibilidade com vários perfis, confira a documentação geral sobre vários perfis para mais detalhes.

(*): O aplicativo Terminal está desativado em todos os perfis secundários. As pessoas podem iniciar VMs manualmente usando o crosh e os contêineres, mas a interface e o app Arquivos provavelmente não vão funcionar de forma integrada automaticamente.

Há suporte para contas de crianças?

Não, o Terminal não está disponível para contas infantis. Não temos planos de disponibilizar esse recurso para essas contas.

Se você não conhece as contas infantis, confira a documentação geral sobre contas infantis para mais detalhes.

Minhas VMs/contêineres/dados são sincronizados/fazem backup?

Em última análise, você é responsável por todos os dados que entram nos contêineres. Para sincronizar dados com facilidade, como uma pasta de projeto entre máquinas, compartilhe uma pasta no Drive com o Linux. Tudo o que você adicionar a essa pasta será salvo em backup no Drive e sincronizado entre seus dispositivos.

Como posso fazer backup de uma VM?

A abordagem mais simples é usar a nova funcionalidade de backup integrada ao ChromeOS. Para fazer isso, acesse "Configurações" e selecione "Desenvolvedores" na navegação à esquerda. Em seguida, navegue até "Linux". Você vai encontrar "Backup e restauração". Se você acessar esse menu, vai encontrar um botão "Backup" que salva um arquivo .tini.

Se você quiser fazer backup de um contêiner individual, outra abordagem é usar os comandos padrão do LXC.

O comando vmc export pode ser usado para exportar uma VM inteira manualmente. Por padrão, ele vai despejar a imagem do disco qcow2 na pasta "Downloads". Ainda não é possível importar uma VM. Portanto, isso só é útil para diagnósticos ou para usar outro sistema para extrair arquivos.

Posso acessar os arquivos da VM/do contêiner diretamente (por exemplo, pelo app Arquivos)?

No momento, não é possível acessar os arquivos de imagem usados pela VM. Não há planos para mudar isso.

Se quiser fazer backup, será necessário fazer isso manualmente.

Por que a hora dentro da VM/contêiner está dessincronizada?

O relógio dentro da VM (e, por extensão, dos contêineres) é mantido automaticamente sincronizado com o relógio do ChromeOS. Assim, você não precisa executar serviços de controle de tempo por conta própria (por exemplo, ntp). Esse relógio é baseado no UTC.

A partir do R75, tentamos sincronizar dados de fuso horário no contêiner usando timedatectl. Se isso não funcionar, vamos exportar a variável de ambiente TZ.

No momento, não atualizamos os detalhes do fuso horário na própria VM. Também não tentamos atualizar outras configurações de fuso horário, já que elas não são padrão em todas as distribuições. Por isso, o horário pode parecer errado à primeira vista nesses ambientes ou desatualizado se a variável de ambiente TZ for usada.

Consulte https://crbug.com/829934 (link em inglês) para mais detalhes técnicos. É mais complicado do que você imagina!

Quais formatos de copiar e colar são compatíveis?

No momento, só há suporte para conteúdo text/plain. Planejamos adicionar mais formatos em breve, como image/png e text/rtf.

Confira a lista atual de compatibilidade em exo/data_source.cc.

Embora o X/Wayland seja compatível com um número arbitrário de formatos MIME, nosso objetivo final é oferecer suporte apenas a todos os formatos que o próprio Chrome oferece. Consulte a lista no arquivo clipboard_constants.cc.

Estamos falando apenas de restrições aos dados armazenados na área de transferência. Os apps Wayland ainda podem transferir dados diretamente entre si no formato arbitrário que quiserem.

Posso ler/gravar a área de transferência automaticamente de dentro da VM?

No momento, não.

Do ponto de vista da segurança, não queremos que um código não confiável extraia silenciosa ou automaticamente o que o usuário copiou. Talvez sua sessão do navegador esteja copiando dados pessoais ou senhas. É o mesmo problema que a plataforma da Web enfrenta.

Isso não é a mesma coisa que os usuários colarem dados manualmente (por exemplo, ctrl+v). Isso se refere apenas à leitura programática.

Mas não esperamos que isso continue assim para sempre. Depois que tivermos um modelo de permissão e uma interface para gerenciar essas coisas, poderemos permitir que os usuários concedam essa permissão.

Se você usa ferramentas xclip ou X, elas geralmente têm um buffer local (em XWayland), mas ele não é sincronizado automaticamente com o restante do sistema.

Preciso gerenciar atualizações de VM?

Não. A VM Termina é um componente atualizado automaticamente.

A VM é separada do contêiner.

Como faço para verificar a versão do Termina?

Como o Termina é um componente baixado, acesse chrome://components em uma nova guia e procure cros-termina.

Também é possível se conectar a uma VM via vsh e executar cat /etc/lsb-release.

Preciso gerenciar atualizações de contêineres?

Os pacotes fornecidos pelo Google no contêiner que se comunicam com o ChromeOS ou são necessários para a integração com o ChromeOS serão atualizados automaticamente de forma regular. Isso vai instalar automaticamente todas as dependências necessárias.

Não há upgrade automático de outros pacotes instalados no contêiner. Preferimos evitar a atualização de pacotes que possam prejudicar programas já instalados. O contêiner é como qualquer outra distribuição Linux. Portanto, é necessário atualizá-lo de tempos em tempos se você quiser um software mais recente.

Execute sudo apt-get update && sudo apt-get dist-upgrade.

Posso usar o IPv6?

Sim, a partir do R81. As redes de pilha dupla e somente IPv6 são compatíveis.

O ChromeOS só é compatível com SLAAC. Leia mais na página de suporte para compatibilidade com IPv6 no ChromeOS.

Posso acessar a rede da camada 2?

No momento, não. O acesso à rede é apenas na camada 3 (ou seja, IP). Assim, não será possível fazer pontes ou outras coisas divertidas de nível inferior.

Não está claro se/quando isso vai mudar. A conexão com o mundo externo é difícil com o Wi-Fi, e poucos dispositivos têm conexões Ethernet. Podemos oferecer suporte à camada 2 entre contêineres, mas não está claro quantas pessoas querem isso para justificar o esforço envolvido.

As VPNs configuradas pelo CrOS/Android (fora da VM/contêineres) funcionam?

No momento, não. Marque https://crbug.com/834585 com uma estrela para receber atualizações.

A saída de áudio é compatível?

Sim, a partir do R74 (versão 11707.0.0+ do Termina).

Se você configurou o contêiner antes da implantação do suporte a áudio, ele pode não estar configurado corretamente, já que o padrão anterior era gerar saída para o dispositivo nulo. Siga estas etapas para fazer a recuperação:

# Make sure the new cros-pulse-config package is installed.
$ sudo apt-get update
$ sudo apt-get dist-upgrade

# Clear out existing pulse settings.
$ rm -rf ~/.config/pulse

# Turn it off & on again via crosh ([Ctrl]+[[Alt]]+[[T]]).
crosh> vmc stop termina

A captura de áudio (por exemplo, microfone) é compatível?

Agora, isso é compatível com a versão M84 do ChromeOS. Para ativar a captura de áudio, acesse "Configurações" e selecione "Desenvolvedores" na navegação à esquerda. Em seguida, navegue até "Linux". Você vai encontrar a opção "Permitir que o Linux acesse o microfone" nesse menu.

Posso acessar hardware (por exemplo, USB/Bluetooth/serial)?

Agora, o ChromeOS permite compartilhar determinados dispositivos por USB. Para ativar o acesso USB, acesse "Configurações" e selecione "Desenvolvedores" na navegação à esquerda. Em seguida, navegue até "Linux" e depois "Preferências de USB". Aqui, você pode ativar o acesso USB caso a caso.

Essa é uma área de desenvolvimento ativo para a equipe, e mais dispositivos serão compatíveis com o tempo.

Posso executar programas Wayland?

Sim, e na verdade, eles são preferidos! O próprio Chrome lida muito com clientes Wayland. Por isso, é muito mais provável que tudo funcione se você fizer upgrade.

O Sommelier oferece esse suporte de maneira integrada.

Posso executar X programas?

Sim, mas você pode ter alguns problemas de compatibilidade, e provavelmente nunca será tão perfeito quanto executar um servidor X tradicional. No entanto, com a comunidade em geral migrando para o Wayland, ele deve ser suficiente.

O Sommelier cuida do lançamento do XWayland, atuando como o WM e traduzindo solicitações X e Wayland entre o Chrome e os programas X.

Por que as janelas às vezes são pequenas/embaçadas?

Os apps do Linux visíveis na barra do iniciador precisam ter uma opção para usar densidade alta ou baixa. Se a resolução não estiver funcionando como esperado, clique com o botão direito do mouse no ícone para alternar entre alta e baixa densidade.

Embora o Chrome seja compatível com telas de DPI alto, muitos aplicativos Linux não são. Quando um programa não oferece suporte adequado ao escalonamento de DPI, os resultados são ruins.

No momento, expomos a resolução integrada e o DPI diretamente aos aplicativos. Se eles aparecerem pequenos ou desfocados, é porque não oferecem suporte ao dimensionamento corretamente. Informe esses problemas aos respectivos projetos upstream para que, um dia, eles "simplesmente funcionem".

Enquanto isso, o Sommelier expõe algumas configurações de tempo de execução para que você possa definir o fator de escala por programa e evitar o comportamento inadequado. Confira a documentação do Sommelier para mais detalhes.

Se você estiver aplicando um zoom em todo o sistema ou mudando a resolução de tela padrão, tentaremos dimensionar a saída do aplicativo para corresponder. Isso pode gerar resultados borrados. Você pode ajustar a resolução da tela ou fazer ajustes usando o Sommelier (confira mais detalhes acima). Os apps do Linux visíveis na barra do iniciador precisam ter uma opção para usar densidade alta ou baixa. Se a resolução não estiver funcionando como esperado, clique com o botão direito do mouse no ícone para alternar entre alta e baixa densidade.

A sinergia vai funcionar?

O Synergy não vai funcionar (como cliente ou servidor). Isso exige a captura e a falsificação de entradas (por exemplo, mouse/teclado) para todas as janelas. Como somos criados com base no Wayland, por design, um cliente não pode acessar nenhum outro cliente no sistema. Esse é um limite de segurança forte entre os clientes, já que não queremos que um código arbitrário em execução dentro de um contêiner possa sair e atacar outros clientes (como o navegador) e enviar pressionamentos de tecla arbitrários.

Não há planos de ativar esse tipo de controle no contêiner. Isso não quer dizer que uma solução semelhante ao Synergy nunca vai acontecer no ChromeOS (por exemplo, algo como o CRD), apenas que a solução não será o Synergy nem qualquer outra ferramenta em um contêiner.

É possível executar a sinergia e provavelmente fazer com que ela transmita eventos de entrada para a única janela em que está sendo executada, mas isso é o máximo que você vai conseguir.

Posso executar programas do Windows?

Claro, teste o WINE. No entanto, a compatibilidade depende muito do WINE. Por isso, não peça suporte a nós.

Posso executar programas do macOS?

Provavelmente não. Você pode testar várias soluções do Linux, mas é provável que elas sejam ainda mais rudimentares.

Por que implementar o crosvm do zero (em vez de usar QEMU/kvmtool/etc…)?

Não temos nada contra nenhum desses outros projetos. Na verdade, todos são muito bons e influenciaram nossos designs. O mais importante é que eles fizeram mais do que precisávamos e não tinham um modelo de segurança tão bom quanto o que conseguimos ao escrever o nosso. Embora o crosvm não possa fazer tudo o que esses outros projetos fazem, ele faz apenas o que precisamos.

Para mais detalhes, confira o projeto crosvm.

As VMs não deixam tudo mais lento?

É verdade que as VMs adicionam sobrecarga quando comparadas à execução apenas em um contêiner ou diretamente no sistema. No entanto, nos nossos testes, a sobrecarga é insignificante para a experiência do usuário e vale a pena pelos ganhos significativos na segurança do sistema.

Para mais detalhes, consulte a seção Segurança da documentação oficial do Chromium OS.

Por que executar contêineres dentro da VM? Por que não executar programas diretamente na VM?

Para manter os tempos de inicialização da VM baixos, precisamos que o Termina seja o mais simples possível. Isso significa cortar programas/arquivos que não precisamos ou que não são relevantes.

Usamos o dm-verity, que exige que a imagem do Termina seja somente leitura para segurança. Isso também significa que podemos compartilhá-la com segurança entre instâncias de VM.

Além disso, as versões de programas/bibliotecas que enviamos são frequentemente mais recentes do que outras distribuições (já que criamos com base no Gentoo) e são compiladas com flags de segurança extras.

Permitir modificações do usuário na VM impede uma imagem sem estado que sempre funciona e é imune a erros do usuário e bugs em programas.

No geral, é difícil oferecer suporte à execução de programas arbitrários, o que resultaria em um sistema sem muitas das propriedades desejadas descritas acima. Forçar tudo em um contêiner produz uma solução mais robusta e permite que os usuários testem livremente sem preocupações.

Além disso, adoramos tartarugas.

O Foreshadow (também conhecido como L1TF / CVE-2018-3646) é processado?

Sim. Para mais detalhes, consulte nossa documentação pública.

Posso excluir contêineres que não quero mais?

Claro, pode excluir o que quiser. No entanto, não há comandos ou interface para ajudar com isso.

Posso excluir VMs que não quero mais?

Claro, pode excluir o que quiser. O comando vmc destroy pode ser usado para excluir manualmente.

Posso desativar esses recursos?

Os administradores podem controlar o acesso a contêineres/VMs pelo console de gerenciamento. Assim, as organizações empresariais/de ensino que quiserem limitar esse acesso podem fazer isso.

Inicialmente, há uma opção "Linux" nas configurações padrão do ChromeOS, mas o plano de longo prazo é remover esse botão para que as coisas funcionem sob demanda. Nesse momento, não haverá um botão para dispositivos não gerenciados.

Posso inicializar outro SO, como Windows, macOS, Linux, *BSD etc.?

No momento, não. Só é possível inicializar nossa VM personalizada do Linux chamada Termina. Confira também as próximas perguntas.

Posso executar minha própria VM/kernel?

No momento, não. Só é possível inicializar o Termina, que usa nosso kernel e configurações personalizados do Linux. Não perca!

Posso executar uma distribuição Linux diferente?

Claro! A linha de comando completa do LXD está disponível, e o repositório de imagens incluído tem muitas outras distribuições para escolher. No entanto, não fazemos testes com nada além do contêiner padrão que enviamos. Portanto, as coisas podem não funcionar ao executar outra distribuição.

Estou usando (insira a distribuição aqui). Como faço para acessar {apps de GUI, ícones do iniciador etc.}?

Os binários Sommelier e Garcon são vinculados a todos os contêineres, então não é necessário instalar ou fazer cross-compilação. As unidades systemd e os arquivos de configuração de cros-container-guest-tools vão iniciar esses daemons em uma sessão de usuário do systemd. Também é recomendável executar loginctl enable-linger <user> para permitir que eles continuem sendo executados em segundo plano.

Quantas VMs posso executar?

Você pode gerar quantos o sistema conseguir processar (em termos de RAM/CPU). Elas são independentes umas das outras.

Quantos contêineres posso executar?

Você pode gerar quantos o sistema conseguir processar (em termos de RAM/CPU). Cada instância de VM pode hospedar vários contêineres.

Quais formatos de contêiner são compatíveis?

No momento, o Termina só tem suporte direto para LXC. Conhecemos Kubernetes/Docker/OCI/rkt/etc. e esperamos facilitar o uso de todos eles.

Consulte a pergunta anterior para uma solução alternativa enquanto isso.