1 pontos por GN⁺ 2024-01-01 | 1 comentários | Compartilhar no WhatsApp

Como fazer um fork personalizado do SteamOS

  • O SteamOS 3 ("Holo") é uma distribuição Linux baseada em Arch criada para o Steam Deck, o dispositivo portátil de jogos para PC da Valve Software.
  • O SteamOS realiza atualizações atômicas baixando um novo sistema de arquivos raiz somente leitura para uma partição inativa.
  • O usuário pode executar steamos-devmode para desbloquear o sistema de arquivos raiz e limpar o banco de dados do pacman, obtendo uma distribuição Linux funcional com um gerenciador de pacotes comum.

Estrutura do sistema SteamOS

  • O sistema SteamOS é composto por 8 partições, e a partição de sistema EFI armazena o bootloader de estágio 1 e os arquivos de metadados.
  • Dois conjuntos de partições A/B incluem o bootloader de estágio 2 (GRUB), o sistema de arquivos raiz e a partição /var.
  • Há uma única partição home que ocupa o restante do espaço em disco.

Como aplicar patches no kernel

  • A Valve usa um kernel Linux fortemente modificado no SteamOS.
  • O código-fonte do kernel pode ser encontrado no mirror pacman da Valve, e o código-fonte do kernel da imagem estável atual pode ser baixado online.
  • O tarball do código-fonte tem 2.9 GiB, porque inclui toda a árvore Git do Linux.

Reempacotamento do sistema de arquivos raiz

  • É possível modificar o sistema de arquivos raiz para "reempacotá-lo" de acordo com as necessidades do usuário.
  • A imagem do sistema de arquivos raiz pode ser obtida comprando um Steam Deck ou baixando a imagem de recuperação do SteamOS.
  • A imagem pode ser baixada usando o casync para obter os fragmentos necessários do repositório .castr e gravá-los na partição inativa do sistema de arquivos raiz.

Criação de bundle RAUC

  • Depois de criar o repositório casync e o índice de blobs, é possível criar um bundle RAUC.
  • O RAUC estabelece confiança usando certificados X.509, e é preciso instalar um novo certificado no sistema de arquivos raiz.
  • O bundle RAUC deve incluir os arquivos rootfs.img.raucb e rootfs.img.caibx, que precisam ser enviados para um servidor web.

Configuração do servidor de atualização

  • O servidor de atualização deve fornecer um arquivo JSON, que precisa corresponder ao manifest.json da imagem.
  • Usando a configuração do Caddy, é possível redirecionar para live.json as requisições que o steamos-atomupd faz para QueryUrl e MetaUrl.

Opinião do GN⁺

  • Importância de um sistema operacional personalizado: este texto mostra como o usuário pode personalizar o sistema operacional de acordo com suas necessidades. Isso é importante para oferecer soluções sob medida a desenvolvedores de software.
  • Valor como material de aprendizado: por meio desse processo, engenheiros de software iniciantes podem aprender como distribuições Linux funcionam e como podem ser personalizadas.
  • Contribuição para a comunidade: compartilhar esse tipo de conhecimento contribui para a comunidade de código aberto e pode ajudar outros usuários a iniciarem projetos semelhantes.

1 comentários

 
GN⁺ 2024-01-01
Comentários do Hacker News
  • Entusiasmo por uma exploração profunda de personalizar software/SO do jeito que o usuário quiser

    • Ainda bem que o Steam Deck não traz preocupações com Tivoization (a prática de fabricantes de hardware restringirem a execução a apenas determinados softwares)
    • A parte mais interessante do artigo foi a menção de que o Steam Deck oferece suporte a nixpkgs (não vem instalado por padrão, mas pode ser instalado no dispositivo sem precisar fazer um fork do sistema operacional inteiro)
  • Avaliação minuciosa e interessante da postagem

    • Pessoalmente, eu não faria esse tipo de coisa
    • O maior contato que tive com Linux foi na era do RaspberryPi, e mesmo assim só 1%
    • Parabéns ao autor
  • Expressão de nostalgia pelo favicon de chuva de meteoros do Netscape

  • Pedido de uma GPU para um servidor NAS com unRaid, com a intenção de implementar Steam Headless por meio de uma imagem Docker

    • Plano de usar o cliente Moonlight em um laptop Windows
    • Como o NAS fica ocioso na maior parte do tempo, parece melhor do que comprar hardware novo para desktop
    • É necessário manter as configurações de energia da placa Nvidia em estado ocioso (provavelmente dá para fazer isso chamando nvidia-persistenced)
  • Já existem distribuições baseadas em SteamOS

    • ChimeraOS é adequada para uso em PC e com controle, e funciona perfeitamente, incluindo complementos do Steam Deck
  • Opinião sobre upgrades A/B

    • Usar uma distribuição live ou instalar um sistema de recuperação de uma versão antiga em uma partição pode ser mais simples
    • O autor compartilha sua experiência recente de migração para Arch Linux e diz confiar mais no Arch do que na Valve
    • A qualidade dos pacotes do Arch, as atualizações rápidas do repositório principal e os pacotes úteis do AUR foram os motivos para sair do NixOS
  • Relato do uso de um handheld para games (Legion Go) para ganhar mais experiência com Linux

    • Evitava Linux por parecer ter compatibilidade limitada e exigir ajustes constantes
    • Curiosidade sobre sistemas de arquivos imutáveis e sobre como o Linux tradicional concede permissões de root ao software com facilidade
    • Relato de experiência com NixOS: é possível testar facilmente vários componentes e removê-los completamente se não agradarem
    • A comunidade Jovian reconstruiu o tarball do SteamOS da Valve em commits etiquetados no GitHub, permitindo explorar o código-fonte como se fosse um funcionário da Valve
    • Pelo Jovian, é possível instalar sua própria cópia do SteamOS sobre o NixOS
  • Relato de testes alfa do suporte a 120hz VRR e HDR no hardware AMD do bazzite.gg

  • Descoberta interessante de que o SteamOS é baseado em Arch Linux

  • Recomendação do HoloISO para quem tem interesse em rodar SteamOS em um PC Linux