E foi lançado o CBL-Mariner 2.0.20230805 com o DNF5, e muito mais. Confira as novidades e descubra como criar sua própria compilação dela.
CBL-Mariner não é uma distribuição de propósito geral como qualquer outra que teríamos em mente (como Ubuntu ou Fedora), embora seja de código aberto e já esteja sendo usado por sistemas como o Windows Subsystem for Linux (WSL), Azure Sphere OS, SONiC e outros esforços baseados em Linux.
CBL-Mariner é uma distribuição caracterizada por fornecer um pequeno conjunto padrão de pacotes principais que servem como base universal para a criação de contêineres, ambientes de hospedagem e serviços executados em infraestruturas de nuvem e dispositivos de borda.
Soluções mais complexas e especializadas podem ser criadas adicionando pacotes adicionais ao CBL-Mariner, mas a base para todos esses sistemas permanece a mesma, facilitando a manutenção e a preparação para atualizações.
Por exemplo, o CBL-Mariner é usado como base para a minidistribuição WSLg, que fornece componentes de pilha de gráficos para iniciar aplicativos Linux GUI em ambientes baseados no subsistema WSL2 (Windows Subsystem for Linux).
A funcionalidade estendida no WSLg é feita incluindo pacotes adicionais com Weston Composite Server, XWayland, PulseAudio e FreeRDP.
O sistema de compilação CBL-Mariner permite gerar pacotes RPM autônomos baseados em arquivos fonte e SPEC, bem como imagens de sistema monolíticas geradas com o kit de ferramentas rpm-ostree e atualizadas atomicamente sem dividir em pacotes separados.
Consequentemente, dois modelos de entrega de atualização são suportados: atualizando pacotes individuais e reconstruindo e atualizando toda a imagem do sistema.
Um repositório está disponível com cerca de 3000 RPMs já construídos que você pode usar para construir suas próprias imagens com base no arquivo de configuração.
A distribuição inclui apenas os componentes mais necessários e é otimizada para consumo mínimo de memória e espaço em disco, bem como altas velocidades de download. A distribuição também se destaca por incluir vários mecanismos de segurança adicionais.
O projeto usa uma abordagem de “segurança máxima por padrão”. Fornece a capacidade de filtrar chamadas de sistema usando o mecanismo seccomp, criptografar partições de disco e verificar pacotes usando assinaturas digitais.
Os modos de randomização de espaço de endereçamento suportados no kernel Linux são ativados, assim como os mecanismos de proteção contra ataques relacionados a links simbólicos, mmap, /dev/mem e /dev/kmem.
Para áreas de memória que contêm segmentos com dados do kernel e do módulo, o modo é definido como somente leitura e a execução de código é proibida.
A capacidade de desabilitar o carregamento de módulos do kernel após a inicialização do sistema está disponível opcionalmente. O kit de ferramentas iptables é usado para filtrar pacotes de rede. Por padrão, a etapa de compilação habilita os modos de proteção contra estouros de pilha, estouros de buffer e problemas de formatação de string (_FORTIFY_SOURCE, -fstack-protector, -Wformat-security, relro).
O gerenciador de sistema systemd é usado para gerenciar serviços e inicialização. Os gerenciadores de pacotes RPM e DNF são fornecidos para gerenciamento de pacotes.
Agora, a Microsoft lançou o CBL-Mariner 2.0.20230805 como a mais nova atualização mensal para sua distribuição Linux interna usada para propósitos do Azure ao WSL.
Novidades do CBL-Mariner 2.0.20230805
CBL-Mariner 2.0.20230805 está chegando apenas uma semana após a revisão anterior do CBL-Mariner 2.0 que adicionou Clippy e outros aprimoramentos.
Indiscutivelmente, o mais notável com o CBL-Mariner 2.0.20230805 de agora é adicionar a solução de gerenciamento de pacotes DNF5.
Embora no mês passado o DNF5 não tenha sido considerado pronto para o Fedora 39 por padrão e agora está atrasado para pelo menos o Fedora 41 devido à ramificação do RHEL 10 com o Fedora 40.
A Microsoft está enviando o DNF5 junto com o DNF4, semelhante ao que também pode ser configurado para os interessados em Fedora com as duas versões de gerenciamento de pacotes coexistindo.
O DNF5 foi adicionado ao CBL-Mariner 2.0 por um dos engenheiros da Microsoft trabalhando em sua distribuição Linux interna.
A revisão de agora do CBL-Mariner 2.0.20230805 também adiciona uma variedade de outras alterações aos pacotes existentes, várias correções de segurança, a construção do pacote RPM agora é feita com nível de compactação Zstd 7, o suporte NVIDIA/Mellanox Bluefield 2 agora está na configuração de compilação do kernel do CBL-Mariner, O Golang 1.19 agora é usado pelas ferramentas da distro, e o kernel Linux 5.15.122.1 LTS está alimentando esta distribuição para fornecer as últimas correções de bugs/segurança.
Até agora, os RPMs do CBL-Mariner eram compactados com Gzip nível 9 por padrão. Ao mudar para Zstd com um nível de compactação de 7, a construção do pacote RPM agora é mais rápida e o tamanho do arquivo RPM está na faixa de 3 a 15% em relação ao padrão Gzip anterior.
Detalhes sobre a alteração padrão do RPM compactado em Zstd por meio deste pull.
Por fim, se você tiver interesse em saber mais sobre o assunto, consulte os detalhes no seguinte endereço.
Como criar sua própria compilação CBL-Mariner?
Para aqueles que estão interessados em aprender mais sobre o CBL-Mariner, eles devem saber que podem construir sua própria imagem a partir do Ubuntu ou de qualquer distribuição Linux, somente neste caso seguiremos as instruções para gerar a imagem no Ubuntu.
Para fazer isso primeiro, devemos estabelecer alguns pré-requisitos que precisaremos para construir a imagem ISO:
sudo apt install make tar wget curl rpm qemu-utils golang-go genisoimage python2-minimal bison gawk
Agora procedemos para obter o código da CBL-Mariner:
git clone https://github.com/microsoft/CBL-Mariner.git
E agora teremos que entrar no diretório CBL-Mariner/toolkit e criar a imagem ISO de instalação.
cd CBL-Mariner/toolkit
sudo make iso REBUILD_TOOLS=y REBUILD_PACKAGES=n CONFIG_FILE=./imageconfigs/full.json
Quando terminar, podemos encontrar o arquivo ISO no diretório ../out/images/full/. Com a imagem do sistema criada, podemos testar o sistema em uma máquina virtual, seja com VirtualBox, VMWare, Boxes ou qualquer outro de sua preferência.
A única coisa que você precisa configurar na máquina virtual é que ela tenha pelo menos 2 GB de RAM, um núcleo e 16 GB de armazenamento.
Por fim, caso tenha interesse em saber mais sobre o assunto, consulte os detalhes no seguinte endereço.