A resposta mais simples e correta para esta pergunta pode ser:
Linux é um kernel de código livre criado em 1991 por Linus Torvalds, que segue o padrão POSIX
No entanto, esta resposta não satisfaz a curiosidade de quem não sabe:
- O que é um kernel?
- O que é código livre?
- O que é POSIX?
- O que o nome Linux significa?
- Por que o Linux é tão popular?
E eu pretendo responder a tudo isso nesta primeira aula.
Parte I - UNIX, o antepassado do LINUX
Antes que você possa responder o que é Linux, é preciso conhecer o POSIX, que nasceu por consequência do UNIX. O UNIX é o sistema operacional antepassado do Linux, no qual o Linux foi (indiretamente) baseado.
Sistema Operacional UNIX
- Em 1969, foi concebido um sistema operacional chamado UNIX
- Dentro do Bell Labs
- Por Ken Thompson, Dennis Ritchie e outros
- Foi licenciado comercialmente por diversas empresas, gerando múltiplas versões diferentes do Unix
- Originalmente desenvolvido em linguagem Assembly
- Diz a lenda que Ken Thompson escreveu a primeira versão do Unix em 3 semanas

Sistema de arquivos do UNIX
- O UNIX nasceu originalmente como um simples sistema de arquivos para o PDP-7, desenvolvido por Ken Thompson
- Árvore de diretórios
- Para navegar no sistema de arquivos, utiliza-se comandos como
ls,pwdecd

