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

Breve revisão sobre UEFI

  • A UEFI carrega o bootloader do sistema operacional por meio do firmware armazenado na ROM da placa-mãe.
  • Um novo padrão chamado UEFI foi introduzido para superar as limitações do BIOS.
  • A UEFI executa o bootloader em um ambiente de 64 bits e fornece várias APIs.

Boot pela rede

  • Alguns bootloaders podem carregar o sistema operacional pela rede em vez de usar um dispositivo local.
  • O firmware UEFI inclui uma pilha de rede, permitindo executar aplicações em um ambiente de pré-boot.

Networking em Rust na UEFI

  • Implementar o protocolo TCP da UEFI em Rust foi a parte mais desafiadora do projeto.
  • Usar o protocolo TCP da UEFI é complexo e envolve estado global, callbacks e buffers scatter-gather.
  • O código Rust foi testado com cuidado para evitar vazamentos de memória ou UAF (Use-After-Free) no buffer de recepção TCP.

Suporte a cursor

  • O mouse não é essencial para um cliente de IRC, mas melhora a experiência do usuário.
  • O Simple Pointer Protocol da UEFI é usado para ler o movimento do mouse e a entrada dos botões.

Modelagem de mensagens IRC

  • Modelar mensagens IRC foi uma tarefa simples e divertida.
  • O IRC usa um formato de linha baseado em texto e inclui apenas algumas partes padronizadas.

Usando libgui na UEFI

  • Executar um toolkit de GUI na UEFI foi relativamente tranquilo, já que muito trabalho já havia sido feito para permitir o uso do toolkit de GUI em Rust do axle em outros contextos.
  • Depois de fornecer uma implementação UEFI de AwmWindow, é possível usar a maior parte das funcionalidades do libgui, como gerenciamento de eventos, renderização de fontes e composição de camadas.

Barra de rolagem

  • Como a visualização rolável exibe principalmente texto, a funcionalidade de barra de rolagem foi reimplementada no libgui em Rust.

Renderização de texto em uma visualização rolável

  • Foram necessárias algumas mudanças na forma de renderizar texto em uma visualização rolável.
  • A visualização rolável usa uma tela expansível baseada em "tiles" para gerenciar os dados de pixel.

Melhorias no libgui

  • Sempre que uma nova aplicação gráfica é implementada, surge uma oportunidade de melhorar o sistema e a API.
  • Durante o desenvolvimento do UEFIRC, alguns ajustes e correções foram adicionados ao libgui.

Completamente desnecessário

  • O UEFIRC em si não é tão útil para uso real, e este projeto é uma piada elaborada.
  • Se você tem reclamações sobre a pilha TCP/IP da UEFI, pode expressá-las com esta ferramenta.

Opinião do GN⁺

  • Este projeto desenvolve em Rust um cliente gráfico de IRC que funciona no ambiente UEFI, uma tentativa única que permite conversar e ler mensagens antes da inicialização do sistema.
  • A complexidade da UEFI e a implementação de rede aproveitando a segurança de memória da linguagem Rust podem servir como material de aprendizado importante na área de programação de sistemas.
  • É discutível se essa tecnologia é realmente útil na prática, mas é um caso interessante para explorar as possibilidades de desenvolvimento de aplicações no ambiente UEFI.
  • Ao combinar a complexidade do modelo de programação da UEFI com a segurança do Rust, este projeto pode ajudar a ampliar a compreensão sobre programação em nível de sistema.
  • O projeto foi disponibilizado como open source, oferecendo um bom material de referência e aproveitamento para desenvolvedores interessados.

1 comentários

 
GN⁺ 2024-04-07
Comentários do Hacker News
  • Experiência de um desenvolvedor que criou um cliente IRC gráfico executado no ambiente de pré-boot do UEFI

    O desenvolvedor se cansou de um projeto de receptor GPS e começou um projeto leve e divertido. Levou mais tempo do que o esperado, e ele dedicou muito tempo à modelagem da visualização de rolagem e à renderização em um viewport estático. O objetivo era implementar no UEFI um cliente IRC com cara de rede social, e como já existia um cliente de Twitter usando o protocolo HTTP do UEFI, ele escolheu IRC.

  • Apontamento sobre a percepção equivocada de que o sistema operacional é o nível mais baixo da pilha de software

    Na prática, existe código de firmware que realmente controla o sistema, e ele às vezes opera de forma transparente até para o SO. O fato de ser possível executar um cliente IRC no UEFI sugere que problemas mais sérios também podem acontecer.

  • Reação à pergunta sobre o propósito do projeto

    O desenvolvedor começou o projeto por diversão, e isso representa o espírito buscado pela comunidade do Hacker News. A criatividade e a diversão são valorizadas mais do que a utilidade prática do projeto.

  • Reação de um amigo do desenvolvedor ao projeto

    Ele explicou o projeto como uma piada, mas o amigo disse que não sabia em que momento deveria rir. O desenvolvedor recomenda não subestimar o valor potencial do projeto.

  • Admiração pela acessibilidade e pela documentação da API do UEFI

    O desenvolvedor expressa surpresa com o fato de a API do UEFI ser bem documentada e de fácil acesso. Também demonstra curiosidade sobre o uso de máquina virtual no desenvolvimento e se era preciso reinicializar a cada execução do cliente.

  • Opinião pessoal sobre aceleração do mouse

    A aceleração do mouse atrapalha o usuário a aprender as distâncias na tela. Entre gamers, é comum desativar esse recurso, e isso é mais eficiente no longo prazo.

  • Menção à promessa inicial do UEFI

    Quando o UEFI foi apresentado pela primeira vez, ele prometia possibilidades para aplicações de baixo nível, e havia o sonho de que pudesse substituir mini-SOs dedicados à internet baseados em Linux de alguns fabricantes.

  • Comparação com outros projetos de bootloader

    Menciona um projeto de 1º de abril do bootloader barebox e observa que, ao contrário do foco em adicionar suporte a TCP, o projeto do desenvolvedor inclui elementos de GUI.

  • Elogio à visualização do artigo

    Menciona que o trabalho de visualização incluído no artigo é impressionante.

  • Possibilidade de aplicações musicais em ambiente bare metal

    Explica as vantagens de aplicações musicais, como sintetizadores ou processadores de efeitos para guitarra, em um ambiente bare metal que inicia rapidamente e não tem componentes desnecessários. Para isso, também seria necessário suporte a placa de áudio.