O Linux, apesar de inspirado no Unix, não é uma réplica exata deste. Ambos compartilham semelhanças, mas existem distinções fundamentais entre esses dois sistemas operacionais renomados. Vamos explorar as principais divergências.
Diferenças Essenciais?
O Linux se destaca como um sistema operacional de código aberto e gratuito. Em contraste, o Unix é um produto comercial, oferecido por diversos fornecedores, cada um com sua variante personalizada, geralmente otimizada para seu próprio hardware. Ele se caracteriza por seu alto custo e código fechado. Apesar disso, Linux e Unix desempenham funções similares de maneira semelhante. No entanto, as nuances são mais complexas.
As diferenças vão além dos aspectos técnicos e arquitetônicos. Para compreender as influências que moldaram o Unix e o Linux, é crucial examinar suas histórias.
As Origens do Unix
Com mais de cinco décadas de história, o Unix teve sua origem na Digital Equipment Corporation (DEC) usando linguagem de montagem em um DEC PDP/7, como um projeto não oficial nos Laboratórios Bell, então pertencentes à AT&T. Logo foi portado para um computador DEC PDP/11/20 e, posteriormente, se disseminou por outros computadores da Bell. Uma reescrita na linguagem de programação C resultou na versão 4 do Unix em 1973. Este marco foi significativo, pois as características da linguagem C facilitaram a portabilidade do Unix para novas arquiteturas de computador.
Em 1973, Ken Thompson e Dennis Ritchie apresentaram um artigo sobre o Unix em uma conferência, o que gerou inúmeros pedidos de cópias do sistema. Como a venda de sistemas operacionais estava fora do escopo das operações permitidas da AT&T, o Unix não pôde ser comercializado. Assim, passou a ser distribuído como código-fonte sob licença, com custos nominais para cobrir envio, embalagem e “royalties razoáveis”. O Unix era fornecido “como está”, sem suporte técnico ou correções de bugs, mas com a vantagem de acesso ao código-fonte, permitindo modificações.
O Unix rapidamente ganhou aceitação em instituições acadêmicas. Em 1975, Ken Thompson passou um período sabático na Universidade da Califórnia, Berkeley, onde, junto com alguns alunos de pós-graduação, começou a aprimorar sua cópia local do Unix. O interesse externo pelas adições de Berkeley cresceu, levando ao lançamento da Berkeley Software Distribution (BSD). Esta era uma coleção de programas e modificações que podiam ser adicionadas a um sistema Unix existente, embora não fosse um sistema operacional completo. Versões posteriores do BSD se tornaram sistemas Unix completos.
A partir daí, surgiram dois ramos principais do Unix: o fluxo da AT&T e o da BSD. Todas as outras variantes, como AIX, HP-UX e Oracle Solaris, descendem desses ramos. Em 1984, algumas restrições à AT&T foram relaxadas, permitindo que produzisse e vendesse o Unix, marcando o início de sua comercialização.
A Gênese do Linux
Richard Stallman, vendo a comercialização do Unix como uma ameaça à liberdade dos usuários de computador, decidiu criar um sistema operacional baseado em princípios de liberdade: a capacidade de modificar o código-fonte, redistribuir versões alteradas do software e usar o software da maneira que o usuário considerar mais adequada.
O sistema operacional, nomeado GNU, tinha o objetivo de replicar a funcionalidade do Unix, mas sem usar nenhum código-fonte do Unix. O Projeto GNU foi fundado em 1983 para desenvolver o sistema operacional. Em 1985, a Free Software Foundation foi criada para promover, financiar e apoiar o projeto GNU.
Todas as áreas do sistema operacional GNU estavam progredindo, exceto o kernel. Os desenvolvedores do projeto GNU estavam trabalhando em um microkernel chamado GNU Hurd, mas o progresso era lento, e ele ainda está em desenvolvimento. Sem um kernel, não seria possível ter um sistema operacional funcional.
Em 1987, Andrew S. Tanebaum lançou o MINIX (mini-Unix) como ferramenta de ensino para estudantes que estudavam design de sistemas operacionais. O MINIX era um sistema operacional funcional, semelhante ao Unix, mas com restrições, especialmente no sistema de arquivos. O código-fonte deveria ser pequeno o suficiente para ser estudado em um semestre universitário, o que exigia sacrificar algumas funcionalidades.
Linus Torvalds, um estudante de ciência da computação, para entender melhor o funcionamento interno do Intel 80386 em seu novo PC, escreveu um código simples de troca de tarefas como um exercício de aprendizado. Eventualmente, esse código se tornou um proto-kernel elementar, o primeiro kernel Linux. Torvalds já estava familiarizado com o MINIX, e seu primeiro kernel foi desenvolvido no MINIX usando o compilador GCC de Richard Stallman.
Torvalds decidiu criar seu próprio sistema operacional que superasse as limitações do MINIX. Em 1991, fez seu anúncio no grupo Usenet MINIX, pedindo feedback sobre seu projeto.
O Linux não é um clone do Unix, mas sim um sistema “tipo Unix”. A palavra “clone” implica que uma pequena parte do original é cultivada em uma nova réplica. O Linux foi criado do zero para se parecer com o Unix e atender às mesmas necessidades, tornando-o mais um “replicante” do que um clone.
O Linux era um kernel à procura de um sistema operacional, e o GNU era um sistema operacional à procura de um kernel. A combinação de ambos pareceu inevitável e transformou o mundo.
Quem Está por Trás do Desenvolvimento?
Uma distribuição Linux é o resultado da combinação de muitas partes diferentes, provenientes de diversos locais. O kernel do Linux, o conjunto de utilitários GNU e os aplicativos do usuário são integrados para formar uma distribuição funcional. As comunidades e mantenedores de cada distribuição desempenham um papel vital na criação de uma distribuição Linux, assim como os desenvolvedores do kernel.
O Linux é fruto de um esforço colaborativo, realizado por voluntários, organizações como Canonical e Red Hat, e indivíduos patrocinados pela indústria.
Cada Unix comercial é desenvolvido como uma entidade única e coerente, usando instalações de desenvolvimento internas ou terceirizadas sob controle rigoroso. Eles frequentemente possuem um kernel exclusivo e são projetados especificamente para as plataformas de hardware de cada fornecedor.
Os derivados gratuitos e de código aberto do fluxo BSD Unix, como FreeBSD, OpenBSD e DragonBSD, utilizam uma combinação de código BSD legado e novo. Atualmente, são projetos gerenciados pela comunidade de forma semelhante às distribuições Linux.
Padrões e Conformidade
Em geral, o Linux não é totalmente compatível com a Single UNIX Specification (SUS) nem com POSIX. Ele busca atender ambos os padrões sem se tornar escravo deles. Houve algumas exceções, como o Inspur K-UX, um Linux chinês compatível com POSIX.
Os Unix verdadeiros, como as ofertas comerciais, são compatíveis. Alguns derivados do BSD, incluindo todas as versões do macOS, exceto uma, também são compatíveis com POSIX. Nomes de variantes como AIX, HP-UX e Solaris são marcas registradas de suas respectivas organizações.
Marcas Registradas e Direitos Autorais
Linux é uma marca registrada de Linus Torvalds, e a Linux Foundation administra a marca em seu nome. O kernel Linux e os utilitários principais são licenciados sob várias licenças GNU “copyleft”. O código-fonte está disponível gratuitamente.
Unix é uma marca registrada do The Open Group. É protegido por direitos autorais, é proprietário e tem código fechado.
O FreeBSD é protegido por direitos autorais pelo FreeBSD Project, e seu código-fonte está disponível.
Diferenças de Uso
Do ponto de vista da experiência do usuário, na linha de comando, não há diferenças visíveis significativas. Devido aos padrões e conformidade POSIX, software escrito para Unix pode ser compilado para Linux com um esforço limitado de portabilidade. Scripts de shell, por exemplo, podem ser usados diretamente no Linux, muitas vezes sem modificações.
Alguns utilitários de linha de comando podem ter opções ligeiramente diferentes, mas o conjunto de ferramentas básicas é essencialmente o mesmo em ambas as plataformas. A IBM, por exemplo, oferece uma “Caixa de ferramentas do AIX para aplicativos Linux”, que permite ao administrador do sistema instalar centenas de pacotes GNU no AIX.
Os diversos sabores do Unix têm diferentes interfaces gráficas de usuário (GUI), assim como o Linux. Um usuário Linux acostumado com GNOME ou Mate pode precisar se adaptar ao usar KDE ou Xfce pela primeira vez, mas rapidamente se acostumará. O mesmo ocorre com a variedade de GUIs disponíveis no Unix, como Motif, Common Desktop Environment e o X Window System. São todos similares o suficiente para serem facilmente utilizados por quem conhece o conceito de um ambiente de janela com diálogos, menus e ícones.
As diferenças mais notáveis se manifestam ao administrar os sistemas. Por exemplo, existem diferentes mecanismos de inicialização. Derivados do Unix System V e os fluxos BSD têm sistemas init distintos. As variantes gratuitas do BSD mantiveram seus próprios esquemas de inicialização. Por padrão, as distribuições Linux usarão um sistema init derivado do Unix System V ou o systemd.
Transmissão Manual vs. Automática
Se você sabe dirigir um, saberá dirigir o outro – mesmo que inicialmente precise de alguma adaptação.
Além do preço, as maiores diferenças residem na filosofia, licenciamento, modelo de desenvolvimento, organização comunitária e o tipo e estilo de governança, que são mais impactantes do que as diferenças nos sinalizadores de linha de comando entre, por exemplo, uma versão do comando grep e outra.
As maiores diferenças não são as que aparecem na tela, mas sim as que moldam a essência e a evolução de cada sistema.