Enviado em 21/10/2017 - 12:27h
Camaradas do Viva o Linux, tudo bem?
Venho por meio deste iniciar uma discussão acerca dos softwares utilizados na formação da 'userland' nos nossos SO.
Bem, como é sabido, uma boa parcela dos softwares utilizados nas distribuições baseadas no kernel Linux são do projeto GNU. Algumas pessoas classificam o SO como GNU/Linux, justificando que tais distros não seriam utilizáveis sem o projeto GNU.Tenho uma opinião contrária e pretendo mostrar o por quê tal ideia é equivocada: apesar do projeto GNU ser admirável em sua filosofia, a software distribuído por ele não é tão bom.
Comecemos pela userland, como já foi introduzido.
Atualmente, a maioria esmagadora das distros utilizam o coreutils [0] para tal função. Essa é a definição oficial do projeto: " The GNU Core Utilities are the basic file, shell and text manipulation utilities of the GNU operating system. These are the core utilities which are expected to exist on every operating system.". Observando-a, podemos concluir que, como o nome sugere, o coreutils tem a intenção de prover ferramentas básicas para o funcionamento do sistema operacional GNU.
Aparentemente, o trabalho é feito com maestria: tal pacote é quase universal nos SO baseados no kernel Linux. Entretanto, existem alguns projetos que fazem um trabalho semelhante (senão igual).
A maior e mais famosa alternativa é o Busybox [1]: "BusyBox combines tiny versions of many common UNIX utilities into a single small executable. It provides replacements for most of the utilities you usually find in GNU fileutils, shellutils, etc. The utilities in BusyBox generally have fewer options than their full-featured GNU cousins; however, the options that are included provide the expected functionality and behave very much like their GNU counterparts. BusyBox provides a fairly complete environment for any small or embedded system".
Interessante, não? Como você leu, o Busybox é um projeto que combina, em um único binário, as ferramentas mais básicas e populares do UNIX e GNU coreutils (sim, o fileutils e shellutils estão "embutidos" no coreutils [2]). Entretanto, diferentemente do coreutils, o Busybox tem em mente duas metas: prover um ambiente completo para sistemas UNIX-like e funcionar em lugares com 'poucos recursos'. Mas, será que ele está preparado isso? Bem, podemos dizer que sim. Existem projetos que o adotam como userland. O mais famoso e bem sucedido em Desktops/Servidores é o Alpine Linux. Toda a userland de tal é construída somente com o Busybox.
Dada a introdução, observemos algumas diferenças entre os dois projetos:
Busybox
- um único binário multi-call por padrão;
- configuração feita a partir de um menu em dialog;
- otimizado para 'o tamanho';
- compatível com as 'opções longas' características do projeto GNU;
- inclui diversos softwares de outros projetos (debian, runit, selinux, util-linux, e2fsprogs, sysklod);
- dependências básicas: libc e sh POSIX, GNU Make e um compilador C (não achei referências a outros compiladores, mas funciona do tcc e gcc);
- saídas pouco verbosas
- construção da userland a partir de links simbólicos (e.g busybox ln -s /bin/busybox ln );
- não oferece man pages muito grandes e explicativas;
- extremamente pequeno (o pacote busybox-static do Alpine, com quase tudo 'ativado', tem aproximadamente 936KB);
Coreutils
- pode ser construído como um único binário ou em arquivos separados (ver configure);
- configuração feita a partir do script "configure" (opções, basicamente);
- compatível com 'opções curtas e longas';
- 'código original';
- dependências básicas: libc e sh POSIX, GNU Make e um compilador C (mesmo caso do busybox, testei com o gcc);
- saídas muito verbosas
- construção da userland a partir de binários separados e/ou links simbólicos;
- manpages gigantes e cheias de exemplos;
- extremamente grande (todas as aplicações, compiladas 'por padrão' e estaticamente linkadas, somam quase 45MB);
Bem, essas foram algumas das diferenças que eu encontrei utilizando os dois softwares como userland. Atualmente utilizo o Busybox como userland e estou muito satisfeito.
Ficaria extremamente grato se os senhores falassem o que acham dos dois projetos, qual é o mais rentável, pontos relevantes, etc.
Qualquer erro, por favor, corrija-me.
[0] https://www.gnu.org/software/coreutils/coreutils.html
[1] https://busybox.net/about.html
[2] https://www.gnu.org/software/coreutils/faq/coreutils-faq.html#Fileutils-shellutils-and-textutils
Venho por meio deste iniciar uma discussão acerca dos softwares utilizados na formação da 'userland' nos nossos SO.
Bem, como é sabido, uma boa parcela dos softwares utilizados nas distribuições baseadas no kernel Linux são do projeto GNU. Algumas pessoas classificam o SO como GNU/Linux, justificando que tais distros não seriam utilizáveis sem o projeto GNU.Tenho uma opinião contrária e pretendo mostrar o por quê tal ideia é equivocada: apesar do projeto GNU ser admirável em sua filosofia, a software distribuído por ele não é tão bom.
Comecemos pela userland, como já foi introduzido.
Atualmente, a maioria esmagadora das distros utilizam o coreutils [0] para tal função. Essa é a definição oficial do projeto: " The GNU Core Utilities are the basic file, shell and text manipulation utilities of the GNU operating system. These are the core utilities which are expected to exist on every operating system.". Observando-a, podemos concluir que, como o nome sugere, o coreutils tem a intenção de prover ferramentas básicas para o funcionamento do sistema operacional GNU.
Aparentemente, o trabalho é feito com maestria: tal pacote é quase universal nos SO baseados no kernel Linux. Entretanto, existem alguns projetos que fazem um trabalho semelhante (senão igual).
A maior e mais famosa alternativa é o Busybox [1]: "BusyBox combines tiny versions of many common UNIX utilities into a single small executable. It provides replacements for most of the utilities you usually find in GNU fileutils, shellutils, etc. The utilities in BusyBox generally have fewer options than their full-featured GNU cousins; however, the options that are included provide the expected functionality and behave very much like their GNU counterparts. BusyBox provides a fairly complete environment for any small or embedded system".
Interessante, não? Como você leu, o Busybox é um projeto que combina, em um único binário, as ferramentas mais básicas e populares do UNIX e GNU coreutils (sim, o fileutils e shellutils estão "embutidos" no coreutils [2]). Entretanto, diferentemente do coreutils, o Busybox tem em mente duas metas: prover um ambiente completo para sistemas UNIX-like e funcionar em lugares com 'poucos recursos'. Mas, será que ele está preparado isso? Bem, podemos dizer que sim. Existem projetos que o adotam como userland. O mais famoso e bem sucedido em Desktops/Servidores é o Alpine Linux. Toda a userland de tal é construída somente com o Busybox.
Dada a introdução, observemos algumas diferenças entre os dois projetos:
Busybox
- um único binário multi-call por padrão;
- configuração feita a partir de um menu em dialog;
- otimizado para 'o tamanho';
- compatível com as 'opções longas' características do projeto GNU;
- inclui diversos softwares de outros projetos (debian, runit, selinux, util-linux, e2fsprogs, sysklod);
- dependências básicas: libc e sh POSIX, GNU Make e um compilador C (não achei referências a outros compiladores, mas funciona do tcc e gcc);
- saídas pouco verbosas
- construção da userland a partir de links simbólicos (e.g busybox ln -s /bin/busybox ln );
- não oferece man pages muito grandes e explicativas;
- extremamente pequeno (o pacote busybox-static do Alpine, com quase tudo 'ativado', tem aproximadamente 936KB);
Coreutils
- pode ser construído como um único binário ou em arquivos separados (ver configure);
- configuração feita a partir do script "configure" (opções, basicamente);
- compatível com 'opções curtas e longas';
- 'código original';
- dependências básicas: libc e sh POSIX, GNU Make e um compilador C (mesmo caso do busybox, testei com o gcc);
- saídas muito verbosas
- construção da userland a partir de binários separados e/ou links simbólicos;
- manpages gigantes e cheias de exemplos;
- extremamente grande (todas as aplicações, compiladas 'por padrão' e estaticamente linkadas, somam quase 45MB);
Bem, essas foram algumas das diferenças que eu encontrei utilizando os dois softwares como userland. Atualmente utilizo o Busybox como userland e estou muito satisfeito.
Ficaria extremamente grato se os senhores falassem o que acham dos dois projetos, qual é o mais rentável, pontos relevantes, etc.
Qualquer erro, por favor, corrija-me.
[0] https://www.gnu.org/software/coreutils/coreutils.html
[1] https://busybox.net/about.html
[2] https://www.gnu.org/software/coreutils/faq/coreutils-faq.html#Fileutils-shellutils-and-textutils