O que é kernel linux? Onde ele fica? Qual sua importância? O que ele faz? O que é GNU? O nome correto é GNU/Linux ou Linux?
| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. Mais detalhes clicando aqui.
1. O que é o kernel Linux?
Resposta curta
É ele quem faz a ligação entre Software e Hardware, funcionando como uma cola entre os dois!
Resposta longa
Nada acontece sem que o kernel não tenha conhecimento.
O kernel fica no porão, fazendo o trabalho pesado e sujo de fazer aquele monte de circuitos, placas e coisas dentro do seu gabinete, aí, com luzinhas acesas, reagir com a interação com o usuário (teclado, mouse, sensores) e vice-versa (exibindo os resultados na tela do PC, gravando uma mídia de CD, gravando/lendo no HDD, etc).
O usuário vai abrir um programa de sistema e usar a CPU? Vai abrir a calculadora? O Facebook®? Consumir RAM com um editor de vídeos? Rodar um game?
É papel do kernel carregar as instruções, os módulos e a instâncias de sistema que fazem o programa ser usado pela CPU, ser alocado na memória RAM, ser enviado para a placa de vídeo para gerar a imagem na tela do seu PC, etc.
Essa imagem mostra o kernel num bloco vermelho representando bem o que acontece: Tudo que envolve o hardware, seja som, teclado, tela, mouse, etc, é conectado ao software instalado no HDD/SSD, fazendo a ponte entre um gravador de som e o microfone, a ponte entre um game e a placa de vídeo, etc.
Como o kernel cuida lado a lado do hardware, é ele quem detém os módulos (drivers) de Wifi, Bluetooth, placa de vídeo, etc.
Historicamente, o projeto GNU Hurd não havia se desenvolvido bem (e ainda continua muito atrás) porque eles não queriam módulos proprietários em seu sistema. Linus Torvalds apenas desenvolveu um kernel diferente, gratuito e livre, que suportasse os módulos proprietários também, tornando o Linux uma base interessante pra desenvolvedores diversos. Compatível com o projeto GNU, logo tínhamos um sistema baseado em UNIX aberto, livre, gratuito e compatível com os principais hardwares da época.
2. Onde o kernel fica?
Resposta curta
Ele está em /boot, é o arquivo vmlinuz.version.
Esse arquivo é nada mais que um mini-sistema compactado semi completo com uma arvore de diretórios própria, que a BIOS reconhece no momento do boot e possui o primeiro filesystem e os primeiros drivers que serão carregados, como os drivers da memória RAM (você provavelmente nem lembraria que a RAM requer um driver para iniciar!), o driver de controle dos discos rígidos, um driver básico da placa de vídeo para gerar imagem, um driver básico para mouse, etc.
Resposta Longa
O kernel é um conjunto de arquivos, módulos (drivers) e pequenos programas (binários) em diversas pastas no sistema, não apenas o vmlinuz. O vmlinuz é o começo, é com quem a BIOS conversa no momento do boot do computador.
Depois, o kernel uma vez iniciado, carrega o SystemD que é o primeiro processo do sistema e, com a ajuda da gestão de outros processos (daemons), mais módulos e binários são carregados e eles normalmente ficam em /sys. Alguns módulos por exemplo o SystemD, ficam em /lib. Outras partes do kernel, como as diretamente ligadas com a arquitetura e sistema escolhido para o seu computador, ficam em /etc.
Por lidar diretamente com o hardware, os módulos de vídeo, de áudio e etc ficam juntos também nessa pasta.
Sua onipresença, já que diversas de suas partes estão espalhadas em / (raíz) numa distribuição Linux comum, torna estranho definir exatamente onde ele fica. Uma distro Linux possui um pouco do linux em cada parte de seu sistema. Por isso “distro Linux”.
3. Por que “GNU/Linux”?
Em meados de 1984 Richard Stallman estava desenvolvendo um sistema operacional completo (como o Microsoft Windows) com vários programas, interface, etc. Este sistema se chamava GNU. (Acrônimo recursivo de ‘GNU Is Not UNIX’, um sistema operacional parecido com o UNIX, mas só parecido.)
Já estávamos em meados de 1991, e a GNU Foundation não havia terminado o kernel Hurd, a ligação entre seu GNU e o hardware dos computadores. Os motivos são incertos; Eles tinham dificuldade de lidar com o código que tinha falhas, tiveram problemas com maneiras de trabalhar, a própria filosofia da comunidade GNU atrapalhava o desenvolvimento por querer tudo 100% livre e os drivers de hardware são proprietários, etc;
Quando Linus Torvalds desenvolveu o linux, baseado no MINIX, ele não possuía sistema operacional para funcionar. Ele se comunicava com o hardware mas não havia controle por parte do usuário. Era um controle limitado com mínima acessibilidade depois de compilar o bash nele via GCC, o compilador do projeto GNU.
Foi então que uniram o útil ao agradável, adotaram o kernel Linux como núcleo do GNU e o sistema operacional como conhecemos nasceu e foi crescendo.
A importância do GNU hoje vai muito além do shell ou do compilador GCC.
Praticamente tudo que é usado pelos principais sistemas Linux hoje rodam sob GNU. Do gerenciador de boot GRUB, o shell BASH, GNU Cash, EFI, fdisk, OpenMaps…. até partes sensíveis, como a Biblioteca GCC C Library que fornece comunicação entre os softwares e o kernel, quando estes não possuem autorização para fazer SystemCalls diretamente com o kernel.
Na imagem vemos bem como isso funciona na prática, alguns processos conseguem acesso direto, via SystemCall, mas por motivos de segurança nem todo processo pode acessar o kernel diretamente e a maioria não tem condição de comunicar com ele, se não for via GNU C Library.
4. Mas o correto é Linux ou GNU/Linux?
O GNU estava em desenvolvimento a anos mas seu kernel não estava maduro o suficiente e sem ele, o sistema não poderia funcionar. Sem comunicação com o hardware, usuários do GNU não teriam como usar o PC.
O projeto GNU queria um kernel 100% livre e aberto, sem módulos proprietários e/ou licenciados.
O problema é que boa parte do hardware sempre foi proprietário e seus drivers também o são. Os módulos gerados com engenharia reversa pela equipe do projeto GNU demoravam muito tempo para ficar prontos e não tinham a mesma qualidade e estabilidade de se usar módulos proprietários.
Linus Torvalds apareceu em boa hora com seu kernel “caseiro”, já com um código relativamente sólido que já executava o shell GNU BASH e o compilador GCC, bases fundamentais para desenvolver softwares neste sistema.
O Linux “salvou” o projeto GNU e pela glória o conjunto da obra foi chamado, por muito tempo, de GNU/Linux.
Incorretamente, de acordo com Stallman, afinal o termo LINUX® também é marca registrada do Linus Torvalds! Enquanto que “GNU” é um termo open source, de domínio público. Até na terminologia o Linux tem controvérsia.
Mas a terminologia mais apropriada é Linux, pois o GNU já não é presente em todas as distribuições Linux – sendo o Android um fork de uma distro Linux não-GNU e o AlpineLinux ser uma distro que usa o BusyBox em vez do GNUtils – e, dentre outros motivos, o Linux como kernel por si só é um sistema operacional por apresentar um compilador, drivers e um shell (SH) em seu interior.
É possível iniciar um computador somente com o BusyBox e o kernel Linux, sem fazer uso de nenhuma ferramenta GNU! Portanto, por definição de código, o kernel Linux pode ser chamado de sistema-kernel Linux ou mesmo sistema Linux, por ser um sistema mesmo que mínimo, que permite iniciar e controlar um computador. Mas isso será tratado em um post futuro aqui do site.
Por uma questão de contexto e interpretação, recomendo que chamem o sistema Linux de Linux, enquanto chamem o kernel Linux de kLinux, tal qual o pessoal do projeto FreeBSD, cujo kernel se chama FreeBSD e para evitar más interpretações é denominado apenas de kFreeBSD para seu kernel e FreeBSD para seu sistema!
5. Por que o Linux ganhou os holofotes?
Os motivos são diversos.
O mais plausível esteja no fato dele ser baseado no UNIX® da AT&T, reconhecido como um dos mais completos e complexos sistemas operacionais já criados; além disso, ele é gratuito, livre e completo. Milhares de desenvolvedores monitoram o código atrás de erros e conflitos enquanto outros milhares adicionam melhorias, drivers e novos módulos ao kernel constantemente. Ele possui a otimização e segurança ideais para data centers, motivo pela qual ele é usado em todos os 500 melhores supercomputadores do mundo!
Nos últimos anos ele se tornou um concorrente de peso para os sistemas operacionais domésticos como Microsoft Windows e Apple Mac OS X, que são pagos e possuem software proprietário. Apesar da quantidade de usuários ativos hoje beirar os 2.5% de todos os computadores mundiais domésticos, lentamente ele vai ganhando seu espaço enquanto ganha mais suporte das desenvolvedoras.
Até então o sistema recebia pouco suporte de empresas de games; Esse quadro começou a mudar quando a Valve começou a trazer games nativos para Linux e outras começaram a ver o sistema com bons olhos, e tende a mudar mais ainda quando o Steam Deck e o SteamOS 3.0 forem lançados, prometendo trazer toda a biblioteca da Valve compatibilizada para Linux!
#UrbanCompassPony
Autodidata, me aprofundei em sistemas operacionais baseados em UNIX®, principalmente Linux. Também procuro trazer assuntos correlacionados direta ou indiretamente, como automação, robótica e embarcados.