𝖂𝖎ƙ𝖎𝖊

Linux (núcleo)

Disambig grey.svg Nota: Este artigo é sobre o Kernel Linux. Para sistemas que executam sobre este núcleo, veja Linux.
Linux
Logótipo
Captura de tela
Inicialização do Linux 5.13.5
Autor Linus Torvalds
Desenvolvedor Linus Torvalds, Andrew Morton e milhares de colaboradores[1]
Plataforma alpha, arm, hppa, ia64, loongson, m68k, mips, ppc, ppc64, s390, s390x, sh, sparc32, sparc64, x86, x86-64
Modelo do desenvolvimento Software Livre
Lançamento 17 de setembro de 1991 (33 anos)
Versão estável [+/-]
Versão em teste [+/-]
Idioma(s) Inglês
Escrito em C (~97%), C++, Assembly, Perl, shell e outras.[2][3]
Sistema operacional Tipo unix
Gênero(s) Núcleo monolítico
Licença GNU GPLv2 (apenas)[4][5] e vários borrões binários com licenças variadas[6]
Estado do desenvolvimento Corrente
Página oficial www.kernel.org
Repositório git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
A onipresença da Núcleo Linux

O Kernel Linux (Linux kernel em inglês) é um núcleo monolítico de código aberto para sistemas operacionais tipo UNIX. Desenvolvidas para ambos os sistemas computacionais, seja computadores pessoais ou servidores, normalmente na forma de distribuições Linux, e embarcados em diversos dispositivos como roteadores, pontos de acesso sem fio, PABXs, receptores de televisão, Smart TVs, DVRs, e dispositivos de armazenamento em rede. Os sistemas operacionais Android para Tablets, Smartphones, e Smartwatches utilizam serviços providos pelo núcleo Linux para implementar as suas funcionalidades. Enquanto a adoção em computadores de mesa seja considerada baixa, sistemas baseados em Linux dominam praticamente todos os outros segmentos da computação: dos pequenos dispositivos móveis aos robustos Mainframes. Segundo o ranking dos 500 supercomputadores mais poderosos do mundo, de novembro de 2017, todos da lista dos 500 executam Linux.[7]

O núcleo (kernel) Linux foi concebido e criado em 1991 por Linus Torvalds[8] para o seu computador pessoal, sem qualquer intenção multiplataforma, mas desde então tem se expandido, suportando um grande número de arquiteturas de computadores, muito além dos outros sistemas operacionais ou kernels. O Linux rapidamente atraiu desenvolvedores e usuários que os adotaram como núcleo para outros projetos de software livre, nomeadamente o sistema operacional GNU.[9] O núcleo Linux recebeu contribuições de aproximadamente 15 600 programadores de mais de 1400 companhias, incluindo algumas das maiores vendedoras mundiais de software e hardware.[10]

Como um núcleo não trabalha sozinho, o projeto "GNU" ajudou Linus Torvalds, criando assim o GNU/Linux.

A interface de programação de aplicações do núcleo Linux (Linux kernel API, em inglês), na qual programas interagem com o kernel/núcleo, é projetada para ser extremamente estável, e jamais quebrar o espaço de usuário (os programas, especialmente aqueles com interface gráfica, podem ser igualmente dependentes a outras APIs). Como parte das funcionalidades do núcleo, os controladores de dispositivos (drivers) gerem o hardware; especialmente criados para serem também muito estáveis. Já a interface entre o núcleo e os módulos carregáveis, diferente de outros núcleos e sistemas operacionais, no entanto, não requerem tal estabilidade por design/projeto.[11]

Desenvolvido por contribuições de todo o mundo, sob licença GNU General Public License versão 2 (GPLv2),[5][12] e discussões diárias sobre seu desenvolvimento na LKML (lista de discussão do kernel), o núcleo Linux é um proeminente exemplo de software livre e de código aberto,[13] com versões mantidas por mais de seis anos, e diversas imagens de firmware distribuídas sob licenças não livres[14] até a versão 4.13.[15][16]

O Linux foi concebido pelo estudante do Departamento de Ciência da Computação da Universidade de Helsinki na Finlândia,[8] Linus Torvalds com ajuda de vários programadores voluntários por meio de um grupo de discussão da Usenet em 1991.

História

Em março de 1991, Linus Torvalds, um estudante com 21 anos de idade na Universidade de Helsínquia, Finlândia começava a trabalhar em algumas ideias simples para o desenvolvimento do núcleo de um sistema operacional (SO), como um projeto particular, inspirado pelo seu interesse no sistema operacional Minix, um pequeno sistema UNIX desenvolvido pelo professor Andrew S. Tanenbaum com fins educacionais.[17]

Os passos de desenvolvimento deste primeiro núcleo para um sistema operacional proposto por Linus Torvalds podem ser acompanhados pela lista de discussão comp.os.minix, cujas mensagens podem ser vistas em groups.google.com/g/comp.os.minix. Torvalds começou com um alternador de contexto na linguagem de montagem do Intel 80386 e um controlador de terminal. Em 03 de junho de 1991 Torvalds tentou obter a especificação POSIX,[18] então em 26 de agosto de 1991, Torvalds postou a seguinte mensagem para comp.os.minix, um grupo de notícias na Usenet:

Depois da mensagem anterior a comunidade MINIX contribuiu com códigos e ideias para o Linux. Na verdade muitas pessoas contribuíram com o desenvolvimento de códigos para o projeto.

É valido lembrar que durante a idealização deste sistema operacional, proposto por Linus Torvalds, o mundo basicamente tinha como sistemas operacionais:

Na época, o Projeto GNU tinha criado muitos dos componentes exigidos para um sistema operacional livre, mas o seu próprio núcleo estava incompleto e indisponível. O sistema operacional BSD tinha problemas legais. Então, devido a isto, apesar da funcionalidade reduzida das primeiras versões, o Linux acumulou desenvolvedores e usuários (português brasileiro) ou utilizadores (português europeu) rapidamente.[20]

Na data de setembro de 1991, a versão 0.01 do Linux foi lançada e enviada para o servidor FTP (ftp.funet.fi) da Universidade de Helsínquia de Tecnologia (em Predefinição:Língua com nome), possuía 10 239 linhas de código. Em setembro de 1991, a versão 0.02 do Linux foi lançada.[21]

Em dezembro de 1991, o Linux 0.11 foi lançado. Esta versão foi a primeira a ser auto-hospedada - O Linux 0.11 podia ser compilado por um computador executando Linux 0.11. Quando lançada a versão 0.12 em fevereiro de 1992, Torvalds adotou a licença GPL - GNU General Public License no lugar da licença anterior, escrita por ele mesmo e que não permitia redistribuição comercial.[22]

Um grupo de notícias conhecido como alt.os.linux foi criado e em 19 de janeiro de 1992, a primeira mensagem do alt.os.linux foi enviada.[23] Em 31 de Março de 1992 o alt.os.linux passou a se chamar comp.os.linux.[24]

O Sistema de Janelas X, que é um ambiente gráfico, logo foi portado para o Linux. Em março de 1992, a versão 0.95 do Linux foi a primeira a ser capaz de executar o sistema de janelas X. Este longo salto de número de versão, da 0.1x para 0.9x, foi devido a impressão de que uma versão 1.0, sem que nenhum recurso faltasse era iminente. No entanto, isto acabou provando-se demasiado otimista e de 1993 até o começo de 1994, apareceram 15 versões em desenvolvimento da versão 0.99 do núcleo Linux.

Finalmente em 14 de março de 1994 é lançado o núcleo 1.0.0 do Linux, com 176 250 linhas de código. Em março de 1995, aparece o Linux 1.2.0 com 310 950 linhas de código.

A versão 2 do Linux, lançada em 09 de junho de 1996, foi sucedida por versões mais importante sob o cabeçalho da versão 2:

  • 25 de janeiro de 1999 - Linux 2.2.0 é lançado (1 800 847 linhas de código);
  • 18 de dezembro de 1999 - Patches do mainframe da IBM para o 2.2.13 são publicados, permitindo que o Linux seja usado em máquinas de classe empresarial;
  • 04 de janeiro de 2001 - Linux 2.4.0 é lançado (3 377 902 linhas de código);
  • 17 de dezembro de 2003 - Linux 2.6.0 é lançado (5 929 913 linhas de código);
  • 20 de outubro de 2010 - Linux 2.6.36 é lançado (13 419 556 linhas de código).[25]

A versão 3 do Linux foi lançada em 22 de julho de 2011 em comemoração aos 20 anos do Linux, este núcleo foi lançado com 14.647.033 linhas de código. O núcleo Linux a principio só mudava o primeiro número da versão em caso de mudanças drásticas, mas para comemorar os 20 anos do Linux e reduzir os números de controles de versão, Torvalds resolver mudar para a versão 3 mesmo sem mudanças significativas no núcleo Linux. Em outubro de 2011 é lançada a versão 3.1 do núcleo Linux e em 05 de janeiro de 2012 é apresentada ao mundo a versão 3.2 do Linux com 14 998 737 linhas de código.[26]

Aspectos Legais

Termos de Licenciamento

Inicialmente, Linus Torvalds distribuiu o Linux sob uma licença que proibia qualquer aproveitamento comercial. Entretanto, a partir da versão 0.12 do Linux, foi adotada uma licença GPL GNU General Public License, que permite a distribuição e venda de versões possivelmente alteradas ou não do Linux. Uma restrição da licença GPL é que esta exige que todas as cópias sejam distribuídas sob a mesma licença, em companhia do código fonte completo correspondente.

Torvalds descreveu o licenciamento sob a GPL como "a melhor coisa que eu já fiz".[27]

Licenciamento GPL

Ver artigo principal: GNU General Public License

Atualmente, o Linux está licenciado sob a versão 2 da GPL[5] e diferentemente de muitos outros softwares, sob licença GPL, o Linux não tem nenhuma opção para utilizar versões mais recentes da GPL (diferente de muitos outros softwares GPLs). Existem muitas controvérsias sobre quão fácil é modificar a licença do Linux da GPLv2 para outra versão de GPL, tal como a GPL versão 3 e se isto é realmente desejável para o Linux.[28] O próprio Linus Torvalds indicou, até o lançamento da versão 2.4.0, que o seu código está somente sob a versão 2 da GPL.[29] Os termos GPL afirmam que se nenhuma versão é especificada, então qualquer versão pode ser utilizada. Segundo Alan Cox, pouquíssimos colaboradores Linux especificaram uma versão em particular da GPL.[30] Em julho de 2006, uma pesquisa com os 29 principais desenvolvedores do Linux, indicou que 28 preferiam a GPLv2 ao então atual rascunho da GPLv3. Torvalds comentou, "Eu acho que muitos forasteiros... acreditaram que eu era o único estranho no ninho, porque eu não me mostrava publicamente um fã da GPLv3".[31] Desta forma, o núcleo Linux pode ser visto como sendo licenciado quase que exclusivamente pela GPLv2, já que Linus Torvalds e grande parte dos desenvolvedores utilizam esta licença e não existem perspectivas destes utilizarem a versão 3.

Módulos carregáveis do núcleo e firmware

Ver artigo principal: Módulo carregável do núcleo

É debatido se módulos carregáveis do núcleo (em Predefinição:Língua com nome) devem ser considerados Copyleft sob a lei de direito autoral dos Estados Unidos da América (EUA), pois desta maneira os módulos devem se enquadrar nos termos da GPL. Ou seja, se um módulo do núcleo Linux também deve assumir, por padrão, a mesma licença GPL utilizada pelo núcleo Linux. Torvalds acredita que módulos que utilizem um subconjunto limitado e público das interfaces do núcleo Linux podem, algumas vezes, não ser trabalhos derivados, permitindo assim que alguns drivers binários e módulos não herdem a licença GPL do Linux. Entretanto, muitos colaboradores do Linux discordam desta interpretação, até Torvalds concorda que muitos módulos são trabalhos derivados, ele próprio escreveu: "módulos do núcleo SÃO derivados 'por padrão'". Mas em contrapartida, Torvalds também já disse que: "uma área indefinida em particular é algo como um controlador que foi originalmente escrito para outro sistema operacional (isto certamente não é um trabalho derivado originalmente do Linux). [...] ISTO é uma área indefinida e esta é a área em que eu acredito que alguns módulos podem ser considerados como trabalhos não derivados, simplesmente por que eles não foram projetados para o Linux e não dependem de nenhum funcionamento específico dele."[32] Controladores gráficos proprietários, em particular, são amplamente discutidos. Enfim, é provável que tais questões só possam ser resolvidas em um tribunal.

Um ponto de controvérsia sobre o licenciamento é o uso que o Linux faz de "borrões binários" de firmware para suportar dispositivos de hardware. Estes arquivos (português brasileiro) ou ficheiros (português europeu) são distribuídos sob grande variedade de licenças, muitas delas restritivas e seu código-fonte fundamental exato é desconhecido. Richard Stallman alega que estes "borrões" tornam o Linux parcialmente software de código fechado e que distribuir o Linux pode ser uma violação da GPL, que exige que "código-fonte completo correspondente" esteja disponível.[33] Em resposta, a FSFLA iniciou um projeto chamado Linux-libre, para criar um núcleo completamente livre sem objetos proprietários, o que é usado por algumas distribuições completamente livres.[34][35] Em 15 de dezembro de 2010, o projeto Debian anunciou que a próxima versão estável do Debian utilizaria um núcleo livre de códigos proprietários.[36]

Marca registrada

O Linux é uma marca registrada por Linus Torvalds nos Estados Unidos[37] e em alguns outros países. Isto é resultado de um incidente no qual William Della Croce Jr, que não era envolvido no projeto Linux, registrou o nome Linux[38] e depois pediu royalties pelo uso da marca Linux.[39] Vários apoiadores do Linux integraram um conselho legal e entraram com uma ação contra Della Croce,[40] que em 1998 concordou em repassar o registro da marca, para Linus Torvalds.[38]

Litigação do SCO

Para mais detalhes consulte Disputas SCO-Linux (em inglês).

Em março de 2003, o Grupo SCO (SCO) entrou com um processo contra a IBM reclamando que esta teria violado direitos autorais que o SCO disse possuir sobre o código fonte do Unix, ao contribuir com porções daquele código para o Linux. Além disso, o SCO enviou cartas para inúmeras companhias avisando que o seu uso do Linux sem uma licença do SCO poderia ser uma violação da lei de direitos autorais, e contou à imprensa que eles iriam processar usuários (português brasileiro) ou utilizadores (português europeu) individuais do Linux. A IBM então prometeu defender os consumidores Linux em seu nome. Esta controvérsia gerou processos pelo SCO contra Novell, DaimlerChrysler (parcialmente indeferido em julho de 2004), e AutoZone, e processos retaliativos pela Red Hat e outras contra o SCO.

