Qual é a diferença entre Linux e Unix?

O Linux se inspirou no Unix, mas o Linux não é o Unix – embora seja definitivamente semelhante ao Unix. Vamos explicar as principais diferenças entre esses dois sistemas operacionais famosos.

Mesma diferença?

Linux é um sistema operacional gratuito e de código aberto. Unix é um produto comercial, oferecido por uma variedade de fornecedores, cada um com sua própria variante, geralmente dedicada ao seu próprio hardware. É caro e de código fechado. Mas Linux e Unix fazem mais ou menos a mesma coisa da mesma maneira, certo? Mais ou menos, sim.

As sutilezas são um pouco mais complicadas. Existem diferenças além das técnicas e arquitetônicas. Para entender algumas das influências que moldaram o Unix e o Linux, precisamos entender suas histórias de fundo.

As origens do Unix

Unix tem mais de 50 anos. Foi desenvolvido em Corporação de Equipamentos Digitais (DEC) linguagem de montagem com um DEC PDP/7 como um projeto não oficial em Laboratórios Bell, então propriedade de AT&T. Foi logo portado para um DEZ PDP/11/20 computador, então se espalhou de forma constante por outros computadores na Bell. Uma reescrita no linguagem de programação C levou à versão 4 do Unix de 1973. Isso foi significativo porque as características da linguagem C e do compilador significavam que agora era relativamente fácil portar o Unix para novas arquiteturas de computador.

Em 1973, Ken Thompson e Dennis Ritchie apresentou um artigo sobre Unix em uma conferência. Como resultado, pedidos de cópias do Unix chegaram à Bell. Como a venda de sistemas operacionais estava fora do escopo permitido de operações da AT&T, eles não podiam tratar o Unix como um produto. Isso levou o Unix a ser distribuído como código-fonte com uma licença. Os custos nominais foram suficientes para cobrir o envio e a embalagem e um “royalty razoável”. O Unix veio “como está”, sem suporte técnico e sem correções de bugs. Mas você conseguiu o código-fonte e pode modificá-lo.

O Unix viu uma rápida aceitação nas instituições acadêmicas. Em 1975, Ken Thompson passou uma licença sabática da Bell no Universidade da California, Berkeley. Junto com alguns alunos de pós-graduação, ele começou a adicionar e melhorar sua cópia local do Unix. O interesse externo nas adições de Berkeley cresceu, levando ao primeiro lançamento do Distribuição de software de Berkeley (BSD). Esta era uma coleção de programas e modificações de sistema que poderiam ser adicionadas a um sistema Unix existente, mas não era um sistema operacional autônomo. Versões subsequentes do BSD eram sistemas Unix inteiros.

Havia agora dois tipos principais de Unix, o fluxo AT&T e o fluxo BSD. Todas as outras variantes do Unix, como AIX, HP-UX, e Oráculo Solaris, são descendentes destes. Em 1984, algumas das restrições à AT&T foram liberadas, e eles puderam produzir e vender o Unix.

O Unix foi então comercializado.

A Gênese do Linux

Vendo a comercialização do Unix como uma erosão adicional das liberdades disponíveis para os usuários de computador, Richard Stallman se propôs a criar um sistema operacional baseado na liberdade. Ou seja, a liberdade de modificar o código-fonte, redistribuir versões modificadas do software e usar o software da maneira que o usuário achar melhor.

O sistema operacional iria replicar a funcionalidade do Unix, sem incluir nenhum código-fonte do Unix. Ele nomeou o sistema operacional GNU e fundou a Projeto GNU em 1983 para desenvolver o sistema operacional. Em 1985, fundou a Fundação de Software Livre para promover, financiar e apoiar o projeto GNU.

Todas as áreas do sistema operacional GNU estavam fazendo um bom progresso – exceto o kernel. Os desenvolvedores do projeto GNU estavam trabalhando em um microkernel chamado GNU Hurd, mas o progresso foi lento. (Ele ainda está em desenvolvimento hoje e se aproximando de um lançamento.) Sem um kernel, não haveria sistema operacional.

Em 1987, André S. Tanebaum lançou um sistema operacional chamado MINIX (mini-Unix) como auxiliar de ensino para estudantes que estudam design de sistemas operacionais. O MINIX era um sistema operacional funcional, semelhante ao Unix, mas tinha algumas restrições, especialmente com o sistema de arquivos. Afinal, o código-fonte tinha que ser pequeno o suficiente para garantir que fosse coberto adequadamente em um único semestre universitário. Algumas funcionalidades tiveram que ser sacrificadas.

Para entender melhor o funcionamento interno do Intel 80386 em seu novo PC, um estudante de ciência da computação chamado Linus Torvalds escreveu um código simples de troca de tarefas como um exercício de aprendizado. Eventualmente, este código tornou-se um proto-kernel elementar que se tornou o primeiro kernel Linux. Torvalds estava familiarizado com o MINIX. Na verdade, seu primeiro kernel foi desenvolvido no MINIX usando o compilador GCC de Richard Stallman.

Torvalds decidiu fazer seu próprio sistema operacional que superava as limitações do MINIX projetado para ensino. Em 1991, fez sua anúncio famoso no MINIX Usenet grupo, pedindo comentários e sugestões sobre seu projeto.