Características do UNIX
- Multi-user e multiprocess
- Sistema de arquivos (filesystem) com diretórios
- Arquivos especiais (
/dev/*) - Árvore de processos (fork)
- Redirecionamento de I/O
<,>e Pipe| - Separadores de comandos (
;e&) - Sistema
init - System Calls
- Traps (Core dump, interrupt, quit)
Programas inclusos no UNIX
- Editor de texto
ed - Assembler
as make- Shell UNIX
sh - Utilitários - desde básicos como
cd,ls,cp,grep,find, até gerenciais comopasswd,kill,ps mail- nas versões iniciais, funcionava apenas para troca de mensagens entre usuários de um mesmo computadorman- manual- Compilador C
cc(a partir de 1973) - Jogos como xadrez e blackjack
A Linguagem de Programação C
- Em 1971, Ken Thompson, um dos criadores do Unix, iniciou o desenvolvimento de um compilador da linguagem Fortran para o Unix;
- Este projeto acabou se transformando na linguagem chamada “B”;
- Então, Ritchie juntou-se com outro pesquisador do Bell Labs, Brian Kernighan, e desenvolveu a evolução da linguagem B, que foi denominada “C”.

A era “C”
- Os pesquisadores do Bell Labs refizeram todo o código do Unix na linguagem C
- Isso permitiu a portabilidade do sistema para múltiplas arquiteturas
- Antes o Unix era somente compatível com os computadores PDP-7, PDP-9 e PDP-11
- Além disso, o Unix passou a contar com um compilador C (
cc) - No total, foram 2 anos de desenvolvimento até esta versão do Unix
- Em 1977, o número de sistemas Unix instalados era de aproximadamente 500
- 125 desses estavam em universidades
Diferentes versões do UNIX
A partir do momento que o código do Unix foi reescrito em C, sua popularidade aumentou exponencialmente. Em 1984, haviam 100,000 instalações UNIX em todo o mundo. E com essa nova versão, vieram também outras distribuições licenciadas do Unix, tais como:
- System V (AT&T)
- University of California, Berkeley (BSD)
- Microsoft (Xenix)
- Sun Microsystems (SunOS/Solaris)
- HP/HPE (HP-UX)
- IBM (AIX)
5 anos depois, em 1989, haviam 1.2 milhões de instalações.
Parte II - O que é o Kernel?
O Kernel é a parte mais central de todo sistema operacional. Uma possível tradução de “Kernel” é “núcleo”, ou então “centro”. O Kernel realiza as ações mais primitivas de um sistema, e o Unix já possuía um Kernel.
Estrutura do Sistema Operacional UNIX
No Unix, o Kernel assume funções como:
- Gerenciamento de processos
- Leitura e escrita de arquivos
- Controlar discos rígidos e dispositivos periféricos (teclado, monitor, impressora, discos)
- Alocação de memória RAM aos processos

Syscalls - chamadas de sistema
- Em volta do Kernel, há o shell
sh, que foi chamado assim por ser como uma “casca” do Kernel. - O shell tem como função executar comandos e programas de maneira interativa.
- Quando o shell e outros programas necessitam executar ações privilegiadas, estes devem solicitar ao Kernel.
- Essa solicitação é denominada System call ou simplesmente Syscall.
- O Kernel então executa a ação solicitada e retorna o resultado ao programa que fez a chamada.
Por exemplo, suponha que você deseja ler o conteúdo de um arquivo chamado “report.txt” em um editor de texto. O seu editor não possui permissão para ler o arquivo do disco rígido. Para isso, ele deve solicitar ao Kernel que abra o arquivo com a syscall open. Logo, os programas de computador dependem do Kernel para funcionarem.
O padrão POSIX
- A fim de padronizar os sistemas UNIX, foi definido o padrão IEEE 1003.
- Esse padrão foi denominado POSIX, que significa Portable Operating System com o sufixo “IX”, herdado do UNIX.
- O POSIX determinou partes fundamentais do sistema operacional, tais como:
- como as syscalls devem ser implementadas
- como utilitários como
grep,lseseddevem se comportar - formato de arquivos e estrutura de diretórios
- conjunto de caracteres, localização e variáveis de ambiente
- expressões regulares (regex)
- dispositivos de entrada e saída
- Os sistemas compatíveis com o POSIX devem seguir essa especificação à risca.
Parte III - O projeto GNU e a Free Software Foundation
Com o padrão POSIX definido, quase todas as peças estavam se encaixando para que o Linux nascesse. Porém, um ator revolucionário ainda entraria em cena para mudar a história.
“Free Unix!”
- Em 1983, o cientista do MIT Richard Stallman anunciou que estava trabalhando em um sistema operacional totalmente compatível com o Unix, chamado GNU (Gnu’s Not Unix).
- Compatível com o UNIX = POSIX
- O GNU seria um Kernel + todas as utilidades necessárias para programar em C
- compilador C
- editor de texto
- shell
- linker e assembler
- Além disso, o GNU seria compatível com os programas já existentes feitos para o Unix
- E ainda propôs melhorias, como nomes de arquivos mais longos
- Stallman havia participado da criação do padrão POSIX (e inclusive cunhou o nome POSIX)
- Para contextualizar, nessa época a Internet ainda não existia
Veja também: anúncio inicial do projeto GNU
Free Software Foundation
Para que o GNU pudesse ser verdadeiramente livre para todos, Stallman precisou criar uma licença “copyleft”, chamada GPL (GNU General Public License). A GPL define que o software disponibilizado sob esta licença é completamente gratuito e sua distribuição deve ser livre. Mas talvez o ponto mais importante de todos seja este: o software livre pode ser modificado por qualquer pessoa, e até mesmo redistribuido - contanto que esta nova versão seja também tão livre quanto.

Parte IV - Linus
- Em 1991, o estudante da universidade de Helsinki Linus Torvalds adquire um computador Intel 80386 (i386)
- O processador executava na frequência 12.5 MHz
- 10x mais rápido que o PDP-11, que executava em 1.25 MHz
- Linus começou a brincar com seu 80386 escrevendo pequenos programas

MINIX
- Livro “Operating Systems Design and Implementation” de Andrew S. Tanembaum (1988)
- O minix foi criado para o aprendizado de programação, com fins didáticos
- Era um Kernel simples + alguns utilitários mais básicos
- Linus começou a utilizar o minix em seu 80386
- No entanto, alguns recursos do minix traziam insatisfação para Linus, em especial o seu emulador de terminal
Linux
- Partindo deste princípio, Linus iniciou o desenvolvimento de um emulador de terminal para o 80386, que juntamente com um bootloader evoluiu para um kernel básico
- Linus conseguiu portar o GCC, compilador C do projeto GNU, para seu pequeno Kernel, além do shell
bash - Linus divulgou seu pequeno projeto de “hobby” para o grupo de usuários do minix

GNU/Linux
- Com a evolução do projeto de Torvalds, e a contribuição de inúmeros voluntários e usuários, o projeto cresceu muito em popularidade nos anos subsequentes
- O Linux tornou-se portável, ou seja, pôde ser executado em outras arquiteturas além da i386
- Foi distribuído sob a licença GPL
- O projeto GNU possui um Kernel chamado
hurd, que não estava maduro o suficiente para competir com o Linux - Os sistemas operacionais com Kernel Linux + GNU começaram a nascer e se popularizar
Os anos seguintes
- Nos anos 1990, o Linux cresceu ainda mais em popularidade
- Nasceram versões como a Slackware, Debian e Red Hat
- E nos anos 2000 o Linux se popularizou ainda mais com a criação do Ubuntu Linux
- O Sistema Operacional Android é uma distribuição Linux
- Atualmente, a maioria esmagadora dos serviços de computação são desenvolvidos e executados em sistemas Linux
- Além de dispositivos IoT, smartphones, entre outros
Parte V - Próximos passos
Por que utilizar Linux
- Você já utiliza Linux (mas não sabe)
- Filosofia Free Software
- Até o Windows tem o WSL
- Desenvolvimento de software
- Docker
- IoT
- Servidores e supercomputadores
Como aprender a utilizar o Linux?
- LPI - Linux Professional Institute
- https://learning.lpi.org/en/
Para saber mais
- Podcast com Brian Kernighan, co-criador da linguagem C: YouTube
- Entrevista com Linus Torvalds: Computer History Museum
- Livro sobre a criação do Linux: Just for Fun
- Documentário UNIX: YouTube
- História disso tudo: Revolution OS: YouTube
- Website do Richard Stallman: stallman.org
Uma Breve História Sobre os Computadores
Referências
The UNIX TimeSharing System, Dennis M. Ritchie e Ken Thompson, 1974, ACM Symposium on Operating Systems Principles. Disponível em ACM.
The Design of the UNIX Operating System, BACH, 1986, PRENTICE-HALL.
A brief tour of the PDP-11, the most influential minicomputer of all time, Andrew Hudson, 2022, Ars Technica. Disponível em Ars Technica. Acesso em fev/2023.
History and Timeline, The Open Group, 2020. Disponível em The Open Group. Acesso em fev/2023.
Oral History of Linus Torvalds, Computer History Museum, 2008. Disponível em Computer History Museum. Acesso em fev/2023.