1 pontos por GN⁺ 2024-04-28 | 1 comentários | Compartilhar no WhatsApp
  • A história do Alpine Linux

    • O Alpine Linux é uma distribuição Linux independente e não comercial de uso geral, projetada para usuários avançados que valorizam segurança, simplicidade e eficiência no uso de recursos
    • Todos os binários de userland são compilados como PIE (Position Independent Executables) e contam com proteção contra stack smashing, prevenindo antecipadamente classes inteiras de exploits, incluindo vulnerabilidades zero-day
    • Em 2005, Natanael Copa discutiu o início do projeto e, assim como o BSD, ele é usado em sistemas embarcados, roteadores, dispositivos móveis, bem como em servidores e desktops de uso geral
    • Devido ao seu tamanho compacto e dependências limitadas, também é popular como base para contêineres Linux
    • Também oferece um toolchain que pode ser executado facilmente em chroot(8), o que o torna interessante para quem usa amplamente NetBSD chroots(8) e FreeBSD jail
  • A instalação do Alpine Linux

    • Está disponível em várias versões, incluindo builds para ARM, PPC64, x86 e x86_64
    • O processo de instalação é muito simples: basta fazer login como root no ambiente live e executar setup-alpine
    • São feitas perguntas básicas sobre keymap, rede, fuso horário, autenticação de root etc., e também é possível injetar chaves SSH desde o início, o que é útil ao implantar VMs ou conjuntos de servidores com ferramentas de orquestração, ou ao implantar em provedores de hospedagem que não fornecem mídia
    • É possível escolher entre alguns servidores SSH e clientes NTP, incluindo a preferência por OpenSSH e openntpd, e ele também identifica corretamente quando está rodando em Xen
    • Também é possível configurar LVM, mas por enquanto a escolha é continuar com a partição padrão sys do Alpine usando ext4
  • Explorando após a instalação

    • Ao iniciar o Alpine pela primeira vez, dá para entender um motivo especial: o dmesg(1) informa que ele está executando o OpenRC
    • É portável, pequeno, rápido, eficiente, transparente e seguro
    • Muito familiar para usuários de BSD acostumados a escrever scripts rc
    • A presença de /etc/rc.conf e crond(8) é motivo de alegria
    • É muito bom ver isso sendo usado em distribuições Linux como Devuan, Gentoo e Alpine, e isso torna o Linux divertido de novo
    • Junto com o OpenRC, musl e busybox vêm incluídos, reduzindo ainda mais o tamanho e a superfície de ataque do sistema básico
    • llvm também está disponível, assim como um dos shells interativos preferidos do autor, o MirBSD Korn shell
  • Pacotes

    • O gerenciador de pacotes padrão do Alpine é o apk e, como é comum no Linux, ele lida com atualizações sem separar o sistema base de todos os pacotes
    • Como no BSD, o autor quer verificar se é possível executar uma cópia sem privilégios, mas ainda não confirmou isso; além disso, o pkgsrc também está disponível, então não chega a ser um problema
    • A configuração fica em /etc/apk/repositories, e é possível ativar o repositório community descomentando a segunda URL fornecida pelo instalador
    • O Alpine também tem um repositório testing, e você também pode adicionar seus próprios repositórios
    • O uso é fácil, mas, por força do hábito, o autor ainda acaba digitando apt install por engano em vez de apk add
    • Há uma interface web oficial, e os repositórios do Alpine estão no pkgs.org
    • O pacote zfs foi o mais surpreendente, e foram necessários apenas dois comandos para instalar e carregar o módulo do kernel (embora root on ZFS deva ser mais complicado)
  • Conclusão

    • Foi apenas uma exploração superficial, mas já há motivos suficientes para considerar seriamente migrar para ele como principal distribuição Linux para testes e servidores
    • O autor gosta do fato de htop(1) e lsof(1) mostrarem apenas uma pequena lista de processos reconhecíveis, de ele usar OpenRC, de o gerenciamento de pacotes parecer simples e de a configuração ser muito direta
    • O autor se perguntava como seria um “Occam’s Linux” moderno e funcional, e isso é exatamente isso
    • Se for preciso mais do que o busybox, o autor gostaria de verificar se o uutils funciona, embora tenha dúvidas no caso de servidores