O Linux não é realmente um clone do Unix. Se o Linux fosse um clone do Unix, seria o Unix. Não é, é tipo Unix. A palavra “clone” implica que uma pequena parte do original é cultivada em uma nova réplica célula por célula do original. O Linux foi criado de novo, para ter a aparência do Unix e para atender às mesmas necessidades. É menos um clone e mais um replicante.

Mas de qualquer forma, o Linux era um kernel procurando por um sistema operacional; GNU era um sistema operacional procurando por um kernel. Em retrospectiva, o que aconteceu a seguir parece inevitável. Também mudou o mundo.

Quem faz o desenvolvimento?

Uma distribuição Linux é a soma de muitas partes diferentes, extraídas de muitos lugares diferentes. O kernel do Linux, o conjunto GNU de utilitários principais e os aplicativos da terra do usuário são combinados para tornar uma distribuição viável. E alguém precisa fazer isso combinando, mantendo e gerenciando — assim como alguém precisa desenvolver o kernel, os aplicativos e os utilitários principais. Os mantenedores da distribuição e as comunidades de cada distribuição desempenham seu papel em dar vida a uma distribuição Linux tanto quanto os desenvolvedores do kernel.

O Linux é o resultado de um esforço colaborativo distribuído realizado por voluntários não remunerados, por organizações como Canônico e chapéu vermelhoe indivíduos patrocinados pela indústria.

Cada Unix comercial é desenvolvido como uma única entidade coerente usando instalações de desenvolvimento internas ou terceirizadas rigidamente controladas. Muitas vezes, eles têm um kernel exclusivo e são projetados especificamente para as plataformas de hardware fornecidas por cada fornecedor.

Os derivados gratuitos e de código aberto do fluxo BSD Unix, como FreeBSD, OpenBSD, e DragonBSD, use uma combinação de código BSD legado e novo código. Eles agora são projetos apoiados pela comunidade e gerenciados de forma semelhante às distribuições Linux.

Padrões e Conformidade

Em geral, o Linux não é nem Especificação Unix Simples (SUS) compatível nem POSIX complacente. Ele tenta satisfazer ambos os padrões sem ser escravo deles. Houve uma ou duas — literalmente, uma ou duas — exceções, como Inspur K-UX, um Linux chinês compatível com POSIX.

Um verdadeiro Unix, como as ofertas comerciais, é compatível. Alguns derivados do BSD, incluindo todas as versões do macOS, exceto uma, são compatíveis com POSIX. Os nomes das variantes, como AIX, HP-UX e Solaris, são todas marcas registradas de suas respectivas organizações.

Marcas registradas e direitos autorais

Linux é uma marca registrada de Linus Torvalds. O Fundação Linux administra a marca em seu nome. O kernel Linux e os utilitários principais são lançados sob várias licenças GNU “copyleft” Licenças Públicas Gerais. O código-fonte está disponível gratuitamente.

Unix é uma marca registrada da Grupo aberto. É protegido por direitos autorais, proprietário e de código fechado.

O FreeBSD é protegido por direitos autorais pela Projeto FreeBSD, e o 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á muita diferença visível. Devido aos padrões e conformidade POSIX, o software escrito em Unix pode ser compilado para um sistema operacional Linux com um esforço limitado de portabilidade. Scripts de shell, por exemplo, podem ser usados ​​diretamente no Linux em muitos casos com pouca ou nenhuma modificação.

Alguns dos utilitários de linha de comando têm opções de linha de comando ligeiramente diferentes, mas essencialmente o mesmo arsenal de ferramentas está disponível em qualquer plataforma. Na verdade, da IBM AIX tem um Caixa de ferramentas do AIX para aplicativos Linux. Isso permite que o administrador do sistema instale centenas de pacotes GNU (como Bash, GCC e assim por diante).

Os diferentes sabores do Unix têm diferentes interfaces gráficas de usuário (GUI) disponível para eles, assim como o Linux. Um usuário Linux familiarizado com GNOMO ou Amigo terão que sentir seu caminho na primeira vez que encontrarem KDEName ou Xfce, mas eles vão buscá-lo em breve. É semelhante com a variedade de GUIs disponíveis no Unix, como Motivo, Ambiente de Trabalho Comum, e as X Sistema Windows. Eles são todos semelhantes o suficiente para serem navegáveis ​​por qualquer pessoa que esteja familiarizada com os conceitos de um ambiente de janela com diálogos, menus e ícones.

Você aprenderá mais sobre as diferenças ao administrar os sistemas. Por exemplo, existem diferentes iniciar mecanismos. Derivados do System V Unix e os fluxos BSD têm sistemas init diferentes. As variantes gratuitas do BSD mantiveram os esquemas de inicialização do BSD. Por padrão, as distribuições Linux usarão um sistema init derivado do Unix System V ou systemd.

Stick Shift vs. Automático

Se você pode dirigir um, pode dirigir o outro – mesmo que seja um pouco para começar.

Colocando o preço de lado, as diferenças de filosofia, licenciamento, modelo de desenvolvimento, organização comunitária e o tipo e estilo de governança são maiores e mais significativas do que as diferenças nos sinalizadores de linha de comando entre, digamos, uma versão do grep e outro.

As maiores diferenças não são as que você vê na tela.