No começo de 2007 o SCO preencheu os detalhes específicos do objeto infringido. Não obstante as afirmações anteriores que o SCO era dono por direito de 1 milhão de linhas de código, ele especificou 326 linhas de código, a maioria das quais era inelegível proteção de direitos autorais.[41] Em setembro de 2007, o tribunal no caso Novell decidiu que o SCO não era dono dos direitos autorais do Unix para começo de conversa,[42] embora a Corte de Apelações dos Estados Unidos para o Décimo Circuito tenha decidido em setembro de 2009 que a questão de quem era o dono propriamente dito dos direitos autorais ficava para o júri decidir.[43] O caso foi decidido em 30 de março de 2010, em favor da Novell.[44]

Submissão do Hyper-V pela Microsoft

Em junho de 2009 a Microsoft "contribuiu" com 20 000 linhas de código para o Linux. A contribuição consistia de controladores (em Predefinição:Língua com nome) do Hyper-V, que melhoravam a performance do Linux virtualizado no Windows 2008 Hyper-V ou Windows Server 2008 R2 Hyper-V. A Microsoft teve que licenciar seus controladores Hyper-V do Linux sob a GPL, quando o engenheiro chefe da Vyatta e o contribuidor Stephen Hemminger do Linux descobriram que a Microsoft havia incorporado controladores de rede do Hyper-V com componentes de código livre e ligado estaticamente a binários de código fechado (com copyright), o que é uma contravenção à licença GPL. Desta forma, a Microsoft contribuiu com os controladores para corrigir a violação da licença, embora a companhia tenha tentado descrevê-lo como um ato caridoso para evitar uma ação legal contra si.[45][46][47][48]

Características técnicas

O Linux suporta multitarefa de antecipação (em ambos modo usuário e modo núcleo), memória virtual, bibliotecas compartilhadas, carregamento por demanda, executáveis de cópia-ao-escrever compartilhados, gerenciamento de memória, o conjunto de protocolos de Internet, e execução em linhas.

Arquitetura

Mapa do Linux e mapa maior e interativo.

O Linux é um núcleo monolítico. Os controladores de dispositivos e as extensões de núcleo são executadas no espaço de núcleo (anel 0 em muitas arquiteturas de CPU), com acesso completo ao hardware, embora algumas exceções sejam executadas no espaço de usuário. O sistema gráfico, que é o ambiente gráfico mais utilizado no Linux, não é executado no núcleo, em contraste com o encontrado no Microsoft Windows.

Preemptividade do modo de núcleo permite que controladores de dispositivos sejam antecipados sob certas condições. Este recurso foi adicionado para aperfeiçoar o tratamento de interrupções de hardware e melhorar o suporte para multiprocessamento simétrico (em Predefinição:Língua com nome). Preemptividade também otimiza a latência, aumentando a responsividade e tornando o Linux mais apropriado para aplicações de tempo real.

Debate entre Tanenbaum e Torvalds

Ver artigo principal: Debate entre Tanenbaum e Torvalds

O fato do Linux ser um núcleo monolítico mais do que um micronúcleo foi o tópico do debate entre Andrew S. Tanenbaum e Linus Torvalds.[49] O debate iniciou em 1992, sobre Linux e arquiteturas de núcleo em geral no grupo de discussão comp.os.minix na Usenet.[50] Tanenbaum argumentou que micronúcleos são superiores a núcleos monolíticos, e portanto, o Linux era obsoleto. Diferentemente de núcleos monolíticos tradicionais, controladores de dispositivos são configurados facilmente como módulos carregáveis, e são carregados ou descarregados durante a execução do sistema. Este assunto foi revisitado em 09 de maio de 2006,[51] e em 12 de maio de 2006 Tanenbaum escreveu uma declaração.[52]

Linguagens de programação

O Linux é escrito na versão da linguagem de programação C suportada pelo GCC, que introduziu inúmeras extensões e mudanças ao C padrão, aliado a várias seções de código menores escritas na linguagem de montagem, na sintaxe e estilos do GCC e "AT&T", da arquitetura alvo.

Muitas outras linguagens foram usadas de algum modo, essencialmente em conexão com o processo de compilação, os métodos pelos quais as imagens inicializáveis são criadas através do código fonte. Estas incluem Perl, Python, e várias linguagens shell script. Alguns controladores podem até ser escritos em C++, Fortran, ou outras linguagens, mas isto é extremamente desencorajado.

Conjunto de ferramentas GNU

O GNU Compiler Collection (GCC ou GNU cc) é o compilador padrão para os fontes Linux mainline e é invocado por um utilitário chamado make. Então, o GNU Assembler (mais freqüentemente chamado de GAS ou GNU as) produz os arquivos objeto a partir do código assembly gerado pelo GCC. Finalmente, o GNU Linker (GNU ld) é usado para produzir um arquivo do núcleo executável estaticamente ligado chamado vmlinux. as e ld são parte de um pacote chamado GNU binutils. As ferramentas mencionadas acima são conhecidas coletivamente como o conjunto de ferramentas GNU. O sistema de compilação do Linux oficialmente suporta apenas o GCC, como um compilador de núcleo e controladores.

Compatibilidade do compilador

Devido às extensões suportadas pela linguagem C, o GCC foi por um longo período o único compilador capaz de compilar o Linux corretamente. Em 2004, a Intel disse ter modificado o Linux para que seu compilador C também pudesse compilá-lo.[53] Outro sucesso foi apresentado em 2009, com um 2.6,22 modificado.[54][55]

Desde 2010, esforços têm sido feitos para compilar o Linux com Clang, um compilador alternativo para a linguagem C;[56] em 12 de abril de 2014, o núcleo oficial quase poderia ser compilado com o Clang.[57][58] O projeto dedicado a este esforço recebeu o nome LLVMLinux em homenagem à infra-estrutura do compilador LLVM sobre a qual o Clang foi construído.[59] LLVMLinux não tem como objetivo bifurcar nem o Linux nem o LLVM, portanto é um meta-projeto composto de patches que são eventualmente submetidos aos projetos a montante. Ao permitir que o Linux seja compilado pelo Clang que, entre outras vantagens, os desenvolvedores do núcleo podem se beneficiar de tempos de compilação mais curtos.[60]

Desde a versão 5.3, o núcleo Linux pode ser compilado com o Clang na versão 9.0 para a arquitetura AMD64[61][62], na versão 5.6 com o Clang 10 para a arquitetura IBM s390[63] e na versão 5.9 para a arquietura x86 de 32-bits.[64][65]

Portabilidade

Samsung Galaxy Note, o smartphone com Android

Predefinição:Vertambém

O Linux não seria projetado para ser portável em seu projeto inicial, a principio ele só seria executado em arquiteturas x386. Entretanto com a ajuda da comunidade, atualmente o núcleo Linux pode ser executado em uma gama extremamente grande de arquiteturas, indo desde um computador de mão iPAQ a um servidor mainframe System z9 da IBM, que é capaz de executar centenas e até milhares de instâncias do Linux simultâneas.

O Linux é o principal sistema operacional dos supercomputadores Blue Gene da IBM. Em junho de 2009, o Linux foi usado como núcleo em mais de 88% dos sistemas na lista Top 500 de supercomputadores.[66]

O Linux hoje funciona em dezenas de plataformas, desde mainframes até um relógio de pulso e várias arquiteturas: x86 (Intel, AMD), x86-64 (Intel EM64T, AMD64), ARM, PowerPC, Alpha, SPARC etc., com grande penetração também em sistemas embarcados, como handhelds, PVR, vídeo-jogos e centros multimídia, entre outros. O Linux possui suporte para muitas arquiteturas de máquinas virtuais.

Além disso, o Linux foi portado para vários dispositivos móveis como o TuxPhone e o iPod da Apple. Sistemas operacionais como o Google Android, o MeeGo (fusão entre o Nokia Maemo e o Intel Moblin), desenvolvidos para dispositivos móveis, utilizam versões modificadas do Linux.[67][68][69]

Processos

Um processo é uma instância de um programa em execução.[70] Todos os processos no Linux têm um pai (processo criador) e um número identificador (PID - Process Identity). O pai de todos os processos em um ambiente Linux é o Predefinição:Mono, cujo PID é 1. Este processo é criado pelo processo 0, que é um encadeamento (thread) do próprio núcleo. O processo Predefinição:Mono irá permanecer em execução até o encerramento do sistema e a sua função é monitorizar e criar os processos que implementam as camadas exteriores do sistema operacional.

Os processos são criados pela chamadas de sistema Predefinição:Mono (processos tradicionais ou heavy weight) e Predefinição:Mono (processos leves ou light weight). Para otimizar a criação de processos tradicionais, o Linux usa o recurso de copy-on-write: quando um processo filho é criado, ele partilha as mesmas páginas de memória do pai. Quando um dos dois tenta escrever na memória, é gerada uma interrupção para o núcleo, que então copia o conteúdo das páginas de memória para novas molduras de páginas e estas são atribuídas ao processo que efetuou a escrita.

Para manter um ambiente multitarefa e possibilitar o multiprocessamento, o Linux mantém algumas estruturas importantes, das quais podemos citar duas: (i) o descritor do processo (Predefinição:Mono), que contém todas as informações relativas ao processo; (ii) uma fila (Predefinição:Mono) de processos por processador. Quando o sistema possui mais de um processador, o agendador do Linux faz o balanceamento de carga entre as filas.

Escalonamento

Para um compartilhamento justo, do processador entre os processos, o Linux usa duas classificações para avaliar qual a prioridade de um processo, sendo estas: (i) determina a responsividade do processo (tempo real, interativo, em segundo plano); (ii) verifica se o processo usa muito tempo de processador (CPU-bound) ou faz muitas operações de entrada e saída (I/O-bound).

Essas duas classes são razoavelmente independentes. Um processo pode executar em segundo plano (um daemon, por exemplo) e ser consumidor de recursos de entrada e saída (um servidor de banco de dados, por exemplo) ou usar muito tempo de processador (tal como, um compilador). Um processo que executa operações em tempo real foi assim definido pelo seu programador, mas o agendador do Linux necessita fazer uma análise heurística para saber se um processo é interativo ou está executando em segundo plano.

O Linux utiliza um sistema de prioridades, no qual um processo que possui prioridade maior tem precedência sobre um de prioridade menor, para obter o processador. A identificação da prioridade de um processo pode ser estática ou dinâmica e varia de 1, a maior prioridade, a 139, a menor. Os números 1 a 99 são atribuídos a processos de tempo real e 100 a 139 são atribuídos a processos tradicionais (interativos e segundo plano).

Um processo é classificado em "primeiro a entrar, primeiro a sair" (em Predefinição:Língua com nome) ou "todos contra todos" (em Predefinição:Língua com nome) e somente será retirado do processador nos seguintes casos: (i) fim de execução; (ii) para ser substituído por um processo de maior prioridade; (iii) executar uma operação de bloqueio; (iv) espontaneamente; (v) é RR e esgotou seu quantum de processamento.

Um processo tradicional tem inicialmente atribuída uma prioridade estática (em geral 120) que determina o seu quantum de processamento, mas pode ter uma prioridade dinâmica, que é o valor analisado pelo agendador quando percorrer a lista de processos para determinar qual irá usar o processador. A prioridade dinâmica pode alterar o valor da prioridade estática em 5 pontos, para mais (penalidade) ou para menos (bônus), dependendo do passado do processo. O passado irá beneficiar o processo se o mesmo ficou muito tempo fora do processador (sleep time). Caso este tempo seja pequeno, o processo será penalizado.

A estrutura anterior pode ser modificada a partir do lançamento do núcleo 2.6.23 ou posterior, com a introdução do "escalonador completamente justo" (em Predefinição:Língua com nome).

Gerenciamento de memória

O Linux utiliza memória virtual que possui pelo menos 4 funções básicas:

  • (i) assegurar que cada aplicação (processo) tenha seu próprio espaço de endereçamento, começando em zero, problema de relocação;[70][71]
  • (ii) proteção de memória, para impedir que um processo utilize um endereço de memória que não lhe pertença;[71]
  • (iii) partilha de memória — processos diferentes podem partilhar código ou dados;[71]
  • (iv) possibilitar que uma aplicação utilize mais memória do que a fisicamente existente (essa é a função mais óbvia).

Seu código divide-se em duas partes. Uma é dependente da arquitetura, onde são definidos o endereçamento — virtual e físico, o tamanho de página e o tratamento das tabelas de páginas. Na parte independente ficam o controle de alocação e liberação de memória e o esquema de substituição páginas.

O Linux utiliza tamanhos de páginas de acordo com a arquitetura. Os processadores x86 utilizam páginas de 4 KiB (padrão), 2 MiB (caso seja utilizado o recurso de Extensão de Endereço de Página (em Predefinição:Língua com nome) – da Intel) ou de 4 MiB. Nas arquiteturas RISC o tamanho padrão é de 8 KiB, mas não é o único.

O endereçamento virtual é dividido em espaço do usuário e espaço do núcleo. O primeiro é privativo de cada processo, com início no endereço lógico zero e terminando no endereço determinado pela macro Predefinição:Mono . O espaço do núcleo é único e começa depois do espaço do usuário. Na arquitetura x86 Predefinição:Mono determina um valor de 3 GiB para o espaço do usuário e 1 GiB para o espaço do núcleo.

O código do Linux é carregado no início do espaço do núcleo, sendo seguido pela área fisicamente mapeável (Predefinição:Mono, estrutura que indexa as páginas físicas e as páginas propriamente ditas). Na arquitetura x86, os últimos 128 MiB do espaço do núcleo são reservados para alocação de memória não contígua e memória alta, limitando a memória física endereçável pelo Linux, na compilação padrão, a 896 MiB.

Um endereço virtual no Linux , é dividido em 5 campos: diretório de páginas (PGD), diretório superior de páginas (PUD), diretório intermediário de páginas (PMD), tabela de páginas (PTE) e deslocamento (offset). A arquitetura x86 possui um espaço de endereçamento de 32 bits; quando são utilizadas páginas de 4 KiB (o padrão) o PUD e o PMD não são utilizados; o PGD e o PTE usam 10 bits cada, e o deslocamento usa 12 bits.

O esquema de substituição de páginas no Linux usa o algoritmo LRU (por aproximação) mantendo duas listas de envelhecimento (em Predefinição:Língua com nome). A primeira (Predefinição:Mono) contém as páginas atualmente em uso (as páginas mais recentemente referenciadas estarão mais próximas do início da lista) e a segunda (Predefinição:Mono) contém as candidatas a paginação (em Predefinição:Língua com nome).

