dietlibc e musl - O melhor dos dois mundos

dietlibc-e-musl
dietlibc e musl
 Durante a live sobre o minit init system, uma coisa chamou a atenção e chocou os inscritos, o tamanho final dos binários pois são assustadoramente muito pequenos ao ponto que pediram para verificar as dependências dos programas; ou seja, as bibliotecas dinâmicas. A questão é que mesmo sendo tão pequeno, o minit faz uso de biblioteca de forma estática (o que chega a ser mais assustador ainda)
Nesta imagem podemos ver com o minit compõe-se de 10 binários linkados estaticamente e tem apenas 120k
Sequencia de comandos "du""ls" e "ldd" no diretório minittest para conferir o tamanho total, o que há no diretório e se os binários são linkados dinâmica ou estaticamente.
CURSO DE SHELL SCRIPT DO MATEUS MÜLLER
 Confesso que também fiquei chocado a primeira vez que vi isso coisa de cinco anos atras. Chegava a ser mentalmente inaceitável ver um binário tão pequeno e ter a biblioteca lincada estaticamente ao binário. Talvez você se pergunte o porque e vamos para o arrebento na explicação. Matéria de certificações LPI e LFCS:
  1. O que biblioteca dinâmica e o que é biblioteca estática?
  2. Quais as vantagens e desvantagens de ambas?

 Assunto já tratado aqui no blog, mas vamos lá

Resposta para a pergunta #1

 Biblioteca dinâmica trata-se de programas que dependem de bibliotecas externas que no Linux geralmente as encontramos em diretórios como /lib. no Windows é o que chamamos de DLLs. Portanto, para tal programa funcionar, ele precisará carregar essas bibliotecas e se não forem encontradas, o programa não será executado. A imagem abaixo mostra de quais bibliotecas os Bash depende para estar em funcionamento.
Dependências do Bash
Dependências do Bash
 Já o termo biblioteca estática referem-se a programas que não dependem de bibliotecas para funcionar. Porque? Simples, a/s biblioteca/s já está/ão incorporada/s ao programas e por isso vemos a seguinte mensagem com o comando ldd.
Conferindo as depenicas do minit
Depenicas do minit

Resposta para a pergunta #2

 Vantagem de programas lincados estaticamente as bibliotecas: Proporciona melhor desempenho por não precisar ficar realizando requisições a bibliotecas e proporciona maior segurança ao programa.
 Desvantagem: O programa fica maior ocupando maior espaço em dispositivo de armazenamento e de memória quando em execução já que tudo é incorporado a um binário só.

 Bom, se essas são as vantagens e desvantagens das ligações estáticas, as dinâmicas se tornam o inverso, mas se tornam uma solução também para reduzir consumo de hardware.
Curso COMPLETO para a certificação CompTIA Linux+ e LPIC-1 do Mateus Müller do canal 4Fasters
 Nesse aspecto, a dietlibc e musl proporcionam o melhor dos dois mundos nos dando o permitindo usufruir dos benefícios de programas lincados estaticamente com o tamanho dos lincados dinamicamente.
Tabela comparativa de recursos entre musl, uClibc, dietlibc e glibc
Tabela comparativa de recursos e tamanhos entre musl, uClibc, dietlibc e glibc
Tamanho final com cada biblioteca.
Tamanho final com cada biblioteca.
 Foi de onde surgiu a ideia da serie "Muito além do GNU", pois percebi que não usamos Linux com o máximo que ele tem a oferecer, com o seu real potencial, com o seu real poder de fogo (digamos que ainda nem despertamos o sétimo sentido do Linux com armadura de ouro) e deixamos de usufruir de todos esse benefícios em prol a uma paixão.

 O bem da verdade é que não sabemos o real potencial do Linux; utilizamos do jeito que está, ficamos satisfeitos e paramos pro aí mesmo (o que não há nada de errado, mas acabamos pro limitar o que podemos fazer).

 Vivemos em uma nova época, um novo período onde muitas mudanças benéficas ocorreram e muitas outras ocorrem ou estão ocorrendo no Linux. Essas mudanças beneficiam os desenvolvedores, os sysadmins, os usuários finais, os projetos, comunidades e os ambientes corporativos. Se já estava bom da forma que o utilizamos antes disso tudo, imaginem hoje.

Comente com o Facebook:

Nenhum comentário:

Postar um comentário

Marcadores

A pior história sobre Linux que já ouvi (5) A.I (1) ambiente gráfico (13) AMD (13) analise (8) Andriod (8) artigo (5) benchmark (1) BSDs (14) btrfs (8) Caixa de Ferramentas do UNIX (21) canto do Diego Lins (2) certificações Linux (7) Código Fonte (53) comandos (16) comp (1) compressores (5) container (2) CPU (12) criptografia (2) crowdfunding (9) cursos (18) daemons (13) Debian (30) desenvolvimento (52) desktop (14) DevOps (1) DevSecOps (1) dic (1) Dica de leitura (49) dica DLins (2) dicas do Flávio (27) diocast (1) dioliunx (3) distribuições Linux (11) Docker (16) DragonflyBSD (9) ead Diolinux (2) edição de vídeo (4) EMMI Linux (4) emuladores (4) endless (5) English interview (2) Enless OS (2) entrevista (16) espaço aberto (87) evento (3) facebook (1) filesystem (54) financiamento coletivo (2) fork (2) fox n forests (4) FreeBSD (9) Funtoo Linux (13) games (87) gerenciadores de pacotes (1) GOG (3) google (8) gpu (1) hardware (94) I.A (1) init system (7) Intel (14) IoT (1) ispconfig (1) jogos (31) kernel (114) lançamento (32) leis (1) LFCS (1) licenças (7) Linus (14) Linux (194) linux foundation (3) linux para leigos (1) live (4) LPI (10) LTS (1) machine learning (1) mesa redonda (28) microst (1) muito além do GNU (106) não viva de boatos (10) navegadores (2) NetBSD (3) novatec (17) o meu ambiente de trabalho (3) off-topic (14) open source (76) OpenBSD (3) OpenShift (1) os vários sabores de Linux (33) padrim (2) palestras e eventos (2) partições (6) pentest (6) processadores (20) professor Augusto Manzano (11) Programação (38) propagandas com Linux (8) Red Hat (10) redes (2) resenha nerd (4) Resumo da Semana do Dlins (2) resumo do Tux (23) retrospectiva Linux (1) runlevel (2) segurança digital (13) servidores (1) sistema operacional (13) Software livre e de código aberto (150) sorteio (3) Steam (8) Steam no Linux (6) supercomputadores (3) suse (3) systemd (8) terminal (71) toca do tux (1) toybox (12) tutorial (2) Tux (2) unboxing (7) UNIX (16) UNIX Toolbox (15) vartroy (1) vga (1) vulnerabilidade (3) wayland (1) whatsapp (1) Windows Subsystem for Linux (1) wine (11) WoT (1) ZFS (4)