Como escolher a distribuição Linux? [guia básico]
O Linux é um sistema operacional criado em 1991 por um estudante de computação finlandês, que queria se conectar ao mainframe Unix da Universidade utilizando o seu PC 386.
Na época a única portabilidade do sistema Unix para PCs era o sistema operacional educacional chamado MINIX.
O MINIX era um sistema operacional mínimo baseado em UNIX, criado pelo renomado professor de computação Andrew S. Tanenbaum, com intuito de ensinar o funcionamento de sistemas operacionais. O licenciamento do MINIX na época limitava o seu uso para questões educacionais, fora outras limitações.
No princípio Torvalds se baseou no MINIX para escrever o seu próprio Kernel e aplicativos básicos, aproveitando muita coisa do MINIX. Mais tarde, todo o código foi substituído por componentes do Projeto GNU.
O Torvalds queria que a sua criação se chamasse “Freax”, um derivado de “Free” (Livre), “Freak” (Aberração) e o “X” do Unix.
Desde o início, o Linux foi uma sensação entre os programadores e apaixonados por tecnologia, sendo distribuído através dos canais de FTP, fóruns de discussão e aprimorado por diversos entusiastas.
Alguns meses depois do lançamento público do “Freax”, Ari Lemmke, colega de Torvalds, renomeou o projeto para “Linux”, com consentimento de Linus.
Hoje o sistema operacional criado por Torvalds é utilizado largamente em toda a infraestrutura da Internet, em todos os super-computadores, em quase todos os celulares através da sua versão embarcada chamada Android.
Isso se deve em grande parte ao licenciamento de software adotado, o GNU GPL, que obriga a livre distribuição do código-fonte, permite o seu aperfeiçoamento, e obriga a livre distribuição do novo código aperfeiçoado.
Distribuições Linux
Por se tratar de um sistema operacional de código aberto, o Linux pode ser alterado e personalizado por qualquer pessoa ou empresa.
Com isso, nos anos 90 surgiram diversos grupos, amadores e empresariais com fins comerciais, que personalizaram o Linux, criando as suas próprias distribuições.
Uma distribuição Linux consiste em:
- Núcleo do sistema operacional, chamado de Kernel;
- Utilitários do projeto GNU;
- Gerenciador de serviços: System V ou Systemd;
- Ambiente gráfico: KDE, Gnome, XFCE, etc;
- Gerenciador de software.
Cada distribuição Linux pode alterar qualquer um destes componentes, personalizando ao gosto do grupo de usuários, ou para um propósito específico, ou aplicação bem definida.
É por isso que existem distribuições voltadas para usuário final para uso em Desktop, como o Fedora, Ubuntu e OpenSuSE, que utilizam ferramentas amigáveis, ambiente gráfico robusto, e as distribuições voltadas para servidores, com propósito de uso eficiente de recursos computacionais, como o Red Hat, Fedora para Servidores, SuSe e o CentOS.
Há ainda a possibilidade de classificar as distribuições pela família de distribuição ao qual ela faz parte. Basicamente existem duas grandes famílias: Debian e Red Hat. Justamente por serem as distribuições estáveis mais antigas, quase todas as outras distribuições existentes em 2020 se baseiam em uma delas.
Lançado em 1993 por Ian Murdock, o Debian é uma distribuição Linux que contou com milhares de voluntários, que compartilharam dos ideais de Richard Stallman, quanto à liberdade dos usuários para usar, distribuir e aprimorar o software.
Em 2004, Mark Shuttleworth e seu time, com objetivo de tornar o Linux o mais amigável possível para os usuários Desktop, aprimorou o Debian, deixando a curva de aprendizado para novos usuários a menor possível, e desse trabalho ele criou a distribuição Ubuntu.
Em 1994, foi criada a primeira empresa comercial totalmente baseada em Linux, chamada de Red Hat Linux. Especificamente voltada para aplicações empresariais, o seu Linux é voltado para uso em servidores, e a sua receita anual de mais de um bilhão de dólares é mantida com contratos de suporte. Em 2019 a Red Hat foi comprada pela IBM por 34 bilhões de dólares. Nada mal para uma empresa de Software livre.
Do Red Hat nasceram outras distribuições como o Fedora, voltado para Desktops e o CentOS para servidores. O Fedora é mantido pela Red Hat, e adota novas tecnologias de forma bem rápida.
Outra empresa antiga de Linux é a SUSE Linux, nascida em 1992 na Alemanha, é uma distribuição conhecida por sua seriedade e também por seu Linux comercial SUSE Enterprise para servidores. EM 2004 a empresa criou o OpenSUSE, uma versão livre e gratuita do Linux, aberta para desenvolvedores externos. O SUSE Linux ficou conhecido por sua ferramenta de gerenciamento de software chamada YaST, que facilita muito a instalação de software, muito antes do Debian e Red Hat criarem ferramentas parecidas (apt e yum).
Sistemas Embarcados
No quesito de sistemas embarcados o Linux também é campeão, justamente por ter código aberto, que facilita adaptações e funcionar num leque enorme de arquitetura de processadores (x86, ARM, IA-64, m68k, MIPS, OpenRISC, PA-RISC, powerpc, s390, Sparc, etc).
Os sistemas embarcados são equipamentos criados para uma funcionalidade específica, mas que nos bastidores são um computador ligado à interfaces específicas. Pode-se citar: multimídia automotivo, smartTVs, carros autônomos, roteadores de internet, instrumentos médicos, automação industrial, sistemas de navegação, etc.
Android
Sem dúvida, com 2,5 bilhões de dispositivos ativos em 2019, o Android é uma forma de Linux embarcado de muito sucesso. Criada em 2003, a empresa Android Inc. inicialmente começou a desenvolver um sistema para ser usado em câmeras digitais. Em 2005 foi adquirida pela gigante Google e transformou-se no sistema operacional mais utilizado em dispositivos móveis.
O Android utiliza uma versão modificada do Kernel do Linux, especialmente desenhado para funcionar com pequenas telas touchscreen. O projeto do Android também conta com uma série de softwares proprietários dos aplicativos do Google, como Calendário, Mapas, Mail e Navegador.
Raspberry Pi
O Raspberry Pi é um computador de baixo custo (US$25), do tamanho de um cartão de crédito, com Wifi, entradas USB, HDMI e som. Além disso possui diversas interfaces de entrada e saída, conhecidas como GPIO, que podem se conectar em outros dispositivos eletrônicos, placas extensoras, sensores, servo-motores, e outros hardwares. Os criadores do Raspberry personalizaram uma versão do Debian para funcionar no Raspberry, chamada de Raspbian.
O Raspberry é um dos vetores do crescimento de dispositivos embarcados, devido a sua versatilidade e preço.
Linux na Nuvem
O termo computação na nuvem foi cunhado para designar o consumo de recursos computacionais em data centers distribuídos, em nuvens públicas ou privadas. Em 2017, estima-se que 90% das aplicações em nuvem executem em Linux.
Os grandes players de computação em nuvem são: Amazon Web Services (AWS), Google Cloud Platform, Rackspace, Digital Ocean, e Microsoft Azure. Todos eles oferecem várias versões de Linux nas suas infraestruturas.
Como Escolher o Sistema Operacional?
A escolha do sistema operacional de um computador geralmente é feita no momento da compra do hardware, pois dificilmente um computador Desktop é vendido sem sistema operacional atualmente.
É com essa premissa que há mais de 25 anos a Microsoft detém fortemente o espaço dos sistemas operacionais de computadores Desktops compatíveis com o IBM PC.
A Apple também fornece o seu sistema operacional UNIX proprietário nos seus computadores, sejam iMacs ou MacBooks, chamado de MacOS. Nos seus celulares, a gigante de Cupertino também executa uma variante do UNIX, chamada de IOS.
É no mercado de servidores que o Linux floresceu, e detém grande parte do ecossistema da Internet, e 100% dos supercomputadores do mundo.
Apesar dos fabricantes quase sempre enviarem o hardware com um sistema operacional pré-instalado, é possível que o usuário troque o sistema operacional para um do seu gosto e que cumpra com os requisitos necessários.
Há cinco anos instalar Linux em um Notebook era algo experimental, e nem sempre a distribuição escolhida era capaz de identificar e fazer uso correto do hardware. Mas isso hoje mudou drasticamente. É perfeitamente possível instalar qualquer grande distribuição Linux com sucesso em praticamente qualquer notebook, sem prejuízo algum de mal funcionamento.
O Linux até tem sido uma escolha sábia para reavivar velhos notebooks, com distribuições leves, capazes de rodar em hardware antigo.
Como Escolher um Sistema Operacional Linux?
O Linux basicamente pode ser dividido em três categorias: empresarial, consumidor e experimental.
As distribuições empresariais podem ser gratuitas ou comerciais, geralmente envolvem um contrato de suporte, e fornecem um sistema operacional robusto e testado exaustivamente, para aplicações e serviços empresariais.
As distribuições desta categoria são:
Existem as distribuições de consumidor final, voltadas para os computadores Desktop, tais como:
- Ubuntu não LTS (Lubuntu, Xubuntu, Kubuntu, etc)
- OpenSUSE
- Fedora Workstation
- Elementaty OS
- Zoring
- Linux Mint
- Deepin
Ainda existem as distribuições experimentais, para hackers e usuários avançados:
Ciclo de Vida
Dependendo da aplicação que o Linux irá executar, é importante considerar o ciclo de vida de suporte do sistema operacional.
Depois que o ciclo de vida de uma versão do software acaba, os desenvolvedores oficiais descartam qualquer suporte, atualização e correção de erros naquela determinada versão. As opções do usuário então neste caso são: fazer as correções por conta própria, ficar a deriva, ou fazer o upgrade de versão.
O ciclo de vida das distribuições Linux pode variar de acordo com a categoria, e também do distribuidor. As versões empresariais costumam manter o suporte ativo de uma versão por 10 anos. Isto é necessário porque nas aplicações empresariais, as mudanças são feitas de forma cautelosa e lenta. É comum hoje o hardware perder a serventia antes do fim do ciclo de vida de um software.
As distribuições voltadas para o consumidor mantêm o suporte através de fóruns, geralmente no site do fabricante, por um período de lançamento de três versões, que geralmente pode durar por volta de 5 anos.
As versões experimentais, geralmente também tem suporte via Wiki, que são construídos de forma ativa, sempre em movimento.
Ainda, é possível encontrar distribuições que colocam disponíveis para o público versões beta dos seus sistemas, que não foram amplamente testados, e podem conter vários bugs, e que não usufruem do desempenho máximo por incluir rotinas de depuração. Depois de inúmeros testes e correções, o fabricante lança uma versão “stable” (estável).
Desktops Gráficos
No seu nascedouro o Linux era um simples shell no padrão Unix, e foi assim por muito tempo. Era algo para feito por programadores para programadores, então ser amigável e bonito não era um requisito importante.
Mas há 5 anos essa narrativa deu lugar a um sistema operacional bonito, com uma variedade de ambientes gráficos e aplicativos de primeira, culminando numa experiência Desktop completa, com tudo que um usuário inexperiente possa ter a mão para trabalhar, se comunicar e divertir.
Sem dúvida uma das belezas do Linux é a sua pluralidade de ambientes gráficos para todos os gostos, através de inúmeras distribuições e ainda assim manter toda a conformidade de ser um sistema operacional padrão.
Ao longo do tempo diversos ambientes gráficos foram construídos para funcionar no servidor de janelas do Linux.
Dentre eles, podemos citar os ambientes KDE, GNOME, XFCE e Cinnamon.
KDE
O KDE é uma grande comunidade de desenvolvedores desde 1996 que desenvolvem um ambiente gráfico multiplataforma conhecido como KDE Plasma. Seu nome deriva de K Desktop Environment, e a letra “K” foi escolhida simplesmente porque vem depois de “L” de Linux. O KDE e seus aplicativos são escritos com o framework Qt.
O objetivo da comunidade KDE é tanto providenciar um ambiente que ofereça os aplicativos e funcionalidades básicas para as necessidades diária quanto permitir que os desenvolvedores tenham todas as ferramentas e documentação necessárias para simplificar o desenvolvimento de aplicativos para a plataforma.
O KDE se baseia no princípio da facilidade de uso e da personalização. Todos os elementos do ambiente gráfico podem ser personalizados: painéis, botões das janelas, menus e elementos diversos como relógios, calculadoras e miniaplicativos. A extrema flexibilidade para personalização da aparência permite até que temas sejam compartilhados pelos usuários.
O gerenciador de janelas KWin é responsável por fornecer uma interface gráfica organizada e consistente, e barra de tarefas intuitiva.
KDE Plasma com Tema OSX |
KDE Plasma outra variação estilo OSX |
KDE Plasma estilo Windows |
GNOME
O GNOME (acrônimo para GNU Network Object Model Environment) é um projeto de software livre para ambiente gráfico também multiplataforma com ênfase especial a usabilidade, acessibilidade e internacionalização.
O Projeto GNOME é mantido por diversas organizações e desenvolvedores e faz parte do Projeto GNU. Seu principal contribuidor e mantenedor é a Red Hat.
O GNOME 3 é o ambiente gráfico padrão de grandes distribuições como Fedora, SUSE Linux, Debian, Ubuntu, Red Hat Enterprise, CentOS e tantos outros.
Há ainda uma divisão do GNOME 2 conhecida como MATE, uma vez que a mudança no ambiente do GNOME 2 para o GNOME 3 foi grande, e alguns usuários simplesmente preferiram ficar com o ambiente mais parecido com o GNOME 2.
Criado por dois mexicanos em 1997, descontentes na época com a falta de software livre para o Framework Qt, utilizado para desenvolvimento de aplicações para o KDE.
Desta forma, eles preferiram utilizar o GTK (Gimp Tool Kit) como framework padrão para o desenvolvimento do GNOME, uma vez que este já era licenciado pela GPL.
O GNOME 1 e 2 seguiram a tradicional área de trabalho com “barra de tarefas”.
O GNOME 3 mudou isso com o GNOME Shell, com um ambiente abstrato onde a alternância entre diferentes tarefas e desktops virtuais ocorre em uma área separada chamada “Visão Geral”.
GNOME 3 no CentOS |
GNOME 3 no Ubuntu |
Figura 6 – MATE no Linux Mint |
Xfce
Xfce é um ambiente de Desktop para sistemas operacionais Unix Like, como Linux e BSD, fundado em 1996.
O Xfce tem objetivo de ser leve, rápido e visualmente atraente. Ele incorpora a filosofia Unix de modularidade e reutilização e consiste em partes separadas empacotadas que, juntas, fornecem todas as funções do ambiente de trabalho, mas podem ser selecionadas em subconjuntos para atender às necessidades e preferências do usuário.
Como no GNOME, o Xfce é baseado no framework GTK, mas é um projeto totalmente diferente.
Ele é muito utilizado em distribuições que tem a intenção de serem leves, especialmente projetadas para rodar em hardware antigos.
O Xfce pode ser instalado em diversas plataformas UNIX, tais como NetBSD, FreeBSD, OpenBSD, Solaris, Cygwin, MacOS X, etc.
Dentre as distribuições que usam o Xfce, podemos citar:
- Linux Mint Xfce edition
- Xubuntu
- Manjaro
- Arch Linux
- Linux Lite
Xfce no Linux Mint |
Xfce no Linux Manjaro |
Cinnamon
O Cinnamon é um projeto de desktop gráfico derivado do GNOME 2, criado pelo pessoal do Linux Mint. Sua experiência de usuário é muito parecida com o Windows XP, 2000, Vista e 7, facilitando a curva de aprendizagem de usuários que tenham migrado destes sistemas operacionais.
Figura 9 – Cinnamon no Linux Mint |
Linha de Comando
É importante dizer que mesmo com um ambiente gráfico bonito, prático e diversificado, é na linha de comando que reside a força do Linux. Para os usuários avançados, é no shell do sistema operacional que a mágica acontece, pois, o Linux permite que o usuário faça o que quiser, com a facilidade de se alterar um arquivo. A concatenação de comandos também permite criar verdadeiros canivetes suíços computacionais.
O acesso ao terminal é simples e rápido. Basta procurar o aplicativo Terminal no ambiente gráfico, ou apertar a sequência de teclas Ctrl-Alt-F1…F2…F3.. para se ter acesso ao terminal.
Linux em Máquinas Virtuais
Impossível falar de um ambiente computacional sem falar em virtualização e contêineres. Os velhos CPD’s nas empresas deram lugar a computação nas nuvens, com ambientes flexíveis.
O termo computação na nuvem foi descrito pela primeira vez em 1997 em documentos da ARPAnet, que foi a rede de computadores precursora da Internet como conhecemos. Ele foi designado para representar uma grande rede de servidores interconectadas e dispersas geograficamente, de modo que cada ambiente é auto-suficiente e independente.
Popularizado por grandes empresas como a Amazon Web Services (AWS), Microsoft Azure e Google Cloud Platform, o termo computação em nuvem serve atualmente para designar computação distribuída, onde recursos computacionais são compartilhados e distribuídos para completar uma determinada tarefa ou aplicação.
O Linux é perfeitamente adaptável a esse tipo de ambiente computacional, que parece que foi feito para ele, em uma simbiose perfeita.
Apesar de ter acesso a hardware cada vez mais eficiente e poderoso, as operações executadas nos servidores físicos tradicionais – ou bare-metal – inevitavelmente enfrentam limites práticos significativos.
O custo e a complexidade da criação e do lançamento de um único servidor físico significam que adicionar ou remover efetivamente recursos para atender rapidamente às demandas é difícil ou, em alguns casos, impossível. Some o custo do servidor, com custo de energia e refrigeração. Custo de link de Internet e ainda de segurança de um bom firewall.
Testar com segurança novas configurações ou aplicativos completos antes do lançamento também pode ser complicado, caro e demorado.
Neste sentido a computação evoluiu para fornecer servidores virtuais, que podem ser criados ou destruídos em poucos segundos, ou mesmo ter a capacidade de aumentar e diminuir rapidamente seu poder computacional.
Isto fornece um diferencial ímpar para as aplicações corporativas, que devem atender às necessidades de negócios em constante mudança.
A virtualização de máquinas envolve as seguintes premissas:
- Acesso do software aos recursos e drivers de hardware de forma indistinguível de uma experiência não virtualizada;
- Deve permitir o controle completo do cliente sobre o hardware do sistema virtualizado.
- Permitir que os recursos físicos de computação, memória, rede e armazenamento sejam divididos entre várias entidades virtuais.
- Cada dispositivo virtual é representado em seus ambientes de software e usuário como uma entidade real e independente.
- Configurados corretamente, recursos praticamente isolados podem fornecer aplicativos mais seguros sem conectividade visível entre ambientes.
- A virtualização também permite que novas máquinas virtuais sejam provisionadas e executadas quase instantaneamente e depois destruídas assim que não forem mais necessárias.
O tipo de adaptabilidade que a virtualização oferece ainda permite que scripts adicionem ou removam máquinas virtuais em segundos … em vez das semanas que demoram para comprar, provisionar e implantar um servidor físico.
Virtualização em Contêiner
Uma VM é um sistema operacional completo cuja relação com os recursos de hardware (CPU, memória, armazenamento e rede) é totalmente virtualizada: ela pensa que está sendo executada em seu próprio computador.
Um hipervisor instala uma VM a partir da mesma imagem ISO que você baixaria e usaria para instalar um sistema operacional diretamente em um disco rígido físico vazio.
Um contêiner, por outro lado, é, efetivamente, um aplicativo, lançado a partir de um modelo semelhante a script, que considera um sistema operacional.
Nas tecnologias de contêiner (como LXC e Docker), os contêineres nada mais são do que abstrações de software e recursos (arquivos, processos, usuários) que dependem do kernel do host e uma representação dos “quatro principais” recursos de hardware (por exemplo, CPU, RAM, rede e armazenamento).
Um contêiner então é um conjunto de um ou mais processos organizados isoladamente do sistema, com sua própria abstração de disco, rede e bibliotecas compartilhadas. Ele tem todos os arquivos necessários à execução dos processos para qual foi criado. No entanto, os contêineres utilizam o Kernel do Host das instâncias em que rodam.
Na prática, os contêiner são portáteis e consistentes durante toda a migração entre os ambientes de desenvolvimento, teste e produção. Essas características os tornam uma opção muito mais rápida do que os modelos tradicionais de desenvolvimento, que dependem da replicação dos ambientes de teste tradicionais.
Como os contêineres são, efetivamente, extensões isoladas do kernel do host, eles permitem oportunidades de computação incrivelmente leves e versáteis.
DevOps e Contêineres
Os contêineres são o casamento perfeito entre desenvolvimento de software e a infraestrutura.
Os contêineres permitem replicar um ambiente de produção em desenvolvimento com muita facilidade, e vice-versa. Todo o ambiente criado para o desenvolvimento de uma aplicação pode ser migrado em segundos para produção com o mínimo de esforço. Todas as configurações, bibliotecas, dependências, arquivos, localização vão junto com a aplicação encapsulada no contêiner com o máximo de portabilidade, configurabilidade e isolamento.
Contêiner são VM’s?
Não exatamente. As duas tecnologias são complementares. Com a virtualização, é possível executar sistemas operacionais (Windows ou Linux) simultaneamente num único sistema de hardware.
Já os contêineres compartilham o mesmo kernel do sistema operacional host e isolam os processos da aplicação do restante do sistema. Isto provê isolamento da aplicação sem a necessidade de se instalar uma máquina virtual completa. Desta forma, as “instâncias de contêiner” podem ser inicializadas, paradas e reiniciadas com maior rapidez do que uma VM tradicional
Imagine os contêineres como apartamentos de um prédio. Cada família mora num apartamento diferente, com a sua cor de parede, com os seus móveis e eletrodomésticos, mas compartilham as áreas em comuns como hall de entrada, elevadores, espaço gourmet, rede de esgoto, água e gás. Já as máquinas virtuais são como um condomínio com várias casas. Cada casa precisa ter o seu muro, jardim, sistema de esgoto, aquecimento, telhado, etc. Dificilmente as casas terão em comum a sua arquitetura, número de quartos, tamanho e configurações. No condomínio as casas só compartilham o sistema de ruas, segurança e alguma infraestrutura, mas, em contrapartida são bem independentes.
Software para Containers
LXC
O pacote LXC serve para criar contêineres, um pouco mais pesados do que um contêiner de aplicação, mas bem mais leve do que uma máquina virtual. Ele contém o seu próprio sistema operacional simples, que faz interface direta com o sistema operacional hospedeiro.
Por conter o seu próprio sistema operacional, algumas vezes o LXC pode ser confundido com uma máquina virtual, no entanto, ele ainda necessita do sistema operacional hospedeiro para funcionar.
Docker
O pacote do Docker também serve para criar contêineres. Desenvolvido pelo Docker, ele possui uma versão enterprise e outra Community. Extremamente leve, ele permite que diversos contêineres executem em um mesmo sistema operacional hospedeiro.
O Docker (saiba o que é docker) necessita executar um serviço no sistema operacional hospedeiro que gerencia as imagens de Docker instaladas. Ele oferece tanto um cliente em modo texto para criar e gerenciar as imagens, quanto um cliente de interface gráfica.
As configurações de criação de contêineres no Docker são gravadas em um arquivo no formato YAML.
Há sem dúvida, uma migração das VMs para os contêineres, justamente pela facilidade de entrega de software e conformidade entre o desenvolvimento e produção.
Conclusão
Você só vai saber qual é a sua versão favorita se você experimentar várias. A minha distro preferida era o OpenSuSe. Hoje uso em um notebook o Fedora Workstation e no outro estou adorando o Zorin OS.
Aprenda muito mais sobre Linux com os treinamentos onlines da Certificação Linux. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.