A paginação para disco pode ocorrer sob demanda, quando algum processo solicitar página e não houver alguma disponível. Neste caso, a página no final da lista Predefinição:Mono é liberada. Entretanto, existe um processo chamado Predefinição:Mono, inicializado pelo núcleo, que verifica, periodicamente, o número de páginas livres. Caso este número seja menor que Predefinição:Mono, Predefinição:Mono é acordado para liberar páginas. Se o valor chegar a Predefinição:Mono, Predefinição:Mono entra num regime síncrono para agilizar a liberação. Quando o valor de páginas livres atingir Predefinição:Mono, Predefinição:Mono vai dormir.

Sistema de arquivos

O gerenciamento de arquivos no Linux baseia-se num esquema de vários níveis, onde a camada principal é o VFS (Virtual File System), que esconde da aplicação as características dos diversos sistemas de arquivo reconhecidos pelo Linux. Quando uma aplicação solicita uma operação sobre algum arquivo, essa solicitação é encaminhada para o VFS, que reenvia a solicitação para um dos SA registrados.

O VFS utiliza uma estrutura chamada superbloco para manter as informações referentes aos diversos sistemas de arquivos montados (tipo, ponto de montagem, dispositivo de bloco utilizado, arquivos abertos). Também utiliza index-node ou nós-i, semelhantes aos nós-i do Ext2, com as informações sobre os arquivos (permissões, blocos utilizados, dono, etc.).

Os sistemas de arquivos registrados no VFS podem ser classificados em 3 grupos: (i) dispositivos de blocos (Ext2, Ext3, Ext4, Reiserfs, XFS, VFAT); (ii) associados a rede (NFS, SMB); (iii) dispositivos especiais (procfs, tempfs). Todos esses sistemas podem ser carregados como módulos.

O Ext2 está deixando de ser o padrão de sistema de arquivos utilizado no Linux, particularmente por sua deficiência quando ocorre uma pane. Neste caso, o sistema operacional deve executar uma varredura completa para verificar o estado do sistema (Predefinição:Mono). Outros sistemas foram criados para resolver essa deficiência, utilizando um recurso chamado journaling, que é a utilização de um registro (log) de alterações (journal). Os sistemas de arquivos desse tipo mais importantes são: Ext3, Ext4, Reiserfs, XFS e JFS.

Falha do núcleo

Falha do núcleo.

Uma falha do núcleo (em Predefinição:Língua com nome) é um erro de sistema não-recuperável detectado pelo núcleo, ao contrário de erros gerados em espaço de usuário, como por exemplo, o fechamento inesperado de um aplicativo. O código do núcleo pode indicar essa condição invocando a função panic especificada em sys/system.h. No entanto, grande parte das falhas são geradas a partir de exceções do processador não tratadas no código do núcleo, tal como referências inválidas a posições de memória. Geralmente, a ocorrência de uma falha do núcleo indica um defeito na cadeia de chamadas na inicialização do núcleo. Também pode indicar uma falha de hardware, tais como uma falha em uma célula de memória, erros nas funções aritméticas ou superaquecimento do processador.

Um relatório de falha no núcleo é chamado de "OOPS".[72] O relatório é automaticamente recolhido pelo software kerneloops[73] ou pela extensão kernel oops do abrt[74] e enviado ao kerneloops.org. O Kerneloops.org reúne estes relatórios e publica estatísticas em seu sítio.[75]

Custo estimado

O custo para criar o Linux novamente, em sua versão 2.6.0, em uma configuração tradicional de desenvolvimento proprietária foi estimada em cerca de $612 milhões USD (€467 milhões de euros, 1,145 bilhão de Reais), com base nos custos de 2004, utilizando o modelo COCOMO de estimativa pessoa-mês.[76] Em 2006, um estudo financiado pela União Europeia colocou os custos de redesenvolvimento do núcleo 2.6.8 ainda mais altos, 882 milhões de euros ($1,14 bilhões USD).[77]

Este assunto foi revisitado em setembro de 2008 por Amanda McPherson, Brian Proffitt e Ron Hale-Evans. Usando a metodologia de David A. Wheelers, eles estimaram que refazer o núcleo 2.6.25 teria custos de $1,3 bilhão USD (parte de um total de $10,8 bilhões (mil milhões) para refazer todo o Fedora 9).[78] Novamente, Garcia-Garcia e Alonso de Magdaleno, da Universidade de Oviedo (Espanha), estimaram que o valor adicionado anualmente ao núcleo entre 2005 e 2007 foi de 100 milhões de euros e, em 2008, 225 milhões de euros; custaria também mais que 1 bilhão (mil milhões) de euros (aproximadamente 1,4 bilhões (mil milhões) USD) para desenvolvê-lo na União Europeia.[79]

Histórico de recursos

A versão 1.0 do Linux foi lançada em 14 de março de 1994.[80] Este lançamento só suportava sistemas de computador monoprocessados baseados na i386. A portabilidade se tornou uma preocupação e logo, na versão 1.2, lançada em 07 de março de 1995,[81] ganhou suporte as arquiteturas Alpha, SPARC, e MIPS.

A versão 2.0 foi lançada em 09 de junho de 1996.[82] Já haviam sido 41 lançamentos em série. O principal recurso da 2.0 foi o suporte a multiprocessamento simétrico, ou seja, suporte para múltiplos processadores em um único sistema e suporte, também foi incluído suporte para mais arquiteturas de processadores.

A versão 2.2 foi lançada em 26 de janeiro de 1999,[83] que removeu o spinlock global e forneceu suporte melhorado para multiprocessadores, também adicionou suporte para as arquiteturas m68k e PowerPC, assim como a novos sistemas de arquivos, incluindo suporte somente de leitura para o NTFS da Microsoft.[84]

A versão 2.4.0, lançada em 04 de janeiro de 2001,[85] continha suporte para Ligar e Usar ISA, USB, e PC Cards.[86] Ele também incluía suporte ao processador PA-RISC da Hewlett-Packard. Também foram incluídos suporte a Bluetooth, Gerenciador Lógico de Volumes (em Predefinição:Língua com nome) versão 1, suporte RAID, InterMezzo e sistemas de ficheiro ext3.

A versão 2.6.0 foi lançada em 18 de dezembro de 2003.[87] A série de núcleos 2.6 ainda ativa ( em fevereiro de 2012). O desenvolvimento para o 2.6.x se modificou mais ao incluir novos recursos através da duração da série. Entre as mudanças que foram realizadas, estão: integração do µClinux no código-fonte principal do Linux, suporte a Extensão de Endereço Físico (em Predefinição:Língua com nome), suporte a diversas linhas novas de CPUs, integração da Arquitetura de Som Avançada do Linux (em Predefinição:Língua com nome) no código principal do Linux, suporte para até 232 usuários (acima de 216), suporte para até 229 IDs de processo (acima de 215), aumentou substancialmente o número de tipos de dispositivo e número de dispositivos para cada tipo, aperfeiçoou o suporte 64-bits, suporte para sistema de ficheiros de até 16 terabytes, preemptividade no núcleo, suporte para a biblioteca de linhas de execução nativa do POSIX, integração do linux em modo de usuário ao código principal do Linux, integração do SELinux ao código principal do Linux, suporte à InfiniBand, e muito mais. Em destaque estão as adições de vários sistemas de arquivos através dos lançamentos 2.6.x: FUSE, JFS, XFS, ext4 e mais. Detalhes da história da série de núcleos 2.6 podem ser encontradas em registros da mudança (em Predefinição:Língua com nome) na área de lançamentos dos núcleos 2.6 do sítio kernel.org.

A versão 3.0 foi lançada em 22 de julho de 2011, não houve grandes mudanças no núcleo[88] (como normalmente se espera quando muda o primeiro número da versão). A versão 3.0 foi dada em comemoração aos 20 anos do Linux. A partir desta versão foi alterada a forma de interpretação dos números de versão do núcleo Linux.[88][89]

A versão 4.0 foi lançada em 12 de abril de 2015.[90]

A versão 5.0 foi lançada em 3 de março de 2019.[91]

Estrutura do código fonte

A organização do código fonte do núcleo Linux permite que múltiplos desenvolvedores trabalhem no núcleo simultaneamente sem causar conflitos com outros desenvolvedores. O diretório raiz do código fonte da versão 5.7 possui 7 arquivos e 22 diretórios. Os arquivos são basicamente descrição de licença, créditos, informações sobre o núcleo e arquivos para compilação. Os diretórios estão estruturados de forma a tornar independente as implementações de código dependente e independente de arquitetura. Além disso, estão organizados baseados nos principais subsistemas do núcleo Linux.[92]

Os principais arquivos são:[93]

  • COPYING: licença do núcleo Linux.
  • CREDITS: lista parcial das pessoas que contribuem com o núcleo Linux.
  • MAINTAINERS: lista dos mantenedores e de como submeter alterações.
  • REPORTING-BUGS: procedimento para relatar defeitos (bugs) no núcleo. Este arquivo foi movido para Documentation/admin-guide na versão 4.10.
  • README: informações sobre o que é e como compilar o núcleo Linux.
  • Makefile, Kbuild, Kconfig: usados na compilação do núcleo Linux.