A opinião do GN⁺

  • O Alpine Linux é otimizado para implantações baseadas em contêineres e, por isso, é amplamente usado em plataformas de contêineres como Docker. Parece ser uma distribuição que vale a pena considerar ao implementar uma arquitetura de microsserviços com contêineres.

  • O uso padrão de musl libc pode ser tanto uma vantagem quanto uma desvantagem. O musl é mais leve e tem pontos fortes em segurança em comparação com o glibc, mas pode haver problemas de compatibilidade com alguns aplicativos. Portanto, vale a pena verificar com antecedência a compatibilidade dos aplicativos que serão usados.

  • O uso de ash como shell padrão também é um ponto peculiar. O ash tem menos recursos que o bash, mas é um shell muito leve e rápido, útil em ambientes com recursos limitados, como sistemas embarcados. Por outro lado, pode ser um pouco inconveniente para usuários comuns.

  • Para quem usa principalmente sistemas da família BSD, o Alpine Linux provavelmente parecerá atraente por oferecer um ambiente familiar. No entanto, como o suporte a ambiente desktop ainda parece insuficiente, ele parece mais adequado para uso em servidores ou sistemas embarcados.

  • No geral, o Alpine Linux parece ter sua própria relevância como uma distribuição leve e otimizada para segurança. Ainda assim, como seu ecossistema próprio não é tão grande, é preciso considerar que o suporte da comunidade pode ser um pouco limitado em caso de problemas. Mesmo assim, é de se esperar que, com o tempo, o Alpine Linux conquiste cada vez mais usuários graças às suas vantagens.

1 comentários

 
GN⁺ 2024-04-28
Comentários do Hacker News

Resumo:

  • Binários Linux são compilados como PIE (Position Independent Executable), o que aumenta a segurança

  • O GLIBC tem a implementação de heap mais endurecida, com mais mecanismos de mitigação para vulnerabilidades como double free

  • O Alpine usa musl, então é menos seguro que o GLIBC. Um sistema pequeno e fácil de entender ajuda na segurança

  • O Illumos (OpenSolaris) fica muito mais simples depois de décadas usando Linux

  • A maior parte do que funcionava no Solaris 10 ainda vale hoje com pequenas modificações

  • Zones são 10 vezes melhores que contêineres Docker, e o suporte a ZFS é embutido

  • Gerenciamento de serviços com SMF. A única desvantagem é configurar tudo em XML

  • Compartilhamento de experiência usando servidores OmniOS e SmartOS

  • Como usuário de BSD, foi a primeira vez rodando Alpine no bhyve

  • Por ser baseado em busybox, não é necessário ter binários separados para utilitários em /bin e /sbin, então o espaço de usuário é pequeno e o boot é rápido

  • Com tmux e zsh, já é suficiente para a maior parte dos usos Unix

  • Foi preciso instalar muitos pacotes com apk, mas no geral foi a melhor experiência com Linux

  • Seria bom se viesse com ZFS embutido e suporte a bindings virtio para bhyve

  • Void Linux também é recomendado para usuários de BSD. Foi criado por um desenvolvedor do NetBSD, tem versões com glibc e musl, e usa runit como sistema init

  • Com xbps-src, é possível compilar pacotes a partir do código-fonte

  • Algumas pessoas evitam usar Alpine porque ele não inclui páginas man por padrão

  • Há curiosidade sobre existir alguma opção para instalar documentação automaticamente ao instalar pacotes

  • Houve posts sobre desempenho do Alpine no Docker. Recomenda-se usar Debian/Ubuntu

    • Motivos para o Alpine ser mais lento: queda de desempenho no Python, 50% mais lento que imagens Ubuntu
    • Posts em defesa do Alpine: benchmarks comparando desempenho com Debian
  • Há dúvida se isso ainda continua válido

  • Não entendem muito bem o apelo do OpenRC e afins. Consideram opções baseadas em supervisão melhores do que gerenciar arquivos PID

  • Reconhecem que não reiniciar automaticamente pode ser uma vantagem

  • A forte dependência de syslog também parece tecnologia dos anos 80

  • Concordam com a necessidade de melhorar uma visão centralizada para entender a ordem dos eventos entre várias ferramentas

  • Vantagem do Alpine: sem Nix, é possível fazer gerenciamento declarativo de pacotes editando /etc/apk/world e depois executando apk fix

  • Slackware é um meio-termo entre BSD e Linux. Tem estilo Unix e não é complicado. O Slackbuilds oferece uma árvore de ports rica

  • O musl não oferece suporte a pthread_attr_setaffinity_np, então alguns softwares como PyTorch não conseguem rodar