Qual o tamanho do Linux
Quanto código está dentro do Linux
Essa pergunta tem vários jeitos de ser respondida, todos, de alguma forma, corretos.
O Essencial
Linux, essencialmente, não é um sistema operacional. Quando falamos de Linux, normalmente nos referimos (algo erroneamente) a todo um sistema operacional. O kernel do Linux (como o kernel de qualquer sistema operacional) representa uma pequena parte essencial dele, a parte que cuida de tarefas que os programas precisam que sejam cuidadas para que possam funcionar. É do kernel, no caso do Linux, a responsabilidade por gravar arquivos no disco, por interromper programas e repartir o tempo da CPU, de gerenciar a memória física e a memória virtual.
Se formos pensar assim, o Linux não tem cara. Você nunca fala diretamente com ele (a menos que você seja um programa, o que é muito improvável, embora não impossível, já que mecanismos de busca indexam essa página) e ele não tem uma interface de usuário. Ele é apenas a parte essencial do sistema operacional (e janelas ou uma linha de comando não fazem parte dela)
Uma contagem não oficial (eu contei os ";"'s do fonte do kernel 2.4.20 instalado em uma das minhas máquinas) é que ele tem é de 1.384.894 linhas de código C (1.384.894 ocorrências de ";").
Mais que isso
Se quando falamos Linux não estamos falando em kernel, nesse caso, o Linux é um sistema operacional absolutamente enorme e patologicamente abrangente. Uma distribuição típica (eu uso Debian) não cabe inteira em um CD. Você precisa de pelo menos 3 deles para instalar uma estação com RedHat 8.
Compare isso a um Windows XP que precisa de apenas um CD.
É uma comparação estúpida.
Uma distribuição Linux típica vem com uns 3 ou 4 browsers de web, uma boa dúzia de servidores HTTP (do mais simples e leve ao mais robusto e versátil), umas duas ou três GUIs diferentes (eu uso Gnome, muitos preferem KDE), uns dois bancos de dados relacionais (que não ficam muito a dever, se é que ficam, a um Oracle ou SQL Server), todo o software que você precisa para gerenciar uma rede de qualquer tamanho, partilhar arquivos com outras máquinas Linux, Unix, Windows, Macintosh, alguns dos melhores compiladores disponíveis no mercado (das linguagens mainstream, como C/C++/Objective C, Java, outras que eu nunca ouvi falar, e outras que eu nunca mais usei desde a faculdade, como COBOL ou Fortran), editores de texto e para programas (literalmente dezenas deles), aplicativos para escritório (e-mail, agenda).
Tá, vai... OpenOffice ainda não está tão bom quando o MS Office e faltam algumas coisas. Kivio não está tão bom quanto o Visio e o GIMP não é tão bom quando o PhotoShop 7.
Mas dá pra ter uma idéia de porque tudo isso não cabe em um CD.
Vários sabores
Outra coisa interessante é que existem vários "sabores" de Linux - são chamados de distribuições. Cada um deles tem um conjunto de programas diferenciado, um instalador diferente, mais ou menos amigável, um número variável de CDs (com os fontes de todos os programas que vêm nos outros CDs).
Quase todas elas tem um sistema de gerenciamento de pacotes. Funciona mais ou menos assim: Todos os programas e partes do sistema vêm empacotados em um formato padrão e são instalados por um programa (ou vários, capazes de instalar os pacotes) e registrados em um banco de dados centralizado para a máquina, incluindo aí dependências (o que mais eu preciso instalar), conflitos (o que eu tenho que desinstalar) e número de versão. Suas habilidades (as dos gerenciadores) variam de gerenciador para gerenciador. Eles podem buscar arquivos no disco, em CDs, baixá-los automaticamente da internet e baixar e instalar todos os componentes necessários para que funcionem.
Isso permite que se mantenha a configuração da máquina (ao menos os programas instalados) sob um controle rígido que simplesmente não é possível em outros sistemas operacionais.
Já comentei antes que eu prefiro Debian. A razão é simples: ele tem um sistema de gerenciamento de pacotes que me permite manter a máquina atualizada com uma facilidade impressionante (dois comandos, digitados de tempos em tempos, bastam para isso).
Pequenos prazeres
Na maioria dos lugares onde preciso instalar um Linux, eu levo apenas um CD. Por dois motivos - tudo o que eu preciso para instalar um Linux minimamente funcional cabe com folga nesse CD. Normalmente eu uso Debian porque, logo depois de instalar a máquina eu uso o gerenciador de pacotes para baixar da net versões mais atuais dos pacotes que foram instalados do CD. O segundo é que, depois disso, uso o gerenciador de pacotes para baixar todo o resto que eu preciso. Normalmente uso o de linha de comando (não há nada de traumático e são dois ou três encantamentos que qualquer um pode aprender). E que a maioria dos usuários não precisa nem saber que existe.
Assim, eu sei que todas as máquinas pelas quais sou responsável, estão felizes e atualizadas e rodando as versões mais novas de tudo que precisam.
© Ricardo Bánffy