Os principais diretórios são:[93]

  • arch: código dependente de arquitetura de processadores, por exemplo, arch/x86, arch/arm/arm64.
  • block: código para acesso a dispositivos de bloco.
  • certs: implementação de algoritmos de assinatura digital de módulos. Introduzido na versão 4.3.
  • crypto: implementação de algoritmos de criptografia.
  • drivers: implementação de drivers de dispositivos. São implementados como módulos do núcleo e divididos em subdiretórios segundo o tipo do driver, por exemplo, drivers/ide.
  • firmware: mantém imagens antigas de firmware extraídas de drivers. Novos firmware são adicionados em um novo repositório chamado linux-firmware. Este diretório foi esvaziado na versão 4.14[15][16] e removido na versão 5.1.
  • fs: código do sistema de arquivos virtual e implementação dos sistemas de arquivos suportados pelo núcleo.
  • include: arquivos de cabeçalhos genéricos.
  • init: código de inicialização do núcleo, como por exemplo, inicialização dos endereços de página, escalonador, chamadas de sistema, interrupção, entre outros.
  • ipc: código para os três sistemas de comunicação entre processos (semáforos, memória compartilhada e filas de mensagens).
  • kernel: código dos principais subsistemas do núcleo, como por exemplo, chamada de sistemas, escalonadores, DMA, interrupção. O código específico de arquitetura é mantido em arch/*/kernel.
  • lib: bibliotecas do núcleo. O código específico de arquitetura é mantido em arch/*/lib.
  • mm: código comum para gerenciamento de memória e do subsistema de memória virtual. O código específico de arquitetura é mantido em arch/*/mm.
  • net: código para o subsistema de rede, como por exemplo, implementação de protocolos e soquetes.
  • samples: exemplos.
  • scripts: scripts e códigos para configurar e compilar o núcleo.
  • security: funções de segurança.
  • sound: código para o subsistema de som.
  • tools: software específico e alguns testes.
  • usr: suporte a inicialização do código do núcleo que deve executar em espaço do usuário.
  • virt: código de suporte à virtualização.
  • Documentation: contém a documentação do código fonte.

Processo de inicialização

O processo de inicialização do núcleo Linux é composto por diversas etapas.[94] Antes da inicialização propriamente dita, o sistema computacional deve ser inicializado. O sistema possui um software embarcado em uma posição fixa de memória para iniciar o carregamento do núcleo. Em sistemas convencionais, o processo de inicialização ocorre com o carregamento da BIOS e inicialização do hardware. A BIOS, por sua vez, realiza a leitura do primeiro setor do disco (MBR) contendo o carregador de inicialização (bootloader). Os carregadores de inicialização mais comuns para computadores pessoais são o GRUB e LILO. O carregador de inicialização carrega a imagem do núcleo Linux e do sistema de arquivos temporário em memória (opcional). O arquivo de imagem do núcleo Linux é autocompactado e geralmente apresenta a nomenclatura bzImage-versão. O arquivo de disco RAM, que contém o sistema de ficheiros temporário, geralmente apresenta a nomenclatura initrd-versão.img.

Com o núcleo em memória, o controle de execução é repassado para o núcleo. A inicialização do núcleo começa com a execução de rotinas básicas de configuração de hardware e a autodescompactação da imagem por meio de rotinas no início do arquivo. Em seguida, a função start_kernel é chamada e executa a inicialização e configuração dos dispositivos, escalonadores, consoles, entre outros. Por fim, após carregar o disco RAM, executa a função que inicializa o primeiro processo, o init. O init coordena a inicialização e configuração dos serviços do sistema operacional. Em sistemas embarcados, o init pode corresponder a um simples código para iniciar os dispositivos.

Desenvolvimento

Linha do tempo

Ref: www.kernel.org[95]

Predefinição:Linha de tempo do Linux

Modelo de desenvolvimento

O modelo de desenvolvimento atual do Linux é feito para permitir que Linus Torvalds realize o lançamento de novas versões constantemente. Estas versões são chamadas de núcleos "genérico" (em Predefinição:Língua com nome) ou "principais" (em Predefinição:Língua com nome), que significa que estes núcleos são derivados (branch) do código de desenvolvimento principal do núcleo Linux. Uma nova versão do núcleo Linux só é lançada depois de passar por grandes mudanças, por exemplo, primeiro Linus Torvalds recebe e incorpora dos programadores as mudanças no código do núcleo Linux, a partir dai são feitos pré-lançamentos do núcleo e destes são realizadas as correções de possíveis defeitos encontrados, só então é lançada a nova versão do núcleo de sistema operacional Linux. O lançamento de um novo núcleo é feito em média a cada três meses.

No esquema de desenvolvimento atual, a derivação (branch) principal não é a versão "estável" tradicional, pois é ela que incorpora todos os tipos de alterações, tal como últimos recursos, correções de segurança e defeitos. Para usuários que não querem arriscar atualizando para novas versões, contendo código que pode não ter sido testado o bastante, existem um conjunto separado de derivações "estáveis" (uma para cada versão lançada), que são criadas para usuários que querem apenas as correções de segurança e defeitos, mas não uma versão totalmente nova. Estas derivações são mantidas pela equipa estável (em Predefinição:Língua com nome) (Greg Kroah-Hartman, Chris Wright, talvez outros).

A maioria dos usuários Linux utilizam a versão fornecida pelas suas distribuições. Algumas distribuições fornecem os núcleos "genérico" e/ou "estável". No entanto, muitos distribuidores Linux, como a Red Hat e o Debian, mantém outro conjunto de derivações do Linux que são integradas aos seus produtos. Estes são em geral atualizados em um ritmo mais lento em comparação com a derivação "genérico" e normalmente incluem todas correções da derivação "estável" correspondente, mas ao mesmo tempo podem adicionar suporte a controladores ou recursos que não foram lançados na versão "genérico" em que o distribuidor se baseou originalmente.

A partir do núcleo 2.6 ocorreu uma mudança significativa no modelo de desenvolvimento. Antes desta alteração havia uma derivação estável, por exemplo, a 2.4 em que apenas revisões relativamente pequenas e seguras eram feitas e uma derivação instável a 2.5, na qual mudanças maiores e retiradas de códigos não utilizados eram permitidas. Ambas derivações eram mantidas pelo mesmo grupo de pessoas, lideradas por Torvalds. Isto significada que os usuários sempre teriam uma versão 2.4 bem testada (chamada de estável), contendo as últimas correções de segurança e praticamente sem defeitos, porém esta estabilidade tinha um preço, pois os usuários do núcleo estável sempre estavam um passo a trás, ou seja, estavam desatualizados em relação ao núcleo instável (por exemplo, poderia não ter suporte aos hardwares mais recentes). No fim da série 2.5.x, alguns mantenedores escolheram tentar portar suas alterações para a série de núcleos estáveis, o que resultou em defeitos sendo introduzidos nos núcleos 2.4.x. A derivação 2.5 foi então oficialmente declarada estável, e renomeada para 2.6, mas ao invés de abrir uma derivação instável 2.7, os desenvolvedores escolheram continuar a fazer grandes revisões na derivação 2.6, permitindo lançamentos muito mais rápidos do que a 2.4.x, mas ainda sim, mais lentos do que a 2.5.x. Isto trouxe o efeito desejado de tornar novos recursos rapidamente disponíveis e conseguir mais testes do novo código, que foi adicionado em derivações menores e mais fáceis de testar.

Como resposta a falta de uma árvore de núcleo estável, algumas pessoas coordenaram a coleta de correções e em dezembro de 2005 Adrian Bunk anunciou que ele manteria os lançamentos dos núcleos 2.6.16.y, mesmo quando o time continuasse para o 2.6.17.[96] Ele também incluiu alguns atualizações de controladores, tornando a manutenção da série de núcleos 2.6,16 muito similar às antigas regras de manutenção para uma série estável, como a 2.4.[97] Deste então, o "time estável" (em Predefinição:Língua com nome) foi criado e poderia continuar atualizando as versões do núcleo com correões. Em setembro de 2008, Adrian Bunk anunciou que iria manter o 2.6.27 por alguns anos como substituto ao 2.6.16.[98] O time estável apoiou a ideia[99] e Predefinição:Desde eles mantêm aquela versão, lançando correções para ela, além das outras.

Após a mudança no modelo de desenvolvimento no núcleo 2.6.x, os desenvolvedores continuaram querendo o que pode-se chamar de uma árvore instável do núcleo, uma que muda tão rapidamente quanto novas correções chegam. Andrew Morton decidiu redirecionar sua árvore -mm de gerenciamento de memória, para servir como destino para todo código novo e ou experimental. Em setembro de 2007 Morton decidiu parar de manter a sua árvore.[100] Em fevereiro de 2008, Stephen Rothwell criou a árvore linux-next (em Predefinição:Língua com nome) em que correções que almejam serem incorporadas durante o próximo ciclo de desenvolvimento.[101][102] Vários mantenedores de subsistemas também adotaram o sufixo -next (em Predefinição:Língua com nome) para suas árvores contendo código a ser enviado para inclusão no próximo ciclo de lançamento.

Manutenção e suporte de longo prazo

A última versão do núcleo e as versões mais antigas do núcleo são mantidas separadamente. A maioria dos lançamentos do núcleo mais recentes foram supervisionados por Linus Torvalds.[1] As versões atuais são lançadas por Greg Kroah-Hartman.[103]

A comunidade de desenvolvedores do núcleo Linux mantém um núcleo estável aplicando correções para bugs de software que foram descobertos durante o desenvolvimento do núcleo estável subsequente. Portanto, www.kernel.org sempre listará dois núcleos estáveis. O próximo núcleo estável do Linux agora é lançado apenas 8 a 12 semanas depois. Portanto, os mantenedores do núcleo Linux designaram algumas versões estáveis do núcleo como de longo prazo, esses núcleos Linux com suporte de longo prazo são atualizados com correções de bugs por dois ou mais anos.[104] Predefinição:Desde, havia seis núcleos Linux de longo prazo: 5.15.62, 5.10.137, 5.4.210, 4.19.255, 4.14.290 e 4.9.325.[105]

Versões antes da 2.0

Série Data de lançamento original Última versão Mantenedor Modelo de suporte
Predefinição:Versão 17 de setembro de 1991 0.03 Linus Torvalds Descontinuado
Predefinição:Versão 5 de outubro de 1991 Linus Torvalds Descontinuado
Predefinição:Versão novembro de 1991 0.12 Linus Torvalds Descontinuado
Predefinição:Versão 8 de março de 1992 0.99.15 Linus Torvalds Descontinuado
Predefinição:Versão 14 de março de 1994 1.0.9 Linus Torvalds Descontinuado
Predefinição:Versão 6 de abril de 1994 1.1.95 Linus Torvalds Descontinuado
Predefinição:Versão 7 de março de 1995 1.2.13 Linus Torvalds Descontinuado
Predefinição:Versão 12 de junho de 1995 1.3.100[106] Linus Torvalds Descontinuado
Predefinição:Versão 12 de maio de 1996 pre2.0.14 Linus Torvalds Descontinuado
Predefinição:Versão

Versão 2.0 até 2.4

Série Data de lançamento original Última versão Mantenedor Modelo de suporte
Predefinição:Versão 9 de junho de 1996[107] 2.0.40[108] David Weinehall Oficialmente descontinuado com o lançamento da versão 2.2.0 (suportado de junho de 1996 até fevereiro de 2004)[108]
Predefinição:Versão 20 de janeiro de 1999[109] 2.2.26[110] Marc-Christian Petersen (ex-mantenedor Alan Cox) Descontinuado (suportado de janeiro de 1999 até fevereiro de 2004)[110]
Predefinição:Versão 4 de janeiro de 2001[111] 2.4.37.11[112] Willy Tarreau (ex-mantenedor Marcelo Tosatti) Descontinuado (suportado de janeiro de 2001 até dezembro de 2010)[112]
Predefinição:Versão

Versão 2.6.x.y

Série Data de lançamento original Última versão Mantenedor Modelo de suporte
Predefinição:Versão 17 de dezembro de 2003[113] 2.6.10[114] Linus Torvalds Versão estável de curto prazo (suportada de dezembro de 2003 até dezembro de 2004)[114]
Predefinição:Versão 2 de março de 2005[115] 2.6.11.12[116] Greg Kroah-Hartman Versão estável de curto prazo (suportada de março de 2005 a junho de 2005)[116]
Predefinição:Versão 18 de junho de 2005[117] 2.6.12.6[118] Greg Kroah-Hartman Versão estável de curto prazo (suportada de junho de 2005 a agosto de 2005)[118]
Predefinição:Versão 28 de agosto de 2005[119] 2.6.13.5[120] Greg Kroah-Hartman Versão estável de curto prazo (suportada de agosto de 2005 a dezembro de 2005)[120]
Predefinição:Versão 27 de outubro de 2005[121] 2.6.14.7[122] Greg Kroah-Hartman Versão estável de curto prazo (suportada de outubro de 2005 a janeiro de 2006)[122]
Predefinição:Versão 2 de janeiro de 2006[123] 2.6.15.7[124] Greg Kroah-Hartman Versão estável de curto prazo (suportada de janeiro de 2006 a março de 2006)[124]
Predefinição:Versão 20 de março de 2006[125] 2.6.16.62[126] Adrian Bunk (ex-mantenedor Greg Kroah-Hartman) Versão estável de longo prazo[98] (suportada de março de 2006 até julho de 2008)[126]
Predefinição:Versão 17 de junho de 2006[127] 2.6.17.14[128] Greg Kroah-Hartman Versão estável de curto prazo (suportada de junho de 2006 a outubro de 2006)[128]
Predefinição:Versão 19 de setembro de 2006[129] 2.6.18.8[130] Greg Kroah-Hartman Versão estável de curto prazo (suportada de setembro de 2006 a fevereiro de 2007)[130]
Predefinição:Versão 29 de novembro de 2006[131] 2.6.19.7[132] Greg Kroah-Hartman Versão estável de curto prazo (suportada de novembro de 2006 a março de 2007)[132]
Predefinição:Versão 4 de fevereiro de 2007[133] 2.6.20.21[134] Greg Kroah-Hartman Versão estável de curto prazo (suportada de fevereiro de 2007 a outubro de 2007)[134]
Predefinição:Versão 25 de abril de 2007[135] 2.6.21.7[136] Greg Kroah-Hartman Versão estável de curto prazo (suportada de abril de 2007 a agosto de 2007)[136]
Predefinição:Versão 8 de julho de 2007[137] 2.6.22.19[138] Greg Kroah-Hartman Versão estável de curto prazo (suportada de julho de 2007 a fevereiro de 2008)[138]
Predefinição:Versão 9 de outubro de 2007[139] 2.6.23.17[140] Greg Kroah-Hartman Versão estável de curto prazo (suportada de outubro de 2007 a fevereiro de 2008)[140]
Predefinição:Versão 24 de janeiro de 2008[141] 2.6.24.7[142] Greg Kroah-Hartman Versão estável de curto prazo (suportada de janeiro de 2008 a maio de 2008)[142]
Predefinição:Versão 16 de abril de 2008[143] 2.6.25.20[144] Greg Kroah-Hartman Versão estável de curto prazo (suportada de abril de 2008 a novembro de 2008)[144]
Predefinição:Versão 13 de julho de 2008[145] 2.6.26.8[146] Greg Kroah-Hartman Versão estável de curto prazo (suportada de julho de 2008 a novembro de 2008)[146]
Predefinição:Versão 9 de outubro de 2008[147] 2.6.27.62[148] Willy Tarreau (ex-mantenedores Adrian Bunk e Greg Kroah-Hartman)[99] Versão estável de longo prazo (suportada de 9 de outubro de 2008[149] a 17 de março de 2012[98][150])
Predefinição:Versão 24 de dezembro de 2008[151] 2.6.28.10[152] Greg Kroah-Hartman Versão estável de curto prazo (suportada de dezembro de 2008 a maio de 2009)[152]
Predefinição:Versão 23 de março de 2009[153] 2.6.29.6[154] Greg Kroah-Hartman Versão estável de curto prazo (suportada de março de 2009 a julho de 2009)[154]
Predefinição:Versão 9 de junho de 2009[155] 2.6.30.9[156] Greg Kroah-Hartman Versão estável de curto prazo (suportada de junho de 2009 a outubro de 2009)[156]
Predefinição:Versão 9 de setembro de 2009[157] 2.6.31.14[158] Greg Kroah-Hartman Versão estável de curto prazo (suportada de setembro de 2009 a julho de 2010)[158]
Predefinição:Versão 2 de dezembro de 2009[159] 2.6.32.71[160] Willy Tarreau (ex-mantenedor Greg Kroah-Hartman)[161] Versão estável de longo prazo (suportada de 3 de dezembro de 2009[162] a 12 de março de 2016[150][160])
Predefinição:Versão 24 de fevereiro de 2010[163] 2.6.33.20[164][165] Greg Kroah-Hartman Versão estável de longo prazo (suportada de fevereiro de 2010 a novembro de 2011)[165]
Predefinição:Versão 16 de maio de 2010[166] 2.6.34.15[167] Paul Gortmaker Versão estável de longo prazo (suportada de maio de 2010 a fevereiro de 2014)[167]
Predefinição:Versão 1 de agosto de 2010[168] 2.6.35.14[169] Andi Kleen Versão estável de longo prazo (suportada de agosto de 2010 a agosto de 2011)[169]
Predefinição:Versão 20 de outubro de 2010[170] 2.6.36.4[171] Greg Kroah-Hartman Versão estável de curto prazo (suportada de outubro de 2010 a fevereiro de 2011)[171]
Predefinição:Versão 4 de janeiro de 2011[172] 2.6.37.6[173] Greg Kroah-Hartman Versão estável de curto prazo (suportada de janeiro de 2011 a março de 2011)[173]
Predefinição:Versão 14 de março de 2011[174] 2.6.38.8[175] Greg Kroah-Hartman Versão estável de curto prazo (suportada de março de 2011 a junho de 2011)[175]
Predefinição:Versão 18 de maio de 2011[176] 2.6.39.4[177] Greg Kroah-Hartman Versão estável de curto prazo final do núcleo 2.6. (suportada de maio de 2011 a agosto de 2011)[177]
Predefinição:Versão

Versão 3.x.y

Série Data de lançamento original Última versão Mantenedor Modelo de suporte
Predefinição:Versão 21 de julho de 2011[178][179] 3.0.101[180][181] Linus Torvalds Versão estável de longo prazo (suportada de julho de 2011 a outubro de 2013)[182][180]
Predefinição:Versão 24 de outubro de 2011[183][184] 3.1.10[185] Greg Kroah-Hartman Versão estável de curto prazo (suportada de outubro de 2011 até janeiro de 2012)[185]
Predefinição:Versão 4 de janeiro de 2012[26][186] 3.2.102[187] Ben Hutchings Versão estável de longo prazo (suportada de janeiro de 2012 até junho de 2018)[187]
Predefinição:Versão 18 de março de 2012[188][189] 3.3.8[190] Greg Kroah-Hartman Versão estável de curto prazo (suportada de março de 2012 até junho de 2012)[190]
Predefinição:Versão 20 de maio de 2012[191][192] 3.4.113[193] Greg Kroah-Hartman Versão estável de longo prazo (suportada de maio de 2012 até outubro de 2016)[193]
Predefinição:Versão 21 de julho de 2012[194][195] 3.5.7[196] Greg Kroah-Hartman Versão estável de curto prazo (suportada de julho de 2012 até outubro de 2012)[196]
Predefinição:Versão 30 de setembro de 2012[197][198] 3.6.11[199] Greg Kroah-Hartman Versão estável de curto prazo (suportada de setembro de 2012 até dezembro de 2012)[199]
Predefinição:Versão 10 de dezembro de 2012[200][201] 3.7.10[202] Greg Kroah-Hartman Versão estável de curto prazo (suportada de dezembro de 2012 até fevereiro de 2012)[202]
Predefinição:Versão 18 de fevereiro de 2013[203][204] 3.8.13[205] Greg Kroah-Hartman Versão estável de curto prazo (suportada de fevereiro de 2013 até maio de 2013)[206][205]
Predefinição:Versão 28 de abril de 2013[207][208] 3.9.11[209] Greg Kroah-Hartman Versão estável de curto prazo (suportada de abril de 2013 até julho de 2013)[209]
Predefinição:Versão 30 de junho de 2013[210][211] 3.10.108[212] Willy Tarreau (ex-mantenedor Greg Kroah-Hartman) Versão estável de longo prazo (suportada de junho de 2013 até novembro de 2017)[212]
Predefinição:Versão 2 de setembro de 2013[213][214] 3.11.10[215] Greg Kroah-Hartman Versão estável de curto prazo (suportada de setembro de 2013 até novembro de 2013)[215]
Predefinição:Versão 3 de novembro de 2013[216][217] 3.12.74[218] Jiří Slabý[219] (ex-mantenedor Greg Kroah-Hartman) Versão estável de longo prazo (suportada de dezembro de 2013 até maio de 2017)[218]
Predefinição:Versão 19 de janeiro de 2014[220][221] 3.13.11[222] Greg Kroah-Hartman Versão estável de curto prazo (suportada de janeiro de 2014 até abril de 2014)[222]
Predefinição:Versão 30 de março de 2014[223][224] 3.14.79[225] Greg Kroah-Hartman Versão estável de longo prazo (suportada de março de 2014 até setembro de 2016)[225]
Predefinição:Versão 8 de junho de 2014[226][227] 3.15.10[228] Greg Kroah-Hartman Versão estável de curto prazo (suportada de junho de 2014 até agosto de 2014)[228]
Predefinição:Versão 3 de agosto de 2014[229][230] 3.16.85[231] Ben Hutchings (ex-mantenedor Greg Kroah-Hartman) Versão estável de longo prazo (suportada de agosto de 2014 até junho de 2020)[231]
Predefinição:Versão 5 de outubro de 2014[232][233] 3.17.8[234] Greg Kroah-Hartman Versão estável de curto prazo (suportada de outubro de 2014 até janeiro de 2015)[234]
Predefinição:Versão 7 de dezembro de 2014[235][236] 3.18.140[237] Greg Kroah-Hartman Versão estável de longo prazo (suportada de dezembro de 2014 até maio de 2019)[237]
Predefinição:Versão 8 de fevereiro de 2015[238][239] 3.19.8[240][241] Greg Kroah-Hartman Versão estável de curto prazo (suportada de fevereiro de 2015 até maio de 2015)[240]
Predefinição:Versão

Versão 4.x.y

Série Data de lançamento original Última versão Mantenedor Modelo de suporte
Predefinição:Versão 12 de abril de 2015[242][243] 4.0.9[244] Greg Kroah-Hartman Versão estável de curto prazo (suportada de abril de 2015 até julho de 2015)[244]
Predefinição:Versão 22 de junho de 2015[245][246] 4.1.52[247] Sasha Levin (ex-mantenedor Greg Kroah-Hartman) Versão estável de longo prazo (suportada de junho de 2015 até maio de 2018)[247]
Predefinição:Versão 30 de agosto de 2015[248][249] 4.2.8[250] Greg Kroah-Hartman Versão estável de curto prazo (suportada de agosto de 2015 até dezembro de 2015)[250]
Predefinição:Versão 1 de novembro de 2015[251][252] 4.3.6[253] Greg Kroah-Hartman Versão estável de curto prazo (suportada de novembro de 2015 até fevereiro de 2016)[253]
Predefinição:Versão 10 de janeiro de 2016[254][255] 4.4.302[256] Greg Kroah-Hartman & Sasha Levin Versão estável de longo prazo (suportada de janeiro de 2016 até fevereiro de 2022)[256]
Predefinição:Versão 13 de março de 2016[257][258] 4.5.7[259] Greg Kroah-Hartman Versão estável de curto prazo (suportada de março de 2016 até junho de 2016)[259]
Predefinição:Versão 15 de maio de 2016[260][261] 4.6.7[262] Greg Kroah-Hartman Versão estável de curto prazo (suportada de maio de 2016 até agosto de 2016)[262]
Predefinição:Versão 24 de julho de 2016[263][264] 4.7.10[265] Greg Kroah-Hartman Versão estável de curto prazo (suportada de julho de 2016 até outubro de 2016)[265]
Predefinição:Versão 2 de outubro de 2016[266][267] 4.8.17[268] Greg Kroah-Hartman Versão estável de curto prazo (suportada de outubro de 2016 até janeiro de 2017)[268]
Predefinição:Versão 11 de dezembro de 2016[269][270] 4.9.325[271] Greg Kroah-Hartman & Sasha Levin[272] Versão estável de longo prazo
Predefinição:Versão 19 de fevereiro de 2017[273][274] 4.10.17[275] Greg Kroah-Hartman Versão estável de curto prazo (suportada de fevereiro de 2017 até maio de 2017)[275]
Predefinição:Versão 30 de abril de 2017[276][277] 4.11.12[278] Greg Kroah-Hartman Versão estável de curto prazo (suportada de abril de 2017 até julho de 2017)[278]
Predefinição:Versão 2 de julho de 2017[279][280] 4.12.14[281] Greg Kroah-Hartman Versão estável de curto prazo (suportada de julho de 2017 até setembro de 2017)[281]
Predefinição:Versão 3 de setembro de 2017[282][283] 4.13.16[284] Greg Kroah-Hartman Versão estável de curto prazo (suportada de setembro de 2017 até novembro de 2017)[284]
Predefinição:Versão 12 de novembro de 2017[285][286] 4.14.290[287] Greg Kroah-Hartman & Sasha Levin[272] Versão estável de longo prazo
Predefinição:Versão 28 de janeiro de 2018[288][289] 4.15.18[290] Greg Kroah-Hartman Versão estável de curto prazo (suportada de janeiro de 2018 até abril de 2018)[290]
Predefinição:Versão 1 de abril de 2018[291][292] 4.16.18[293] Greg Kroah-Hartman Versão estável de curto prazo (suportada de abril de 2018 até junho de 2018)[293]
Predefinição:Versão 3 de junho de 2018[294][295] 4.17.19[296] Greg Kroah-Hartman Versão estável de curto prazo (suportada de junho de 2018 até agosto de 2018)[296]
Predefinição:Versão 12 de agosto de 2018[297][298] 4.18.20[299] Greg Kroah-Hartman Versão estável de curto prazo (suportada de agosto de 2018 até novembro de 2018)[299]
Predefinição:Versão 22 de outubro de 2018[300][301] 4.19.255[302] Greg Kroah-Hartman & Sasha Levin[272] Versão estável de longo prazo
Predefinição:Versão 23 de dezembro de 2018[303][304] 4.20.17[305] Greg Kroah-Hartman Versão estável de curto prazo (suportada de dezembro de 2018 até março de 2019)[305]
Predefinição:Versão

Versão 5.x.y

Série Data de lançamento original Última versão Mantenedor Modelo de suporte
Predefinição:Versão 3 de março de 2019[306][307] 5.0.21[308] Greg Kroah-Hartman Versão estável de curto prazo (suportada de março de 2019 até junho de 2019)[308]
Predefinição:Versão 5 de maio de 2019[309][310] 5.1.21[311] Greg Kroah-Hartman Versão estável de curto prazo (suportada de maio de 2019 até julho de 2019)[311]
Predefinição:Versão 7 de julho de 2019[312][313] 5.2.20[314] Greg Kroah-Hartman Versão estável de curto prazo (suportada de julho de 2019 até outubro de 2019)[314]
Predefinição:Versão 15 de setembro de 2019[315][316] 5.3.18[317] Greg Kroah-Hartman Versão estável de curto prazo (suportada de setembro de 2019 até dezembro de 2019)[317]
Predefinição:Versão 24 de novembro de 2019[318][319] 5.4.210[320] Greg Kroah-Hartman & Sasha Levin[272] Versão estável de longo prazo
Predefinição:Versão 26 de janeiro de 2020[321][322] 5.5.19[323] Greg Kroah-Hartman Versão estável de curto prazo (suportada de janeiro de 2020 até abril de 2020)[323]
Predefinição:Versão 29 de março de 2020[324][325] 5.6.19[326] Greg Kroah-Hartman Versão estável de curto prazo (suportada de março de 2020 até junho de 2020)[326]
Predefinição:Versão 31 de maio de 2020[327][328] 5.7.19[329] Greg Kroah-Hartman Versão estável de curto prazo (suportada de maio de 2020 até agosto de 2020)[329]
Predefinição:Versão 2 de agosto de 2020[330][331] 5.8.18[332] Greg Kroah-Hartman Versão estável de curto prazo (suportada de agosto de 2020 até novembro de 2020)[332]
Predefinição:Versão 11 de outubro de 2020[333][334] 5.9.16[335] Greg Kroah-Hartman Versão estável de curto prazo (suportada de outubro de 2020 até dezembro de 2020)[335]
Predefinição:Versão 13 de dezembro de 2020[336][337] 5.10.137[338] Greg Kroah-Hartman & Sasha Levin[272] Versão estável de longo prazo
Predefinição:Versão 14 de fevereiro de 2021[339][340] 5.11.22[341] Greg Kroah-Hartman Versão estável de curto prazo (suportada de fevereiro de 2021 até maio de 2021)[341]
Predefinição:Versão 25 de abril de 2021[342][343] 5.12.19[344] Greg Kroah-Hartman Versão estável de curto prazo (suportada de abril de 2021 até julho de 2021)[344]
Predefinição:Versão 27 de junho de 2021[345][346] 5.13.19[347] Greg Kroah-Hartman Versão estável de curto prazo (suportada de junho de 2021 até setembro de 2021)[347]
Predefinição:Versão 29 de agosto de 2021[348][349] 5.14.21[350] Greg Kroah-Hartman Versão estável de curto prazo (suportada de agosto de 2021 até novembro de 2021)[350]
Predefinição:Versão 31 de outubro de 2021[351][352] 5.15.62[353] Greg Kroah-Hartman & Sasha Levin[272] Última versão estável de longo prazo
Predefinição:Versão 9 de janeiro de 2022[354][355] 5.16.20[356] Greg Kroah-Hartman Versão estável de curto prazo (suportada de janeiro de 2022 até abril de 2022)[356]
Predefinição:Versão 20 de março de 2022[357][358] 5.17.15[359] Greg Kroah-Hartman Versão estável de curto prazo (suportada de março de 2022 até junho de 2022)[359]
Predefinição:Versão 22 de maio de 2022[360][361] 5.18.19[362] Greg Kroah-Hartman Versão estável de curto prazo (suportada de maio de 2022 até agosto de 2022)[362]
Predefinição:Versão 31 de julho de 2022[363][364] 5.19.3[365] Greg Kroah-Hartman Última versão estável de curto prazo
Predefinição:Versão

Versão 6.x.y

Série Data de lançamento original Última versão Mantenedor Modelo de suporte
Predefinição:Versão 14 de agosto de 2022[366] 6.0-rc2[367] Linus Torvalds Versão em desenvolvimento
Predefinição:Versão

Outros programadores do Linux que mantêm subsistemas dentro do núcleo[1] incluem:

  • Robert Love: núcleo preemptível, inotify.
  • Ingo Molnár: arquitetura x86, escalonador, travas.
  • David S. Miller: rede, arquitetura Sparc.
  • Hans Peter Anvin: arquitetura x86, automontador do núcleo.

Versões iniciais

Página Predefinição:Gráfico/styles.css não tem conteúdo.<graph>Erro de script: Nenhum módulo desse tipo "Graph".</graph>

  • 0.01 - Setembro de 1991 - primeira versão (10.239 linhas de código).
  • 0.02 - Outubro de 1991 - primeira versão disponibilizada publicamente.
  • 0.12 - Janeiro de 1992 - primeira versão sob GPL (19.645 linhas de código).
  • 0.95 - Março de 1992 (20.882 linhas de código).

Versões estáveis

  • 1.0 - Março de 1994 - Suportava apenas máquinas monoprocessadoras i386 (176.250 linhas de código);
  • 1.2 - Março de 1995 - Adicionado suporte para Alpha, SPARC e MIPS(310.950 linhas de código);
  • 2.0 - Junho de 1996 - Adicionado suporte para mais processadores e foi incluído suporte para SMP (777.956 linhas de código);
  • 2.2 - Janeiro de 1999 (1.800.847 linhas de código);
  • 2.4 - Janeiro de 2001 (3.377.902 linhas de código);
  • 2.6 - Dezembro de 2003 (5.929.913 linhas de código);
  • 3.0 - Julho de 2011 (14.647.033 linhas de código);
  • 3.1 - Outubro de 2011 (14.770.555 linhas de código);
  • 3.2 - Janeiro de 2012 (14.998.737 linhas de código);
  • 4.1 - Junho de 2015 (19.512.593 linhas de código);
  • 4.7 - Julho de 2016 (21.720.955 linhas de código);
  • 4.8 - Outubro de 2016 (22.071.048 linhas de código);
  • 4.9 - Dezembro de 2016 (22.348.356 linhas de código);
  • 4.10 - Fevereiro de 2017 (22.839.659 linhas de código);
  • 4.11 - Abril de 2017 (23.137.402 linhas de código);
  • 4.12 - Julho de 2017 (24.170.860 linhas de código);
  • 5.0 - Março de 2019 (26.203.035 linhas de código);
  • 5.7 - Maio de 2020 (28.442.486 linhas de código);
  • 5.8 - Agosto de 2020 (28.994.508 linhas de código);
  • 5.9 - Outubro de 2020 (29.461.375 linhas de código).

Controle de revisões

O código do Linux costumava ser mantido sem ajuda de um sistema de controle de versão, principalmente devido ao desgosto de Linus Torvalds com relação a sistemas centralizados.

Em 2002, o desenvolvimento do Linux mudou para o BitKeeper, um sistema de controle de versões que satisfazia os requerimentos técnicos de Linus Torvalds. BitKeeper foi disponibilizado para Linus e outros gratuitamente, mas não era software livre, o que criou controvérsias. O sistema não oferecia interoperabilidade alguma com sistemas livres como CVS e Subversion.

Em abril de 2005, no entanto, esforços para realizar a engenharia-reversa do sistema BitKeeper por Andrew Tridgell levou BitMover, a empresa que mantinha o BitKeeper, a parar de suportar a comunidade de desenvolvimento Linux. Em resposta, Linus Torvalds e outros, escreveram um novo sistema de controle de versões para a tarefa, chamado Git. O novo sistema foi criado em semanas e em dois meses o primeiro lançamento oficial do núcleo foi realizado utilizando o git.[368] O git logo se tornou um projeto independente do núcleo Linux e foi largamente adotado como sistema de controle de versão/revisão da comunidade de software livre.

Numeração de versões

O núcleo Linux já passou por três esquemas de numeração de versões.

A primeira versão do núcleo foi 0.01. Esta foi sucedida por 0.02, 0.03, 0.10, 0.11, 0.12 (a primeira versão sob GPL), 0.95, 0.96, 0.97, 0.98, 0.99 e então 1.0.[369] A partir da 0.95 houve vários lançamentos de correções entre as versões.

Após o lançamento da versão 1.0 e até o lançamento da 2.6, as versões eram compostas de "A.B.C", na qual A era definido como a versão do núcleo, B como a grande revisão do núcleo e C a revisão menor do núcleo. A versão era alterada somente quando ocorriam grandes alterações no código e/ou no conceito do núcleo, isto aconteceu duas vezes na história do núcleo: em 1994 (versão 1.0) e em 1996 (versão 2.0). As grandes revisões foram usadas de acordo com o sistema de numeração par-ímpar tradicional. A revisão menor foi alterada quando correções de segurança, defeitos ou novos recursos eram implementados no núcleo. Em 2011 foi lançada a versão 3.0 do núcleo Linux, apesar da versão mudar da 2.x para a 3.x nenhuma grande mudança ocorreu no núcleo, a mudança se deu em comemoração ao vigésimo aniversário do Linux.[370] Na versão 3.x o esquema de numeração continua basicamente o mesmo da versão introduzida a partir do núcleo 2.6.0, mas utilizando o segundo número, por exemplo a versão 3.1 surge poucos meses depois da 3.0. O terceiro número agora é adicionado quando for necessário indicar correções de segurança e correções de erros, por exemplo 3.0.18.

Desde 2004, após o lançamento da versão 2.6.0, os desenvolvedores do núcleo discutiram sobre o esquema de lançamento e versões[371][372] e por fim, Linus Torvalds e outros decidiram que um ciclo de lançamentos menor seria melhor. Desde então, a versão foi composta de três ou quatro números. Os primeiros dois se tornaram bastante irrelevantes, sendo o terceiro número a versão atual do núcleo e o quarto número conta apenas com atualizações para correções de segurança e defeitos.

O primeiro uso do quarto número ocorreu quando um grave erro, que exigia correção imediata, foi encontrado no código do NFS da 2.6.8. No entanto, não havia outras alterações para legitimar o lançamento de uma nova revisão menor (que teria sido a 2.6.9). Então, a 2.6.8.1 foi lançada, com apenas uma alteração sendo feita para corrigir o defeito. Com a 2.6.11, esta foi adotada como a nova política oficial para versões. Depois, se tornou comum portar grandes correções para versões já lançadas e indicar isto atualizando o quarto número.

Pré-lançamentos regulares de desenvolvimento são nomeados candidatos a lançamento, o que é indicado adicionando o sufixo rc a versão do núcleo, seguido por um número ordinal.

Alguma vezes também, a versão vai possuir um sufixo como tip, indicando outra derivação de desenvolvimento, geralmente, mas não sempre, são adicionadas as iniciais da pessoa que o criou. Por exemplo, ck significa Con Kolivas, ac Alan Cox, etc. Algumas vezes, as letras são relacionadas à área de desenvolvimento principal do ramo do qual o núcleo é compilado, exemplo: wl indica uma compilação de teste de rede sem fio (em Predefinição:Língua com nome). Além disso, distribuições GNU/Linux podem criar seus próprios sufixos, com diferente sistemas de numeração e para correções para as suas versões de distribuição "Empresariais" (ex.: estável, mas mais antigo).

Versões

Tux, mascote do projeto.

Torvalds e sua equipa têm continuado a lançar novas versões, consolidando contribuições de outros programadores e introduzindo alterações suas. Antes do lançamento da versão 2.6, o número de versão menor (o segundo componente) par indicavam uma série estável: 1.0.x, 1.2.x, 2.0.x, 2.2.x e 2.4.x; os lançamentos com um número de versão menor ímpar correspondiam a versões de desenvolvimento. O terceiro componente do número de versão correspondia a correções (releases) da versão. A partir da versão 2.6, Torvalds alterou esse padrão, criando um quarto dígito. Assim, a árvore estável e a de desenvolvimento confundem-se. Atualmente, considera-se uma versão tanto mais estável quanto maior o quarto dígito. Enquanto que Torvalds continua a lançar as versões de desenvolvimento mais recentes, a manutenção das versões "estáveis" mais antigas é delegada a outros, incluindo David Weinehal (2.0), Alan Cox e mais tarde Marc-Christian Petersen (2.2), Marcelo Tosatti e depois Willy Tarreau (2.4) e o próprio Torvalds, Andrew Morton e Adrian Bunk (2.6). Para além dos núcleos "oficiais", "árvores" alternativas podem ser obtidas de outras fontes. Distribuidores de sistemas operativos completos mantêm as suas próprias versões do Linux, onde, por exemplo, incluem controladores de dispositivos que não se encontram incluídos na versão oficial.

Mascote

O mascote do Linux (núcleo e tudo que é relacionado) é um pinguim chamado Tux, criado por Larry Ewing. O motivo pelo qual a mascote é um pinguim é, como Torvalds disse, "O Linus gosta de pinguins. É isso." O nome Tux foi sugerido para representar Torvalds' Unix, e assim ficou.

Ver também

Erro de script: Nenhum módulo desse tipo "Portal".

Referências

  1. 1,0 1,1 1,2 «Linux Kernel Maintainers». Consultado em 29 de junho de 2021 
  2. «Linux kernel source tree». GitHub. Consultado em 10 de janeiro de 2022 
  3. «The Linux Kernel Open Source Project on Open Hub: Languages Page». Black Duck Open Hub. Consultado em 10 de janeiro de 2022 
  4. China Martens (28 de julho de 2006). «Linux creator Torvalds still no fan of GPLv3». InfoWorld. Consultado em 29 de junho de 2020 
  5. 5,0 5,1 5,2 «Linux Kernel Copying» (em English). Consultado em 29 de junho de 2020. Being under the terms of the GNU General Public License version 2 only 
  6. Stallman, Richard (11 de outubro de 2006). «Linux, GNU, and freedom». Free Software Foundation. Consultado em 29 de junho de 2020 
  7. «TOP500 Supercomputer Sites: Operating system Family / Linux» (em English). Top500.org. Consultado em 29 de junho de 2020 
  8. 8,0 8,1 Marjorie Richardson (1 de novembro de 1999). «Interview: Linus Torvalds». Linux Journal. Consultado em 29 de junho de 2020 
  9. Williams, Sam (março de 2002). «Chapter 9: The GNU General Public License». Free as in Freedom: Richard Stallman's Crusade for Free Software (em English). [S.l.]: O'Reilly. ISBN 0-596-00287-4. Consultado em 29 de junho de 2020 
  10. «The Linux Foundation Releases Linux Development Report» (em English). Linux Foundation. 24 de outubro de 2017. Consultado em 29 de junho de 2020. Cópia arquivada em 29 de junho de 2020 
  11. Kroah-Hartman, Greg. «The Linux Kernel Driver Interface». Linux Kernel Documentation (em English). Consultado em 29 de junho de 2020. Cópia arquivada em 7 de maio de 2020. This is being written to try to explain why Linux does not have a binary kernel interface, nor does it have a stable kernel interface. 
  12. Predefinição:Citar lista de discussão
  13. Predefinição:Citar lista de discussão
  14. «kernel/git/stable/linux-stable.git» (em English). git.kernel.org. Consultado em 29 de junho de 2020 
  15. 15,0 15,1 Michael Larabel (16 de setembro de 2017). «Linux 4.14 Dropping In-Tree Firmware». Phoronix. Consultado em 29 de junho de 2020 
  16. 16,0 16,1 Predefinição:Citar lista de discussão
  17. 17,0 17,1 «Minix3». Consultado em 29 de junho de 2020 
  18. Predefinição:Citar grupo de notícias
  19. Predefinição:Citar grupo de notícias
  20. 20,0 20,1 «GNU Hurd». GNU. Consultado em 30 de junho de 2020 
  21. Predefinição:Citar grupo de notícias
  22. Torvalds, Linus. «Release Notes for Linux v0.12». The Linux Kernel Archives. Consultado em 30 de junho de 2020 
  23. Predefinição:Citar grupo de notícias
  24. Predefinição:Citar grupo de notícias
  25. Thorsten Leemhuis (21 de outubro de 2010). «What's new in Linux 2.6.36». The H Open. Consultado em 30 de junho de 2020 
  26. 26,0 26,1 Predefinição:Citar lista de discussão
  27. Yamagata, Hiroo (1997). «The Pragmatist of Free Software». HotWired. Consultado em 30 de junho de 2020. Arquivado do original em 10 de fevereiro de 2007 
  28. Corbet, Jonathan (31 de janeiro de 2006). «GPLv3 and the kernel». LWN.net. Consultado em 30 de junho de 2020 
  29. Torvalds, Linus (8 de setembro de 2000). «Linux-2.4.0-test8». Linux-kernel mailing list archive. Unix Systems Support Group of Indiana University. Consultado em 30 de junho de 2020. Cópia arquivada em 15 de maio de 2020 
  30. Cox, Alan (20 de janeiro de 2006). «Re: GPL V3 and Linux». Linux-kernel mailing list archive. LWN.net. Consultado em 30 de junho de 2020 
  31. Shankland, Stephen (25 de setembro de 2006). «Top Linux programmers pan GPL 3». CNET News. Consultado em 30 de junho de 2020. Cópia arquivada em 5 de setembro de 2019 
  32. «Re: Linux GPL and binary module exception clause?». Consultado em 30 de junho de 2020. Cópia arquivada em 28 de abril de 2020 
  33. Stallman, Richard (11 de outubro de 2006). «Linux, GNU, and freedom». Free Software Foundation. Consultado em 30 de junho de 2020 
  34. «Linux-libre project». www.fsfla.org. Consultado em 30 de junho de 2020 
  35. «Trisquel GNU/Linux-libre | Trisquel GNU/Linux - Run free!». trisquel.info. Consultado em 30 de junho de 2020 
  36. «Debian 6.0 "Squeeze" to be released with completely free Linux Kernel». Debian news. 15 de dezembro de 2010. Consultado em 30 de junho de 2020 
  37. «Linux US trademark registration». Consultado em 30 de junho de 2020 
  38. 38,0 38,1 Marjorie Richardson (1 de novembro de 1997). «Ownership of Linux Trademark Resolved». Linux Journal. Consultado em 30 de junho de 2020 
  39. Neil McAllister (5 de setembro de 2005). «Linus gets tough on Linux trademark». InfoWorld. Consultado em 30 de junho de 2020 
  40. Phil Hughes (1 de março de 1997). «Action Taken on Linux Trademark». Linux Journal. Consultado em 30 de junho de 2020 
  41. «Report from the Courthouse 7 March». Groklaw article. 8 de março de 2007. Consultado em 30 de junho de 2020 
  42. «Court Rules: Novell owns the UNIX and UnixWare copyrights». Groklaw article. 10 de agosto de 2007. Consultado em 30 de junho de 2020 
  43. Ryan, Justin (26 de agosto de 2009). «SCO Will Try Again». Consultado em 30 de junho de 2020 
  44. Harvey, Tom (30 de março de 2010). «Jury says Novell owns Unix copyrights». The Salt Lake Tribune. MediaNews Group. Consultado em 30 de junho de 2020 
  45. Paul, Ryan (20 de julho de 2009). «Microsoft aims at VM market with Linux kernel code offering». Consultado em 30 de junho de 2020 
  46. Holwerda, Thom (23 de julho de 2009). «Microsoft's Linux Kernel Code Drop Result of GPL Violation». Consultado em 30 de junho de 2020 
  47. «Microsoft Contributes Linux Drivers to Linux Community». Microsoft. 20 de julho de 2009. Consultado em 30 de junho de 2020. Cópia arquivada em 9 de abril de 2017 
  48. Richmond, Gary (27 de julho de 2009). «Yes Linus, Microsoft hating is a disease. And it's a pandemic». Consultado em 30 de junho de 2020. Cópia arquivada em 22 de janeiro de 2016 
  49. O'Reilly (1999). The Tanenbaum-Torvalds Debate. [S.l.]: O'Reilly. 280 páginas. ISBN 1-56592-582-3. Consultado em 30 de junho de 2020 
  50. Predefinição:Citar grupo de notícias
  51. Torvalds, Linus (9 de maio de 2006). «Hybrid kernel, not NT». Consultado em 30 de junho de 2020 
  52. Tanenbaum, Andy (12 de maio de 2006). «Tanenbaum-Torvalds Debate: Part II». Consultado em 30 de junho de 2020 
  53. «Linux kernel patch for Intel Compiler». Consultado em 30 de junho de 2020. Arquivado do original em 22 de julho de 2011 
  54. «High Performance Linux Kernel Project — LinuxDNA». Slashdot. 26 de fevereiro de 2009. Consultado em 29 de junho de 2020 
  55. Justin Ryan (25 de fevereiro de 2009). «LinuxDNA Supercharges Linux with the Intel C/C++ Compiler». Linux Journal. Consultado em 29 de junho de 2020 
  56. Predefinição:Citar lista de discussão
  57. Larabel, Michael (12 de abril de 2014). «Linux 3.15 Can Almost Be Compiled Under LLVM's Clang». Phoronix. Consultado em 4 de julho de 2020 
  58. Larabel, Michael (12 de abril de 2014). «Patch By Patch, LLVM Clang Gets Better At Building The Linux Kernel». Phoronix. Consultado em 4 de julho de 2020 
  59. Edge, Jake (7 de maio de 2013). «LFCS: The LLVMLinux project». LWN.net. Consultado em 4 de julho de 2020 
  60. Möller, Jan-Simon (2 de fevereiro de 2014). «LLVMLinux: The Linux Kernel with Dragon Wings» (PDF). LLVM Project. Consultado em 4 de julho de 2020 
  61. «Building Linux with Clang/LLVM». The Linux Kernel Documentation. Consultado em 3 de julho de 2020 
  62. Michael Larabel (10 de setembro de 2019). «The New Features Of LLVM 9.0 & Clang 9.0 - Includes Building The Linux x86_64 Kernel». Phoronix. Consultado em 3 de julho de 2020 
  63. Michael Larabel (29 de janeiro de 2020). «Clang 10 + Linux 5.6 Will Be Able To Build A Working s390 Kernel». Phoronix. Consultado em 12 de janeiro de 2021 
  64. Michael Larabel (11 de outubro de 2020). «Linux 5.9 Released With Initial AMD RDNA 2 GPU Enablement, Other New Hardware Support». Phoronix. Consultado em 12 de janeiro de 2021 
  65. «Minimal requirements to compile the Kernel». The Linux Kernel Documentation. Consultado em 12 de janeiro de 2021 
  66. «Operating system Family» (em ingles). Top 500 Supercomputer Sites. 2009. Consultado em 30 de junho de 2020. Arquivado do original em 6 de abril de 2010 
  67. Greg Kroah-Hartman (2 de fevereiro de 2010). «Android and the Linux kernel community» (em ingles). Consultado em 30 de junho de 2020. This means that any drivers written for Android hardware platforms, can not get merged into the main kernel tree because they have dependencies on code that only lives in Google's kernel tree, causing it to fail to build in the kernel.org tree. Because of this, Google has now prevented a large chunk of hardware drivers and platform code from ever getting merged into the main kernel tree. Effectively creating a kernel branch that a number of different vendors are now relying on. 
  68. «Linux developer explains Android kernel code removal» (em ingles). ZDNet. 2 de fevereiro de 2010. Consultado em 30 de junho de 2020. Cópia arquivada em 23 de maio de 2020 
  69. «Maemo platform described as beeng based on Linux kernel» (em ingles). Maemo community. 9 de abril de 2010. Consultado em 30 de junho de 2020 
  70. 70,0 70,1 TANENBAUM, Andrew (1999). Sistemas Operacionais Modernos. Rio de Janeiro: LTC 
  71. 71,0 71,1 71,2 STALLINGS, William (2005). Operating systems: internals and design principles 5 ed. Upper Saddle River: Pearson Prentice Hall 
  72. Predefinição:Citar lista de discussão
  73. Arjan van de Ven. «kerneloops(8) - Linux man page». die.net. Consultado em 30 de junho de 2020 
  74. «Features/ABRTF12». Fedora Project Wiki. Consultado em 30 de junho de 2020 
  75. «Linux Kernel Oops». Kernel.org. Consultado em 30 de junho de 2020. Arquivado do original em 13 de agosto de 2017 
  76. David A. Wheeler (12 de outubro de 2004). «Linux Kernel 2.6: It's Worth More!». Consultado em 30 de junho de 2020 
  77. «Economic impact of FLOSS on innovation and competitiveness of the EU ICT sector, Table 3 on page 50» (PDF). 20 de novembro de 2006. Consultado em 30 de junho de 2020. Arquivado do original (PDF) em 24 de janeiro de 2007 
  78. «Estimating Total Development Cost Of a Linux Distribution, Tabela na página 6» (PDF). 2 de junho de 2020. Consultado em 30 de junho de 2020. Arquivado do original (PDF) em 11 de julho de 2010 
  79. «The Billion Dollar Kernel». Linux.slashdot.org. 24 de fevereiro de 2010. Consultado em 30 de junho de 2020 
  80. «Kernel 1.0 Source Code Release». Consultado em 30 de junho de 2020 
  81. «Kernel 1.2 Source Code Release». Consultado em 30 de junho de 2020 
  82. «Kernel 2.0.x Source Code Releases». Consultado em 30 de junho de 2020 
  83. «Kernel 2.2.x Source Code Releases». Consultado em 30 de junho de 2020 
  84. Joseph Pranevich. «The Wonderful World of Linux 2.2». Kniggit.net. Consultado em 30 de junho de 2020. Cópia arquivada em 17 de fevereiro de 2019 
  85. «Kernel 2.4.x Source Code Releases». Consultado em 30 de junho de 2020 
  86. Joseph Pranevich. «Wonderful World of Linux 2.4». Kniggit.net. Consultado em 30 de junho de 2020. Cópia arquivada em 7 de abril de 2016 
  87. «Kernel 2.6.x.y Source Code Releases». Consultado em 30 de junho de 2020 
  88. 88,0 88,1 Linus Torvalds (30 de maio de 2011). «Linux 3.0-rc1». Consultado em 30 de junho de 2020. Arquivado do original em 31 de maio de 2011 
  89. «Kernel 3.x.y Source Code Releases». Consultado em 30 de junho de 2020 
  90. «Kernel 4.x.y Source Code Releases». Consultado em 30 de junho de 2020 
  91. «Kernel 5.x.y Source Code Releases». Consultado em 30 de junho de 2020 
  92. Rusling, David A. (25 de janeiro de 1999). «The Linux Kernel». Consultado em 3 de julho de 2020 
  93. 93,0 93,1 «Linux 5.7 directory tree». git.kernel.org. Consultado em 3 de julho de 2020 
  94. Jones, Tim M, (2006), "Por Dentro do Processo de Inicialização do Linux". Disponível em: http://www.ibm.com/developerworks/br/library/l-linuxboot/. Acessado em 31 de janeiro de 2012
  95. «Index of /pub/linux/kernel/». Kernel.org. Consultado em 23 de junho de 2020 
  96. «Linux: 2.6.16.y Lives On». Consultado em 29 de junho de 2020. Arquivado do original em 24 de julho de 2012 
  97. «Linux: Maintaining A 2.6.16.y Tree». Consultado em 29 de junho de 2020. Arquivado do original em 9 de julho de 2012 
  98. 98,0 98,1 98,2 Predefinição:Citar lista de discussão
  99. 99,0 99,1 Predefinição:Citar lista de discussão
  100. Andrew Morton (18 de setembro de 2007). «2.6.23-rc6-mm1, "This Just Isn't Working Any More"». kerneltrap.org. Consultado em 29 de junho de 2020. Arquivado do original em 14 de julho de 2012 
  101. Predefinição:Citar lista de discussão
  102. Jonathan Corbet (13 de fevereiro de 2008). «linux-next and patch management process». LWN.net. Consultado em 29 de junho de 2020 
  103. Predefinição:Citar lista de discussão
  104. Alexandru Vaduva, Alex Gonzalez & Chris Simmonds (2016). Linux: Embedded Development. [S.l.]: Packt Publishing. p. 663. ISBN 9781787124455 
  105. Erro de citação: Marca <ref> inválida; não foi fornecido texto para as refs chamadas kernel.org
  106. Predefinição:Citar lista de discussão
  107. Predefinição:Citar lista de discussão
  108. 108,0 108,1 David Weinehall (8 de fevereiro de 2004). «[ANNOUNCE] Linux-kernel 2.0.40 aka ``The Moss-covered Tortoise''». Arquivado do original em 30 de maio de 2012 
  109. Predefinição:Citar lista de discussão
  110. 110,0 110,1 Marc-Christian Petersen (25 de fevereiro de 2004). «Linux 2.2.26». Arquivado do original em 8 de outubro de 2006 
  111. Predefinição:Citar lista de discussão
  112. 112,0 112,1 Predefinição:Citar lista de discussão
  113. Predefinição:Citar lista de discussão
  114. 114,0 114,1 Predefinição:Citar lista de discussão
  115. Predefinição:Citar lista de discussão
  116. 116,0 116,1 Predefinição:Citar lista de discussão
  117. Predefinição:Citar lista de discussão
  118. 118,0 118,1 Predefinição:Citar lista de discussão
  119. Predefinição:Citar lista de discussão
  120. 120,0 120,1 Predefinição:Citar lista de discussão
  121. Predefinição:Citar lista de discussão
  122. 122,0 122,1 Predefinição:Citar lista de discussão
  123. Predefinição:Citar lista de discussão
  124. 124,0 124,1 Predefinição:Citar lista de discussão
  125. Predefinição:Citar lista de discussão
  126. 126,0 126,1 Predefinição:Citar lista de discussão
  127. Predefinição:Citar lista de discussão
  128. 128,0 128,1 Predefinição:Citar lista de discussão
  129. Predefinição:Citar lista de discussão
  130. 130,0 130,1 Predefinição:Citar lista de discussão
  131. Predefinição:Citar lista de discussão
  132. 132,0 132,1 Predefinição:Citar lista de discussão
  133. Predefinição:Citar lista de discussão
  134. 134,0 134,1 Predefinição:Citar lista de discussão
  135. Predefinição:Citar lista de discussão
  136. 136,0 136,1 Predefinição:Citar lista de discussão
  137. Predefinição:Citar lista de discussão
  138. 138,0 138,1 Predefinição:Citar lista de discussão
  139. Predefinição:Citar lista de discussão
  140. 140,0 140,1 Predefinição:Citar lista de discussão
  141. Predefinição:Citar lista de discussão
  142. 142,0 142,1 Predefinição:Citar lista de discussão
  143. Predefinição:Citar lista de discussão
  144. 144,0 144,1 Predefinição:Citar lista de discussão
  145. Predefinição:Citar lista de discussão
  146. 146,0 146,1 Predefinição:Citar lista de discussão
  147. Predefinição:Citar lista de discussão
  148. Predefinição:Citar lista de discussão
  149. «Linux 2.6.27». Linux Kernel Newbies. Consultado em 29 de junho de 2020 
  150. 150,0 150,1 Predefinição:Citar lista de discussão
  151. Predefinição:Citar lista de discussão
  152. 152,0 152,1 Predefinição:Citar lista de discussão
  153. Predefinição:Citar lista de discussão
  154. 154,0 154,1 Predefinição:Citar lista de discussão
  155. Predefinição:Citar lista de discussão
  156. 156,0 156,1 Predefinição:Citar lista de discussão
  157. Predefinição:Citar lista de discussão
  158. 158,0 158,1 Predefinição:Citar lista de discussão
  159. Predefinição:Citar lista de discussão
  160. 160,0 160,1 Predefinição:Citar lista de discussão
  161. Predefinição:Citar lista de discussão
  162. «Linux 2.6.32». Linux Kernel Newbies. Consultado em 29 de junho de 2020 
  163. Predefinição:Citar lista de discussão
  164. «Linux 2.6.33.20». gmane.org. Consultado em 31 de maio de 2020. Arquivado do original em 26 de janeiro de 2016 
  165. 165,0 165,1 Predefinição:Citar lista de discussão
  166. Predefinição:Citar lista de discussão
  167. 167,0 167,1 Predefinição:Citar lista de discussão
  168. Predefinição:Citar lista de discussão
  169. 169,0 169,1 Predefinição:Citar lista de discussão
  170. Predefinição:Citar lista de discussão
  171. 171,0 171,1 Predefinição:Citar lista de discussão
  172. Predefinição:Citar lista de discussão
  173. 173,0 173,1 Predefinição:Citar lista de discussão
  174. Predefinição:Citar lista de discussão
  175. 175,0 175,1 Predefinição:Citar lista de discussão
  176. Predefinição:Citar lista de discussão
  177. 177,0 177,1 Predefinição:Citar lista de discussão
  178. Predefinição:Citar lista de discussão
  179. Michael Larabel (22 de julho de 2011). «Linux 3.0 Kernel Has Been Christened». Phoronix. Consultado em 2 de novembro de 2021 
  180. 180,0 180,1 Predefinição:Citar lista de discussão
  181. «Linux v3.0.101». Linux kernel stable tree. 22 de outubro de 2013. Consultado em 29 de junho de 2020 
  182. Thorsten Leemhuis (12 de janeiro de 2012). «Kernel Log: 15,000,000 lines, 3.0 promoted to long-term kernel». The H Open. Consultado em 29 de junho de 2020 
  183. Predefinição:Citar lista de discussão
  184. Michael Larabel (24 de outubro de 2011). «The Belated Linux 3.1 Kernel Is Released». Phoronix. Consultado em 2 de novembro de 2021 
  185. 185,0 185,1 Predefinição:Citar lista de discussão
  186. Michael Larabel (4 de janeiro de 2012). «Linux 3.2 Kernel Officially Christened». Phoronix. Consultado em 2 de novembro de 2021 
  187. 187,0 187,1 Predefinição:Citar lista de discussão
  188. Predefinição:Citar lista de discussão
  189. Michael Larabel (18 de março de 2012). «Linux 3.3 Kernel Officially Released». Phoronix. Consultado em 2 de novembro de 2021 
  190. 190,0 190,1 Predefinição:Citar lista de discussão
  191. Predefinição:Citar lista de discussão
  192. Michael Larabel (21 de maio de 2012). «Linux 3.4 Kernel Released With Many New Features». Phoronix. Consultado em 2 de novembro de 2021 
  193. 193,0 193,1 Predefinição:Citar lista de discussão
  194. Predefinição:Citar lista de discussão
  195. Michael Larabel (21 de julho de 2012). «Linux 3.5 Kernel Officially Released». Phoronix. Consultado em 2 de novembro de 2021 
  196. 196,0 196,1 Predefinição:Citar lista de discussão
  197. Predefinição:Citar lista de discussão
  198. Michael Larabel (30 de setembro de 2012). «Linux 3.6 Kernel Released». Phoronix. Consultado em 2 de novembro de 2021 
  199. 199,0 199,1 Predefinição:Citar lista de discussão
  200. Predefinição:Citar lista de discussão
  201. Michael Larabel (11 de dezembro de 2012). «Linux 3.7 Kernel Officially Released». Phoronix. Consultado em 2 de novembro de 2021 
  202. 202,0 202,1 Predefinição:Citar lista de discussão
  203. Predefinição:Citar lista de discussão
  204. Michael Larabel (18 de fevereiro de 2013). «Linux 3.8 Kernel Officially Released». Phoronix. Consultado em 2 de novembro de 2021 
  205. 205,0 205,1 Predefinição:Citar lista de discussão
  206. Greg Kroah-Hartman. «Linux 3.8 is NOT a longterm kernel». Linux Foundation. Consultado em 20 de maio de 2020. Arquivado do original em 1 de maio de 2013 
  207. Predefinição:Citar lista de discussão
  208. Michael Larabel (28 de abril de 2013). «Linux 3.9 Kernel Released With Lots Of Features». Phoronix. Consultado em 2 de novembro de 2021 
  209. 209,0 209,1 Predefinição:Citar lista de discussão
  210. Predefinição:Citar lista de discussão
  211. Michael Larabel (30 de junho de 2013). «Feature-Rich Linux 3.10 Kernel Officially Released». Phoronix. Consultado em 2 de novembro de 2021 
  212. 212,0 212,1 Predefinição:Citar lista de discussão
  213. Predefinição:Citar lista de discussão
  214. Michael Larabel (3 de setembro de 2013). «Linux 3.11 Kernel Released». Phoronix. Consultado em 2 de novembro de 2021 
  215. 215,0 215,1 Predefinição:Citar lista de discussão
  216. Predefinição:Citar lista de discussão
  217. Michael Larabel (3 de novembro de 2013). «Linux 3.12 Kernel Released; Linux 4.0 Planning Talked Up». Phoronix. Consultado em 2 de novembro de 2021 
  218. 218,0 218,1 Predefinição:Citar lista de discussão
  219. Predefinição:Citar lista de discussão
  220. Predefinição:Citar lista de discussão
  221. Michael Larabel (19 de janeiro de 2014). «The Linux 3.13 Kernel Has Been Released». Phoronix. Consultado em 2 de novembro de 2021 
  222. 222,0 222,1 Predefinição:Citar lista de discussão
  223. Predefinição:Citar lista de discussão
  224. Michael Larabel (31 de março de 2014). «The Linux 3.14 Kernel Has Been Released With Great Features». Phoronix. Consultado em 2 de novembro de 2021 
  225. 225,0 225,1 Predefinição:Citar lista de discussão
  226. Predefinição:Citar lista de discussão
  227. Michael Larabel (8 de junho de 2014). «Linux 3.15 Kernel Released». Phoronix. Consultado em 2 de novembro de 2021 
  228. 228,0 228,1 Predefinição:Citar lista de discussão
  229. Predefinição:Citar lista de discussão
  230. Michael Larabel (3 de agosto de 2014). «The Linux 3.16 Kernel Has Been Released». Phoronix. Consultado em 2 de novembro de 2021 
  231. 231,0 231,1 Predefinição:Citar lista de discussão
  232. Predefinição:Citar lista de discussão
  233. Michael Larabel (5 de outubro de 2014). «Linux 3.17 Kernel Released With Many Great Features». Phoronix. Consultado em 2 de novembro de 2021 
  234. 234,0 234,1 Predefinição:Citar lista de discussão
  235. Predefinição:Citar lista de discussão
  236. Michael Larabel (7 de dezembro de 2014). «Linux 3.18 Kernel Released, But It Doesn't Fix That Odd Regression». Phoronix. Consultado em 2 de novembro de 2021 
  237. 237,0 237,1 Predefinição:Citar lista de discussão
  238. Predefinição:Citar lista de discussão
  239. Michael Larabel (8 de fevereiro de 2015). «Linux 3.19 Kernel Released». Phoronix. Consultado em 2 de novembro de 2021 
  240. 240,0 240,1 Predefinição:Citar lista de discussão
  241. «Linux v3.19.8». Linux kernel stable tree. 11 de maio de 2015. Consultado em 29 de junho de 2020 
  242. Predefinição:Citar lista de discussão
  243. Michael Larabel (12 de abril de 2015). «Linux 4.0 Kernel Released». Phoronix. Consultado em 2 de novembro de 2021 
  244. 244,0 244,1 Predefinição:Citar lista de discussão
  245. Predefinição:Citar lista de discussão
  246. Michael Larabel (22 de junho de 2015). «Linux 4.1 Kernel Release Brings Performance Improvements, New Hardware Support». Phoronix. Consultado em 2 de novembro de 2021 
  247. 247,0 247,1 Predefinição:Citar lista de discussão
  248. Predefinição:Citar lista de discussão
  249. Michael Larabel (30 de agosto de 2015). «Linux 4.2 Kernel Officially Released». Phoronix. Consultado em 2 de novembro de 2021 
  250. 250,0 250,1 Predefinição:Citar lista de discussão
  251. Predefinição:Citar lista de discussão
  252. Michael Larabel (1 de novembro de 2015). «Linux 4.3 Kernel Released». Phoronix. Consultado em 2 de novembro de 2021 
  253. 253,0 253,1 Predefinição:Citar lista de discussão
  254. Predefinição:Citar lista de discussão
  255. Michael Larabel (10 de janeiro de 2016). «Linux 4.4 Kernel Officially Released». Phoronix. Consultado em 2 de novembro de 2021 
  256. 256,0 256,1 Predefinição:Citar lista de discussão
  257. Predefinição:Citar lista de discussão
  258. Michael Larabel (14 de março de 2016). «Linux 4.5 Kernel Officially Released». Phoronix. Consultado em 2 de novembro de 2021 
  259. 259,0 259,1 Predefinição:Citar lista de discussão
  260. Predefinição:Citar lista de discussão
  261. Michael Larabel (15 de maio de 2016). «Linux 4.6 Kernel Officially Released». Phoronix. Consultado em 2 de novembro de 2021 
  262. 262,0 262,1 Predefinição:Citar lista de discussão
  263. Predefinição:Citar lista de discussão
  264. Michael Larabel (24 de julho de 2016). «Linux 4.7 Kernel Officially Released». Phoronix. Consultado em 2 de novembro de 2021 
  265. 265,0 265,1 Predefinição:Citar lista de discussão
  266. Predefinição:Citar lista de discussão
  267. Michael Larabel (2 de outubro de 2016). «Linux 4.8 Kernel Released». Phoronix. Consultado em 2 de novembro de 2021 
  268. 268,0 268,1 Predefinição:Citar lista de discussão
  269. Predefinição:Citar lista de discussão
  270. Michael Larabel (11 de dezembro de 2016). «Linux 4.9 Kernel Officially Released». Phoronix. Consultado em 2 de novembro de 2021 
  271. Predefinição:Citar lista de discussão
  272. 272,0 272,1 272,2 272,3 272,4 272,5 «Active kernel releases». The Linux Kernel Archives. Consultado em 22 de agosto de 2022 
  273. Predefinição:Citar lista de discussão
  274. Michael Larabel (19 de fevereiro de 2017). «Linux 4.10 Kernel Released». Phoronix. Consultado em 2 de novembro de 2021 
  275. 275,0 275,1 Predefinição:Citar lista de discussão
  276. Predefinição:Citar lista de discussão
  277. Michael Larabel (1 de maio de 2017). «Linux 4.11 Kernel Officially Released». Phoronix. Consultado em 2 de novembro de 2021 
  278. 278,0 278,1 Predefinição:Citar lista de discussão
  279. Predefinição:Citar lista de discussão
  280. Michael Larabel (2 de julho de 2017). «Linux 4.12 Kernel Released». Phoronix. Consultado em 2 de novembro de 2021 
  281. 281,0 281,1 Predefinição:Citar lista de discussão
  282. Predefinição:Citar lista de discussão
  283. Michael Larabel (3 de setembro de 2017). «Linux 4.13 Kernel Released». Phoronix. Consultado em 2 de novembro de 2021 
  284. 284,0 284,1 Predefinição:Citar lista de discussão
  285. Predefinição:Citar lista de discussão
  286. Michael Larabel (12 de novembro de 2017). «Linux 4.14 Kernel Officially Released». Phoronix. Consultado em 2 de novembro de 2021 
  287. Predefinição:Citar lista de discussão
  288. Predefinição:Citar lista de discussão
  289. Michael Larabel (28 de janeiro de 2018). «Linux 4.15 Kernel Released, Time For The Linux 4.16 Merge Window». Phoronix. Consultado em 2 de novembro de 2021 
  290. 290,0 290,1 Predefinição:Citar lista de discussão
  291. Predefinição:Citar lista de discussão
  292. Michael Larabel (1 de abril de 2018). «Linux 4.16 Kernel Officially Released With Many Driver Improvements, Performance Tuning». Phoronix. Consultado em 2 de novembro de 2021 
  293. 293,0 293,1 Predefinição:Citar lista de discussão
  294. Predefinição:Citar lista de discussão
  295. Michael Larabel (3 de junho de 2018). «Linux 4.17 Kernel Released With Big Updates For AMDGPU, CPU Power-Savings». Phoronix. Consultado em 2 de novembro de 2021 
  296. 296,0 296,1 Predefinição:Citar lista de discussão
  297. Predefinição:Citar lista de discussão
  298. Michael Larabel (12 de agosto de 2018). «Linux 4.18 Kernel Officially Released». Phoronix. Consultado em 2 de novembro de 2021 
  299. 299,0 299,1 Predefinição:Citar lista de discussão
  300. Predefinição:Citar lista de discussão
  301. Michael Larabel (22 de outubro de 2018). «Greg KH Releases Big Linux 4.19 Kernel, Codenamed "People's Front"». Phoronix. Consultado em 2 de novembro de 2021 
  302. Predefinição:Citar lista de discussão
  303. Predefinição:Citar lista de discussão
  304. Michael Larabel (23 de dezembro de 2018). «Linux 4.20 Kernel Released To End The Year On A High Note». Phoronix. Consultado em 2 de novembro de 2021 
  305. 305,0 305,1 Predefinição:Citar lista de discussão
  306. Predefinição:Citar lista de discussão
  307. Michael Larabel (3 de março de 2019). «Linux 5.0 Kernel Released With Long-Awaited FreeSync Support, Many New/Improved Features». Phoronix. Consultado em 2 de novembro de 2021 
  308. 308,0 308,1 Predefinição:Citar lista de discussão
  309. Predefinição:Citar lista de discussão
  310. Michael Larabel (5 de maio de 2019). «Linux 5.1 Has Been Released With Plenty Of New Features». Phoronix. Consultado em 2 de novembro de 2021 
  311. 311,0 311,1 Predefinição:Citar lista de discussão
  312. Predefinição:Citar lista de discussão
  313. Michael Larabel (7 de julho de 2019). «Linux 5.2 Kernel Released As The "Bobtail Squid"». Phoronix. Consultado em 2 de novembro de 2021 
  314. 314,0 314,1 Predefinição:Citar lista de discussão
  315. Predefinição:Citar lista de discussão
  316. Michael Larabel (15 de setembro de 2019). «Linux 5.3 Kernel Released With AMD Navi Support, Intel Speed Select & More». Phoronix. Consultado em 2 de novembro de 2021 
  317. 317,0 317,1 Predefinição:Citar lista de discussão
  318. Predefinição:Citar lista de discussão
  319. Michael Larabel (24 de novembro de 2019). «Linux 5.4 Kernel Released With exFAT Support, Faster Radeon Graphics, New Hardware». Phoronix. Consultado em 2 de novembro de 2021 
  320. Predefinição:Citar lista de discussão
  321. Predefinição:Citar lista de discussão
  322. Michael Larabel (26 de janeiro de 2020). «Linux 5.5 Released With Many Hardware Support Improvements». Phoronix. Consultado em 2 de novembro de 2021 
  323. 323,0 323,1 Predefinição:Citar lista de discussão
  324. Predefinição:Citar lista de discussão
  325. Michael Larabel (29 de março de 2020). «Linux 5.6 Kernel Released With WireGuard, USB4, New AMD + Intel Hardware Support». Phoronix. Consultado em 2 de novembro de 2021 
  326. 326,0 326,1 Predefinição:Citar lista de discussão
  327. Predefinição:Citar lista de discussão
  328. Michael Larabel (31 de maio de 2020). «Linux 5.7 Kernel Released With New Apple Driver, Official Intel Gen12 Graphics». Phoronix. Consultado em 2 de novembro de 2021 
  329. 329,0 329,1 Predefinição:Citar lista de discussão
  330. Predefinição:Citar lista de discussão
  331. Michael Larabel (2 de agosto de 2020). «Linux 5.8 Released With AMD Energy Driver, F2FS LZO-RLE, IBM POWER10 Booting». Phoronix. Consultado em 2 de novembro de 2021 
  332. 332,0 332,1 Predefinição:Citar lista de discussão
  333. Predefinição:Citar lista de discussão
  334. Michael Larabel (11 de outubro de 2020). «Linux 5.9 Released With Initial AMD RDNA 2 GPU Enablement, Other New Hardware Support». Phoronix. Consultado em 2 de novembro de 2021 
  335. 335,0 335,1 Predefinição:Citar lista de discussão
  336. Predefinição:Citar lista de discussão
  337. Michael Larabel (13 de dezembro de 2020). «Linux 5.10 LTS Released As One Of The Biggest Kernel Releases In A While». Phoronix. Consultado em 10 de outubro de 2021 
  338. Predefinição:Citar lista de discussão
  339. Predefinição:Citar lista de discussão
  340. Michael Larabel (14 de fevereiro de 2021). «Linux 5.11 Released With Intel Integer Scaling, AMD Performance Boost, RTX 30 KMS». Phoronix. Consultado em 10 de outubro de 2021 
  341. 341,0 341,1 Predefinição:Citar lista de discussão
  342. Predefinição:Citar lista de discussão
  343. Michael Larabel (25 de abril de 2021). «Linux 5.12 Released With Intel Xe Variable Rate Refresh, Clang LTO, KFENCE + More». Phoronix. Consultado em 10 de outubro de 2021 
  344. 344,0 344,1 Predefinição:Citar lista de discussão
  345. Predefinição:Citar lista de discussão
  346. Michael Larabel (27 de junho de 2021). «Linux 5.13 Released With Apple M1 Bringup, Landlock, FreeSync HDMI + Much More». Phoronix. Consultado em 10 de outubro de 2021 
  347. 347,0 347,1 Predefinição:Citar lista de discussão
  348. Predefinição:Citar lista de discussão
  349. Michael Larabel (29 de agosto de 2021). «Linux 5.14 Released With New Hardware Support, Core Scheduling, MEMFD_SECRET». Phoronix. Consultado em 4 de setembro de 2021 
  350. 350,0 350,1 Predefinição:Citar lista de discussão
  351. Predefinição:Citar lista de discussão
  352. Michael Larabel (31 de outubro de 2021). «Linux 5.15 Released With Initial Intel DG2/Alchemist + Xe HPG Code, New NTFS Driver». Phoronix. Consultado em 2 de novembro de 2021 
  353. Predefinição:Citar lista de discussão
  354. Predefinição:Citar lista de discussão
  355. Michael Larabel (9 de janeiro de 2022). «Linux 5.16 Released With Many Intel & AMD Additions, Memory Folios, AMX, FUTEX2». Phoronix. Consultado em 10 de janeiro de 2022 
  356. 356,0 356,1 Predefinição:Citar lista de discussão
  357. Predefinição:Citar lista de discussão
  358. Michael Larabel (20 de março de 2022). «Linux 5.17 Released With AMD P-State Driver, Plenty Of New Hardware Support». Phoronix. Consultado em 29 de março de 2022 
  359. 359,0 359,1 Predefinição:Citar lista de discussão
  360. Predefinição:Citar lista de discussão
  361. Michael Larabel (22 de maio de 2022). «Linux 5.18 Released With Intel SDSi, New CPU & GPU Features». Phoronix. Consultado em 30 de maio de 2022 
  362. 362,0 362,1 Predefinição:Citar lista de discussão
  363. Predefinição:Citar lista de discussão
  364. Michael Larabel (31 de julho de 2022). «Linux 5.19 Released - Linus Torvalds Released It From An Apple Silicon MacBook». Phoronix. Consultado em 22 de agosto de 2022 
  365. Predefinição:Citar lista de discussão
  366. Predefinição:Citar lista de discussão
  367. Predefinição:Citar lista de discussão
  368. Predefinição:Citar lista de discussão
  369. «Linux Kernel Archives: Volume 1». Consultado em 29 de junho de 2020. Arquivado do original em 11 de maio de 2005 
  370. Julian Horsey (31 de maio de 2011). «Linux Celebrates 20th Birthday By Releasing Kernel Version 3 By Linus Torvalds». Geeky Gadgets. Consultado em 29 de junho de 2020 
  371. «Kernel Release Numbering Redux». Consultado em 29 de junho de 2020. Arquivado do original em 13 de julho de 2012 
  372. Predefinição:Citar lista de discussão

Ligações externas

Wikilivros
O Wikilivros tem um livro chamado Guia foca Linux
Commons
O Commons possui imagens e outros ficheiros sobre Linux (núcleo)

Predefinição:Linux

talvez você goste