Linux (núcleo) – Wikipédia, a enciclopédia livre
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Disambig_grey.svg/20px-Disambig_grey.svg.png)
Linux | |
---|---|
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 (32 anos) |
Versão estável | 6.9.1 (17 de maio de 2024[±][2][3] [+/-] | )
Versão em teste | 6.9-rc7 (5 de maio de 2024[±][4] [+/-] | )
Idioma(s) | Inglês |
Escrito em | C (~97%), C++, Assembly, Perl, shell e outras.[5][6] |
Sistema operacional | Tipo unix |
Gênero(s) | Núcleo monolítico |
Licença | GNU GPLv2 (apenas)[7][8] e vários borrões binários com licenças variadas[9] |
Estado do desenvolvimento | Corrente |
Página oficial | www |
Repositório | git |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Linux_kernel_ubiquity.svg/300px-Linux_kernel_ubiquity.svg.png)
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.[10]
O núcleo (kernel) Linux foi concebido e criado em 1991 por Linus Torvalds[11] 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.[12] 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.[13]
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.[14]
Desenvolvido por contribuições de todo o mundo, sob licença GNU General Public License versão 2 (GPLv2),[8][15] 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,[16] com versões mantidas por mais de seis anos, e diversas imagens de firmware distribuídas sob licenças não livres[17] até a versão 4.13.[18][19]
O Linux foi concebido pelo estudante do Departamento de Ciência da Computação da Universidade de Helsinki na Finlândia,[11] Linus Torvalds com ajuda de vários programadores voluntários por meio de um grupo de discussão da Usenet em 1991.
História
[editar | editar código-fonte]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.[20]
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,[21] então em 26 de agosto de 1991, Torvalds postou a seguinte mensagem para comp.os.minix, um grupo de notícias na Usenet:
“ | Olá todo mundo que utiliza o minix - Eu estou fazendo um sistema operacional (livre) (apenas como passatempo, não vai ser grande e profissional como o GNU) para clones AT 386(486). Ele tem amadurecido desde Abril e está começando a ficar pronto. Eu gostaria de quaisquer comentários sobre coisas que as pessoas gostam/não gostam no minix, já que meu SO lembra um pouco o minix (mesma disposição física do sistema de arquivos (devido a razões práticas) entre outras coisas). Eu já portei o bash (1.08) e o gcc (1.40), tudo parece estar funcionando. Isso significa que eu vou conseguir algo prático dentro de alguns meses e eu gostaria de saber que características as pessoas gostariam que houvesse. Todas sugestões são bem vindas, mas eu não prometo que serão incorporadas :-) Linus ([email protected]) PS. Sim - ele é livre de qualquer código do minix e possui um sistema de arquivos com múltiplas linhas de execução (multi-threaded), ele NÃO é portável (usa troca de contexto do 386 etc) e provavelmente nunca vai suportar nada além dos discos rígidos AT, já que é tudo que eu possuo :-(. [22] | ” |
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.[23]
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 inglês: HUT), possuía 10 239 linhas de código. Em setembro de 1991, a versão 0.02 do Linux foi lançada.[24]
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.[25]
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.[26] Em 31 de Março de 1992 o alt.os.linux passou a se chamar comp.os.linux.[27]
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).[28]
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 princípio 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.[29]
Aspectos Legais
[editar | editar código-fonte]Termos de Licenciamento
[editar | editar código-fonte]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".[30]
Licenciamento GPL
[editar | editar código-fonte]![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Magnifying_glass_01.svg/17px-Magnifying_glass_01.svg.png)
Atualmente, o Linux está licenciado sob a versão 2 da GPL[8] 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.[31] 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.[32] 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.[33] 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".[34] 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
[editar | editar código-fonte]![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Magnifying_glass_01.svg/17px-Magnifying_glass_01.svg.png)
É debatido se módulos carregáveis do núcleo (em inglês: LKMs) 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."[35] 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.[36] 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.[37][38] 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.[39]
Marca registrada
[editar | editar código-fonte]O Linux é uma marca registrada por Linus Torvalds nos Estados Unidos[40] 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[41] e depois pediu royalties pelo uso da marca Linux.[42] Vários apoiadores do Linux integraram um conselho legal e entraram com uma ação contra Della Croce,[43] que em 1998 concordou em repassar o registro da marca, para Linus Torvalds.[41]
Litigação do SCO
[editar | editar código-fonte]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.[44] 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,[45] 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.[46] O caso foi decidido em 30 de março de 2010, em favor da Novell.[47]
Submissão do Hyper-V pela Microsoft
[editar | editar código-fonte]Em junho de 2009 a Microsoft "contribuiu" com 20 000 linhas de código para o Linux. A contribuição consistia de controladores (em inglês: drivers) 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.[48][49][50][51]
Características técnicas
[editar | editar código-fonte]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
[editar | editar código-fonte]![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Linux_kernel_map.png/220px-Linux_kernel_map.png)
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 inglês: SMP). 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
[editar | editar código-fonte]![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Magnifying_glass_01.svg/17px-Magnifying_glass_01.svg.png)
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.[52] O debate iniciou em 1992, sobre Linux e arquiteturas de núcleo em geral no grupo de discussão comp.os.minix na Usenet.[53] 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,[54] e em 12 de maio de 2006 Tanenbaum escreveu uma declaração.[55]
Linguagens de programação
[editar | editar código-fonte]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
[editar | editar código-fonte]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
[editar | editar código-fonte]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.[56] Outro sucesso foi apresentado em 2009, com um 2.6,22 modificado.[57][58]
Desde 2010, esforços têm sido feitos para compilar o Linux com Clang, um compilador alternativo para a linguagem C;[59] em 12 de abril de 2014, o núcleo oficial quase poderia ser compilado com o Clang.[60][61] 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.[62] 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.[63]
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[64][65], na versão 5.6 com o Clang 10 para a arquitetura IBM s390[66] e na versão 5.9 para a arquietura x86 de 32-bits.[67][68]
Portabilidade
[editar | editar código-fonte]![](http://upload.wikimedia.org/wikipedia/commons/thumb/2/21/Samsung_Galaxy_Note_series_20140614.jpg/220px-Samsung_Galaxy_Note_series_20140614.jpg)
O Linux não seria projetado para ser portável em seu projeto inicial, a princípio 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.[69]
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.[70][71][72]
Processos
[editar | editar código-fonte]Um processo é uma instância de um programa em execução.[73] 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 init, cujo PID é 1. Este processo é criado pelo processo 0, que é um encadeamento (thread) do próprio núcleo. O processo init 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 fork() (processos tradicionais ou heavy weight) e clone() (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 (task_struct), que contém todas as informações relativas ao processo; (ii) uma fila (runqueue) 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
[editar | editar código-fonte]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 inglês: firtst-in, first-out FIFO) ou "todos contra todos" (em inglês: Round-Robin RR) 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 inglês: completely fair scheduler CFS).
Gerenciamento de memória
[editar | editar código-fonte]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;[73][74]
- (ii) proteção de memória, para impedir que um processo utilize um endereço de memória que não lhe pertença;[74]
- (iii) partilha de memória — processos diferentes podem partilhar código ou dados;[74]
- (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 inglês: Page Address Extension PAE) – 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 PAGE_OFFSET . O espaço do núcleo é único e começa depois do espaço do usuário. Na arquitetura x86 PAGE_OFFSET 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 (mem_map, 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 inglês: aging). A primeira (active_list) 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 (inactive_list) contém as candidatas a paginação (em inglês: page out).
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 inactive_list é liberada. Entretanto, existe um processo chamado kswapd, inicializado pelo núcleo, que verifica, periodicamente, o número de páginas livres. Caso este número seja menor que pages_low, kswapd é acordado para liberar páginas. Se o valor chegar a pages_min, kswapd entra num regime síncrono para agilizar a liberação. Quando o valor de páginas livres atingir pages_high, kswapd vai dormir.
Sistema de arquivos
[editar | editar código-fonte]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 (fsck). 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
[editar | editar código-fonte]![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/71/Kernel-panic.jpg/220px-Kernel-panic.jpg)
Uma falha do núcleo (em inglês: kernel panic) é 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".[75] O relatório é automaticamente recolhido pelo software kerneloops[76] ou pela extensão kernel oops do abrt[77] e enviado ao kerneloops.org. O Kerneloops.org reúne estes relatórios e publica estatísticas em seu sítio.[78]
Custo estimado
[editar | editar código-fonte]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.[79] 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).[80]
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).[81] 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.[82]
Histórico de recursos
[editar | editar código-fonte]A versão 1.0 do Linux foi lançada em 14 de março de 1994.[83] 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,[84] ganhou suporte as arquiteturas Alpha, SPARC, e MIPS.
A versão 2.0 foi lançada em 09 de junho de 1996.[85] 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,[86] 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.[87]
A versão 2.4.0, lançada em 04 de janeiro de 2001,[88] continha suporte para Ligar e Usar ISA, USB, e PC Cards.[89] 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 inglês: LVM) 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.[90] 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 inglês: PAE), suporte a diversas linhas novas de CPUs, integração da Arquitetura de Som Avançada do Linux (em inglês: ALSA) 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 inglês: changelog) 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[91] (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.[91][92]
A versão 4.0 foi lançada em 12 de abril de 2015.[93]
A versão 5.0 foi lançada em 3 de março de 2019.[94]
Estrutura do código fonte
[editar | editar 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.[95]
Os principais arquivos são:[96]
- 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:[96]
- 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[18][19] 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
[editar | editar código-fonte]O processo de inicialização do núcleo Linux é composto por diversas etapas.[97] 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
[editar | editar código-fonte]Linha do tempo
[editar | editar código-fonte]Ref: www.kernel.org[98]
![](http://upload.wikimedia.org/wikipedia/pt/timeline/s597l4kde4f61oj5w6sbt3ma1viw8og.png)
Modelo de desenvolvimento
[editar | editar código-fonte]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 inglês: vanilla) ou "principais" (em inglês: mainline), 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 inglês: stable team) (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.[99] 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.[100] Deste então, o "time estável" (em inglês: stable team) 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.[101] O time estável apoiou a ideia[102] e desde 2010[update] 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.[103] Em fevereiro de 2008, Stephen Rothwell criou a árvore linux-next (em português: próximo-linux) em que correções que almejam serem incorporadas durante o próximo ciclo de desenvolvimento.[104][105] Vários mantenedores de subsistemas também adotaram o sufixo -next (em português: próximo(a)) 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
[editar | editar código-fonte]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.[106]
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.[107] Em maio de 2024[update], havia seis núcleos Linux de longo prazo: 6.6.31, 6.1.91, 5.15.159, 5.10.217, 5.4.276 e 4.19.314.[108]
Versões antes da 2.0
[editar | editar código-fonte]Série | Data de lançamento original | Última versão | Mantenedor | Modelo de suporte |
---|---|---|---|---|
0.01 | 17 de setembro de 1991 | 0.03 | Linus Torvalds | Descontinuado |
0.02 | 5 de outubro de 1991 | Linus Torvalds | Descontinuado | |
0.10 | novembro de 1991 | 0.12 | Linus Torvalds | Descontinuado |
0.95 | 8 de março de 1992 | 0.99.15 | Linus Torvalds | Descontinuado |
1.0 | 14 de março de 1994 | 1.0.9 | Linus Torvalds | Descontinuado |
1.1 | 6 de abril de 1994 | 1.1.95 | Linus Torvalds | Descontinuado |
1.2 | 7 de março de 1995 | 1.2.13 | Linus Torvalds | Descontinuado |
1.3 | 12 de junho de 1995 | 1.3.100[109] | Linus Torvalds | Descontinuado |
pre2.0 | 12 de maio de 1996 | pre2.0.14 | Linus Torvalds | Descontinuado |
Legenda: Versão antiga |
Versão 2.0 até 2.4
[editar | editar código-fonte]Série | Data de lançamento original | Última versão | Mantenedor | Modelo de suporte |
---|---|---|---|---|
2.0 | 9 de junho de 1996[110] | 2.0.40[111] | David Weinehall | Oficialmente descontinuado com o lançamento da versão 2.2.0 (suportado de junho de 1996 até fevereiro de 2004)[111] |
2.2 | 20 de janeiro de 1999[112] | 2.2.26[113] | Marc-Christian Petersen (ex-mantenedor Alan Cox) | Descontinuado (suportado de janeiro de 1999 até fevereiro de 2004)[113] |
2.4 | 4 de janeiro de 2001[114] | 2.4.37.11[115] | Willy Tarreau (ex-mantenedor Marcelo Tosatti) | Descontinuado (suportado de janeiro de 2001 até dezembro de 2010)[115] |
Legenda: Versão antiga |
Versão 2.6.x.y
[editar | editar código-fonte]Série | Data de lançamento original | Última versão | Mantenedor | Modelo de suporte |
---|---|---|---|---|
2.6 | 17 de dezembro de 2003[116] | 2.6.10[117] | Linus Torvalds | Versão estável de curto prazo (suportada de dezembro de 2003 até dezembro de 2004)[117] |
2.6.11 | 2 de março de 2005[118] | 2.6.11.12[119] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de março de 2005 a junho de 2005)[119] |
2.6.12 | 18 de junho de 2005[120] | 2.6.12.6[121] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de junho de 2005 a agosto de 2005)[121] |
2.6.13 | 28 de agosto de 2005[122] | 2.6.13.5[123] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de agosto de 2005 a dezembro de 2005)[123] |
2.6.14 | 27 de outubro de 2005[124] | 2.6.14.7[125] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de outubro de 2005 a janeiro de 2006)[125] |
2.6.15 | 2 de janeiro de 2006[126] | 2.6.15.7[127] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de janeiro de 2006 a março de 2006)[127] |
2.6.16 | 20 de março de 2006[128] | 2.6.16.62[129] | Adrian Bunk (ex-mantenedor Greg Kroah-Hartman) | Versão estável de longo prazo[101] (suportada de março de 2006 até julho de 2008)[129] |
2.6.17 | 17 de junho de 2006[130] | 2.6.17.14[131] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de junho de 2006 a outubro de 2006)[131] |
2.6.18 | 19 de setembro de 2006[132] | 2.6.18.8[133] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de setembro de 2006 a fevereiro de 2007)[133] |
2.6.19 | 29 de novembro de 2006[134] | 2.6.19.7[135] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de novembro de 2006 a março de 2007)[135] |
2.6.20 | 4 de fevereiro de 2007[136] | 2.6.20.21[137] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de fevereiro de 2007 a outubro de 2007)[137] |
2.6.21 | 25 de abril de 2007[138] | 2.6.21.7[139] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de abril de 2007 a agosto de 2007)[139] |
2.6.22 | 8 de julho de 2007[140] | 2.6.22.19[141] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de julho de 2007 a fevereiro de 2008)[141] |
2.6.23 | 9 de outubro de 2007[142] | 2.6.23.17[143] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de outubro de 2007 a fevereiro de 2008)[143] |
2.6.24 | 24 de janeiro de 2008[144] | 2.6.24.7[145] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de janeiro de 2008 a maio de 2008)[145] |
2.6.25 | 16 de abril de 2008[146] | 2.6.25.20[147] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de abril de 2008 a novembro de 2008)[147] |
2.6.26 | 13 de julho de 2008[148] | 2.6.26.8[149] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de julho de 2008 a novembro de 2008)[149] |
2.6.27 | 9 de outubro de 2008[150] | 2.6.27.62[151] | Willy Tarreau (ex-mantenedores Adrian Bunk e Greg Kroah-Hartman)[102] | Versão estável de longo prazo (suportada de 9 de outubro de 2008[152] a 17 de março de 2012[101][153]) |
2.6.28 | 24 de dezembro de 2008[154] | 2.6.28.10[155] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de dezembro de 2008 a maio de 2009)[155] |
2.6.29 | 23 de março de 2009[156] | 2.6.29.6[157] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de março de 2009 a julho de 2009)[157] |
2.6.30 | 9 de junho de 2009[158] | 2.6.30.9[159] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de junho de 2009 a outubro de 2009)[159] |
2.6.31 | 9 de setembro de 2009[160] | 2.6.31.14[161] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de setembro de 2009 a julho de 2010)[161] |
2.6.32 | 2 de dezembro de 2009[162] | 2.6.32.71[163] | Willy Tarreau (ex-mantenedor Greg Kroah-Hartman)[164] | Versão estável de longo prazo (suportada de 3 de dezembro de 2009[165] a 12 de março de 2016[153][163]) |
2.6.33 | 24 de fevereiro de 2010[166] | 2.6.33.20[167][168] | Greg Kroah-Hartman | Versão estável de longo prazo (suportada de fevereiro de 2010 a novembro de 2011)[168] |
2.6.34 | 16 de maio de 2010[169] | 2.6.34.15[170] | Paul Gortmaker | Versão estável de longo prazo (suportada de maio de 2010 a fevereiro de 2014)[170] |
2.6.35 | 1 de agosto de 2010[171] | 2.6.35.14[172] | Andi Kleen | Versão estável de longo prazo (suportada de agosto de 2010 a agosto de 2011)[172] |
2.6.36 | 20 de outubro de 2010[173] | 2.6.36.4[174] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de outubro de 2010 a fevereiro de 2011)[174] |
2.6.37 | 4 de janeiro de 2011[175] | 2.6.37.6[176] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de janeiro de 2011 a março de 2011)[176] |
2.6.38 | 14 de março de 2011[177] | 2.6.38.8[178] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de março de 2011 a junho de 2011)[178] |
2.6.39 | 18 de maio de 2011[179] | 2.6.39.4[180] | 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)[180] |
Legenda: Versão antiga |
Versão 3.x.y
[editar | editar código-fonte]Série | Data de lançamento original | Última versão | Mantenedor | Modelo de suporte |
---|---|---|---|---|
3.0 | 21 de julho de 2011[181][182] | 3.0.101[183][184] | Linus Torvalds | Versão estável de longo prazo (suportada de julho de 2011 a outubro de 2013)[183][185] |
3.1 | 24 de outubro de 2011[186][187] | 3.1.10[188] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de outubro de 2011 até janeiro de 2012)[188] |
3.2 | 4 de janeiro de 2012[29][189] | 3.2.102[190] | Ben Hutchings | Versão estável de longo prazo (suportada de janeiro de 2012 até junho de 2018)[190] |
3.3 | 18 de março de 2012[191][192] | 3.3.8[193] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de março de 2012 até junho de 2012)[193] |
3.4 | 20 de maio de 2012[194][195] | 3.4.113[196] | Greg Kroah-Hartman | Versão estável de longo prazo (suportada de maio de 2012 até outubro de 2016)[196] |
3.5 | 21 de julho de 2012[197][198] | 3.5.7[199] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de julho de 2012 até outubro de 2012)[199] |
3.6 | 30 de setembro de 2012[200][201] | 3.6.11[202] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de setembro de 2012 até dezembro de 2012)[202] |
3.7 | 10 de dezembro de 2012[203][204] | 3.7.10[205] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de dezembro de 2012 até fevereiro de 2012)[205] |
3.8 | 18 de fevereiro de 2013[206][207] | 3.8.13[208] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de fevereiro de 2013 até maio de 2013)[208][209] |
3.9 | 28 de abril de 2013[210][211] | 3.9.11[212] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de abril de 2013 até julho de 2013)[212] |
3.10 | 30 de junho de 2013[213][214] | 3.10.108[215] | Willy Tarreau (ex-mantenedor Greg Kroah-Hartman) | Versão estável de longo prazo (suportada de junho de 2013 até novembro de 2017)[215] |
3.11 | 2 de setembro de 2013[216][217] | 3.11.10[218] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de setembro de 2013 até novembro de 2013)[218] |
3.12 | 3 de novembro de 2013[219][220] | 3.12.74[221] | Jiří Slabý[222] (ex-mantenedor Greg Kroah-Hartman) | Versão estável de longo prazo (suportada de dezembro de 2013 até maio de 2017)[221] |
3.13 | 19 de janeiro de 2014[223][224] | 3.13.11[225] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de janeiro de 2014 até abril de 2014)[225] |
3.14 | 30 de março de 2014[226][227] | 3.14.79[228] | Greg Kroah-Hartman | Versão estável de longo prazo (suportada de março de 2014 até setembro de 2016)[228] |
3.15 | 8 de junho de 2014[229][230] | 3.15.10[231] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de junho de 2014 até agosto de 2014)[231] |
3.16 | 3 de agosto de 2014[232][233] | 3.16.85[234] | Ben Hutchings (ex-mantenedor Greg Kroah-Hartman) | Versão estável de longo prazo (suportada de agosto de 2014 até junho de 2020)[234] |
3.17 | 5 de outubro de 2014[235][236] | 3.17.8[237] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de outubro de 2014 até janeiro de 2015)[237] |
3.18 | 7 de dezembro de 2014[238][239] | 3.18.140[240] | Greg Kroah-Hartman | Versão estável de longo prazo (suportada de dezembro de 2014 até maio de 2019)[240] |
3.19 | 8 de fevereiro de 2015[241][242] | 3.19.8[243][244] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de fevereiro de 2015 até maio de 2015)[243] |
Legenda: Versão antiga |
Versão 4.x.y
[editar | editar código-fonte]Série | Data de lançamento original | Última versão | Mantenedor | Modelo de suporte |
---|---|---|---|---|
4.0 | 12 de abril de 2015[245][246] | 4.0.9[247] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de abril de 2015 até julho de 2015)[247] |
4.1 | 22 de junho de 2015[248][249] | 4.1.52[250] | Sasha Levin (ex-mantenedor Greg Kroah-Hartman) | Versão estável de longo prazo (suportada de junho de 2015 até maio de 2018)[250] |
4.2 | 30 de agosto de 2015[251][252] | 4.2.8[253] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de agosto de 2015 até dezembro de 2015)[253] |
4.3 | 1 de novembro de 2015[254][255] | 4.3.6[256] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de novembro de 2015 até fevereiro de 2016)[256] |
4.4 | 10 de janeiro de 2016[257][258] | 4.4.302[259] | Greg Kroah-Hartman & Sasha Levin | Versão estável de longo prazo (suportada de janeiro de 2016 até fevereiro de 2022)[259] |
4.5 | 13 de março de 2016[260][261] | 4.5.7[262] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de março de 2016 até junho de 2016)[262] |
4.6 | 15 de maio de 2016[263][264] | 4.6.7[265] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de maio de 2016 até agosto de 2016)[265] |
4.7 | 24 de julho de 2016[266][267] | 4.7.10[268] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de julho de 2016 até outubro de 2016)[268] |
4.8 | 2 de outubro de 2016[269][270] | 4.8.17[271] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de outubro de 2016 até janeiro de 2017)[271] |
4.9 | 11 de dezembro de 2016[272][273] | 4.9.337[274] | Greg Kroah-Hartman & Sasha Levin | Versão estável de longo prazo (suportada de dezembro de 2016 até janeiro de 2023)[274] |
4.10 | 19 de fevereiro de 2017[275][276] | 4.10.17[277] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de fevereiro de 2017 até maio de 2017)[277] |
4.11 | 30 de abril de 2017[278][279] | 4.11.12[280] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de abril de 2017 até julho de 2017)[280] |
4.12 | 2 de julho de 2017[281][282] | 4.12.14[283] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de julho de 2017 até setembro de 2017)[283] |
4.13 | 3 de setembro de 2017[284][285] | 4.13.16[286] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de setembro de 2017 até novembro de 2017)[286] |
4.14 | 12 de novembro de 2017[287][288] | 4.14.336[289] | Greg Kroah-Hartman & Sasha Levin | Versão estável de longo prazo (suportada de novembro de 2017 até janeiro de 2024)[289] |
4.15 | 28 de janeiro de 2018[290][291] | 4.15.18[292] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de janeiro de 2018 até abril de 2018)[292] |
4.16 | 1 de abril de 2018[293][294] | 4.16.18[295] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de abril de 2018 até junho de 2018)[295] |
4.17 | 3 de junho de 2018[296][297] | 4.17.19[298] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de junho de 2018 até agosto de 2018)[298] |
4.18 | 12 de agosto de 2018[299][300] | 4.18.20[301] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de agosto de 2018 até novembro de 2018)[301] |
4.19 | 22 de outubro de 2018[302][303] | 4.19.314[304] | Greg Kroah-Hartman & Sasha Levin[108] | Versão estável de longo prazo |
4.20 | 23 de dezembro de 2018[305][306] | 4.20.17[307] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de dezembro de 2018 até março de 2019)[307] |
Legenda: Versão antiga Versão mais antiga, ainda mantida |
Versão 5.x.y
[editar | editar código-fonte]Série | Data de lançamento original | Última versão | Mantenedor | Modelo de suporte |
---|---|---|---|---|
5.0 | 3 de março de 2019[308][309] | 5.0.21[310] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de março de 2019 até junho de 2019)[310] |
5.1 | 5 de maio de 2019[311][312] | 5.1.21[313] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de maio de 2019 até julho de 2019)[313] |
5.2 | 7 de julho de 2019[314][315] | 5.2.20[316] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de julho de 2019 até outubro de 2019)[316] |
5.3 | 15 de setembro de 2019[317][318] | 5.3.18[319] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de setembro de 2019 até dezembro de 2019)[319] |
5.4 | 24 de novembro de 2019[320][321] | 5.4.276[322] | Greg Kroah-Hartman & Sasha Levin[108] | Versão estável de longo prazo |
5.5 | 26 de janeiro de 2020[323][324] | 5.5.19[325] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de janeiro de 2020 até abril de 2020)[325] |
5.6 | 29 de março de 2020[326][327] | 5.6.19[328] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de março de 2020 até junho de 2020)[328] |
5.7 | 31 de maio de 2020[329][330] | 5.7.19[331] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de maio de 2020 até agosto de 2020)[331] |
5.8 | 2 de agosto de 2020[332][333] | 5.8.18[334] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de agosto de 2020 até novembro de 2020)[334] |
5.9 | 11 de outubro de 2020[335][336] | 5.9.16[337] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de outubro de 2020 até dezembro de 2020)[337] |
5.10 | 13 de dezembro de 2020[338][339] | 5.10.217[340] | Greg Kroah-Hartman & Sasha Levin[108] | Versão estável de longo prazo |
5.11 | 14 de fevereiro de 2021[341][342] | 5.11.22[343] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de fevereiro de 2021 até maio de 2021)[343] |
5.12 | 25 de abril de 2021[344][345] | 5.12.19[346] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de abril de 2021 até julho de 2021)[346] |
5.13 | 27 de junho de 2021[347][348] | 5.13.19[349] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de junho de 2021 até setembro de 2021)[349] |
5.14 | 29 de agosto de 2021[350][351] | 5.14.21[352] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de agosto de 2021 até novembro de 2021)[352] |
5.15 | 31 de outubro de 2021[353][354] | 5.15.159[355] | Greg Kroah-Hartman & Sasha Levin[108] | Versão estável de longo prazo |
5.16 | 9 de janeiro de 2022[356][357] | 5.16.20[358] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de janeiro de 2022 até abril de 2022)[358] |
5.17 | 20 de março de 2022[359][360] | 5.17.15[361] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de março de 2022 até junho de 2022)[361] |
5.18 | 22 de maio de 2022[362][363] | 5.18.19[364] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de maio de 2022 até agosto de 2022)[364] |
5.19 | 31 de julho de 2022[365][366] | 5.19.17[367] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de julho de 2022 até outubro de 2022)[367] |
Legenda: Versão antiga Versão mais antiga, ainda mantida |
Versão 6.x.y
[editar | editar código-fonte]Série | Data de lançamento original | Última versão | Mantenedor | Modelo de suporte |
---|---|---|---|---|
6.0 | 2 de outubro de 2022[368][369] | 6.0.19[370] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de outubro de 2022 até janeiro de 2023)[370] |
6.1 | 11 de dezembro de 2022[371][372] | 6.1.91[373] | Greg Kroah-Hartman & Sasha Levin[108] | Versão estável de longo prazo |
6.2 | 19 de fevereiro de 2023[374][375] | 6.2.16[376] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de fevereiro de 2023 até maio de 2023)[376] |
6.3 | 23 de abril de 2023[377][378] | 6.3.13[379] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de abril de 2023 até julho de 2023)[379] |
6.4 | 25 de junho de 2023[380][381] | 6.4.16[382] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de junho de 2023 até setembro de 2023)[382] |
6.5 | 27 de agosto de 2023[383][384] | 6.5.13[385] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de agosto de 2023 até novembro de 2023)[385] |
6.6 | 30 de outubro de 2023[386][387] | 6.6.31[388] | Greg Kroah-Hartman & Sasha Levin[108] | Última versão estável de longo prazo |
6.7 | 7 de janeiro de 2024[389][390] | 6.7.12[391] | Greg Kroah-Hartman | Versão estável de curto prazo (suportada de janeiro de 2024 até abril de 2024)[391] |
6.8 | 10 de março de 2024[392][393] | 6.8.10[394] | Greg Kroah-Hartman | Versão estável de curto prazo |
6.9 | 12 de maio de 20246.9[395][396] | 6.9.1[397] | Greg Kroah-Hartman | Última versão estável de curto prazo |
6.10 | TBA | Linus Torvalds | Versão em desenvolvimento | |
Legenda: Versão antiga Versão mais antiga, ainda mantida Versão mais recente Lançamento futuro |
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
[editar | editar código-fonte]![]() | Esta página contém um gráfico que utiliza a extensão <graph> . A extensão está temporariamente indisponível e será reativada quando possível. Para mais informações, consulte o ticket T334940. |
- 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
[editar | editar código-fonte]- 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
[editar | editar código-fonte]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.[398] 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
[editar | editar código-fonte]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.[399] 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.[400] 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[401][402] 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 inglês: WireLess). 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
[editar | editar código-fonte]![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Tux.svg/180px-Tux.svg.png)
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
[editar | editar código-fonte]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
[editar | editar código-fonte]- Lista de distribuições de Linux
- Comparação entre distribuições Linux
- LINUX Guia de Comandos
- Installfest
- Lei de Linus
- Núcleo (sistema operacional)
- RISC-V
Leitura adicional
[editar | editar código-fonte]- TORVALDS, Linus; DIAMOND, David (2001). Just For Fun: The story of an accidental revolutionary. HarperBusiness. ISBN 0-06-662072-4 (hardcover); HarperAudio ISBN 0-694-52539-1 (audio tape, abridged ed., read by David Diamond) - on the beginnings of the Linux kernel; No Brasil: Só por Prazer. Campus. ISBN 85-352-0801-1.
Referências
- ↑ a b c «Linux Kernel Maintainers». Consultado em 29 de junho de 2021
- ↑ «The Linux Kernel Archives». Consultado em 20 de maio de 2024
- ↑ Greg Kroah-Hartman (17 de maio de 2024). «Linux 6.9.1». LKML (Lista de grupo de correio). Consultado em 20 de maio de 2024
- ↑ Linus Torvalds (5 de maio de 2024). «Linux 6.9-rc7». LKML (Lista de grupo de correio). Consultado em 7 de maio de 2024
- ↑ «Linux kernel source tree». GitHub. Consultado em 10 de janeiro de 2022
- ↑ «The Linux Kernel Open Source Project on Open Hub: Languages Page». Black Duck Open Hub. Consultado em 10 de janeiro de 2022
- ↑ China Martens (28 de julho de 2006). «Linux creator Torvalds still no fan of GPLv3». InfoWorld. Consultado em 29 de junho de 2020
- ↑ a b c «Linux Kernel Copying» (em inglês). Consultado em 29 de junho de 2020.
Being under the terms of the GNU General Public License version 2 only
- ↑ Stallman, Richard (11 de outubro de 2006). «Linux, GNU, and freedom». Free Software Foundation. Consultado em 29 de junho de 2020
- ↑ «TOP500 Supercomputer Sites: Operating system Family / Linux» (em inglês). Top500.org. Consultado em 29 de junho de 2020
- ↑ a b Marjorie Richardson (1 de novembro de 1999). «Interview: Linus Torvalds». Linux Journal. Consultado em 29 de junho de 2020
- ↑ 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 inglês). [S.l.]: O'Reilly. ISBN 0-596-00287-4. Consultado em 29 de junho de 2020
- ↑ «The Linux Foundation Releases Linux Development Report» (em inglês). Linux Foundation. 24 de outubro de 2017. Consultado em 29 de junho de 2020. Cópia arquivada em 29 de junho de 2020
- ↑ Kroah-Hartman, Greg. «The Linux Kernel Driver Interface». Linux Kernel Documentation (em inglês). 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.
- ↑ Torvalds, Linus (8 de setembro de 2000). «Linux-2.4.0-test8». Lista de discussão do núcleo Linux (Lista de grupo de correio) (em inglês). lkml.iu.edu. Consultado em 29 de junho de 2020.
The only one of any note that I'd like to point out directly is the clarification in the COPYING file, making it clear that it's only _that_particular version of the GPL that is valid for the kernel. This should not come as any surprise, as that's the same license that has been there since 0.12 or so, but I thought I'd make that explicit
- ↑ Torvalds, Linus (25 de setembro de 2006). «Re: GPLv3 Position Statement». LKML (Lista de grupo de correio) (em inglês)
- ↑ «kernel/git/stable/linux-stable.git» (em inglês). git.kernel.org. Consultado em 29 de junho de 2020
- ↑ a b Michael Larabel (16 de setembro de 2017). «Linux 4.14 Dropping In-Tree Firmware». Phoronix. Consultado em 29 de junho de 2020
- ↑ a b Greg Kroah-Hartman (15 de setembro de 2017). «[GIT PULL] Firmware files removal for 4.14-rc1». LKML (Lista de grupo de correio). Consultado em 29 de junho de 2020
- ↑ a b «Minix3». Consultado em 29 de junho de 2020
- ↑ Torvalds, Linus (3 de julho de 1991). «Gcc-1.40 and a posix-question». Grupo de notícias: comp.os.minix. Consultado em 30 de junho de 2020
- ↑ Torvalds, Linus Benedict (25 de agosto de 1991). «What would you like to see most in minix?». Grupo de notícias: comp.os.minix. [email protected]. Consultado em 30 de junho de 2020
- ↑ a b «GNU Hurd». GNU. Consultado em 30 de junho de 2020
- ↑ Torvalds, Linus Benedict. «Free minix-like kernel sources for 386-AT». Grupo de notícias: comp.os.minix. [email protected]
- ↑ Torvalds, Linus. «Release Notes for Linux v0.12». The Linux Kernel Archives. Consultado em 30 de junho de 2020
- ↑ Summers, David W (19 de janeiro de 1992). «Troubles with Partitions». Grupo de notícias: alt.os.linux. [email protected]. Consultado em 30 de junho de 2020
- ↑ Clegg, Alan B (31 de março de 1992). «It's here!». Grupo de notícias: comp.os.linux. [email protected]. Consultado em 30 de junho de 2020
- ↑ 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
- ↑ a b Linus Torvalds (4 de janeiro de 2012). «Linux 3.2». LKML (Lista de grupo de correio). Consultado em 16 de junho de 2020
- ↑ 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
- ↑ Corbet, Jonathan (31 de janeiro de 2006). «GPLv3 and the kernel». LWN.net. Consultado em 30 de junho de 2020
- ↑ 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
- ↑ 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
- ↑ 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
- ↑ «Re: Linux GPL and binary module exception clause?». Consultado em 30 de junho de 2020. Cópia arquivada em 28 de abril de 2020
- ↑ Stallman, Richard (11 de outubro de 2006). «Linux, GNU, and freedom». Free Software Foundation. Consultado em 30 de junho de 2020
- ↑ «Linux-libre project». www.fsfla.org. Consultado em 30 de junho de 2020
- ↑ «Trisquel GNU/Linux-libre | Trisquel GNU/Linux - Run free!». trisquel.info. Consultado em 30 de junho de 2020
- ↑ «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
- ↑ «Linux US trademark registration». Consultado em 30 de junho de 2020
- ↑ a b Marjorie Richardson (1 de novembro de 1997). «Ownership of Linux Trademark Resolved». Linux Journal. Consultado em 30 de junho de 2020
- ↑ Neil McAllister (5 de setembro de 2005). «Linus gets tough on Linux trademark». InfoWorld. Consultado em 30 de junho de 2020
- ↑ Phil Hughes (1 de março de 1997). «Action Taken on Linux Trademark». Linux Journal. Consultado em 30 de junho de 2020
- ↑ «Report from the Courthouse 7 March». Groklaw article. 8 de março de 2007. Consultado em 30 de junho de 2020
- ↑ «Court Rules: Novell owns the UNIX and UnixWare copyrights». Groklaw article. 10 de agosto de 2007. Consultado em 30 de junho de 2020
- ↑ Ryan, Justin (26 de agosto de 2009). «SCO Will Try Again». Consultado em 30 de junho de 2020
- ↑ 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
- ↑ Paul, Ryan (20 de julho de 2009). «Microsoft aims at VM market with Linux kernel code offering». Consultado em 30 de junho de 2020
- ↑ Holwerda, Thom (23 de julho de 2009). «Microsoft's Linux Kernel Code Drop Result of GPL Violation». Consultado em 30 de junho de 2020
- ↑ «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
- ↑ 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
- ↑ 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
- ↑ Tanenbaum, Andy (29 de janeiro de 1992). «LINUX is obsolete». Grupo de notícias: comp.os.minix. [email protected]. Consultado em 30 de junho de 2020
- ↑ Torvalds, Linus (9 de maio de 2006). «Hybrid kernel, not NT». Consultado em 30 de junho de 2020
- ↑ Tanenbaum, Andy (12 de maio de 2006). «Tanenbaum-Torvalds Debate: Part II». Consultado em 30 de junho de 2020
- ↑ «Linux kernel patch for Intel Compiler». Consultado em 30 de junho de 2020. Arquivado do original em 22 de julho de 2011
- ↑ «High Performance Linux Kernel Project — LinuxDNA». Slashdot. 26 de fevereiro de 2009. Consultado em 29 de junho de 2020
- ↑ 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
- ↑ Lelbach, Bryce (25 de outubro de 2010). «Clang builds a working Linux Kernel (Boots to RL5 with SMP, networking and X, self hosts)». cfe-dev (Lista de grupo de correio). Arquivado do original em 7 de setembro de 2015
- ↑ 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
- ↑ 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
- ↑ Edge, Jake (7 de maio de 2013). «LFCS: The LLVMLinux project». LWN.net. Consultado em 4 de julho de 2020
- ↑ 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
- ↑ «Building Linux with Clang/LLVM». The Linux Kernel Documentation. Consultado em 3 de julho de 2020
- ↑ 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
- ↑ 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
- ↑ 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
- ↑ «Minimal requirements to compile the Kernel». The Linux Kernel Documentation. Consultado em 12 de janeiro de 2021
- ↑ «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
- ↑ 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.
- ↑ «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
- ↑ «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
- ↑ a b TANENBAUM, Andrew (1999). Sistemas Operacionais Modernos. Rio de Janeiro: LTC
- ↑ a b c STALLINGS, William (2005). Operating systems: internals and design principles 5 ed. Upper Saddle River: Pearson Prentice Hall
- ↑ John Bradford (8 de março de 2003). «Re: what's an OOPS». LKML (Lista de grupo de correio). Consultado em 30 de junho de 2020
- ↑ Arjan van de Ven. «kerneloops(8) - Linux man page». die.net. Consultado em 30 de junho de 2020
- ↑ «Features/ABRTF12». Fedora Project Wiki. Consultado em 30 de junho de 2020
- ↑ «Linux Kernel Oops». Kernel.org. Consultado em 30 de junho de 2020. Arquivado do original em 13 de agosto de 2017
- ↑ David A. Wheeler (12 de outubro de 2004). «Linux Kernel 2.6: It's Worth More!». Consultado em 30 de junho de 2020
- ↑ «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
- ↑ «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
- ↑ «The Billion Dollar Kernel». Linux.slashdot.org. 24 de fevereiro de 2010. Consultado em 30 de junho de 2020
- ↑ «Kernel 1.0 Source Code Release». Consultado em 30 de junho de 2020
- ↑ «Kernel 1.2 Source Code Release». Consultado em 30 de junho de 2020
- ↑ «Kernel 2.0.x Source Code Releases». Consultado em 30 de junho de 2020
- ↑ «Kernel 2.2.x Source Code Releases». Consultado em 30 de junho de 2020
- ↑ 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
- ↑ «Kernel 2.4.x Source Code Releases». Consultado em 30 de junho de 2020
- ↑ 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
- ↑ «Kernel 2.6.x.y Source Code Releases». Consultado em 30 de junho de 2020
- ↑ a b 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
- ↑ «Kernel 3.x.y Source Code Releases». Consultado em 30 de junho de 2020
- ↑ «Kernel 4.x.y Source Code Releases». Consultado em 30 de junho de 2020
- ↑ «Kernel 5.x.y Source Code Releases». Consultado em 30 de junho de 2020
- ↑ Rusling, David A. (25 de janeiro de 1999). «The Linux Kernel». Consultado em 3 de julho de 2020
- ↑ a b «Linux 5.7 directory tree». git.kernel.org. Consultado em 3 de julho de 2020
- ↑ 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
- ↑ «Index of /pub/linux/kernel/». Kernel.org. Consultado em 23 de junho de 2020
- ↑ «Linux: 2.6.16.y Lives On». Consultado em 29 de junho de 2020. Arquivado do original em 24 de julho de 2012
- ↑ «Linux: Maintaining A 2.6.16.y Tree». Consultado em 29 de junho de 2020. Arquivado do original em 9 de julho de 2012
- ↑ a b c Adrian Bunk (11 de outubro de 2008). «Linux 2.6.27 will be a longtime supported kernel». LKML (Lista de grupo de correio). Consultado em 31 de maio de 2020
- ↑ a b Greg Kroah-Hartman (8 de setembro de 2009). «Re: 2.6.27 maintenance plans after 2.6.32 is released». linux-kernel (Lista de grupo de correio)
- ↑ 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
- ↑ Stephen Rothwell (12 de fevereiro de 2008). «Announce: Linux-next (Or Andrew's dream :-))». LKML (Lista de grupo de correio). Consultado em 29 de junho de 2020
- ↑ Jonathan Corbet (13 de fevereiro de 2008). «linux-next and patch management process». LWN.net. Consultado em 29 de junho de 2020
- ↑ Linus Torvalds (16 de setembro de 2018). «Linux 4.19-rc4 released, an apology, and a maintainership note». LKML (Lista de grupo de correio). Consultado em 29 de junho de 2021
- ↑ Alexandru Vaduva, Alex Gonzalez & Chris Simmonds (2016). Linux: Embedded Development. [S.l.]: Packt Publishing. p. 663. ISBN 9781787124455
- ↑ a b c d e f g «Active kernel releases». The Linux Kernel Archives. Consultado em 20 de maio de 2024
- ↑ Torvalds, Linus (10 de maio de 1996). «Century Linux!». LKML (Lista de grupo de correio). Consultado em 20 de maio de 2020
- ↑ Linus Torvalds (9 de junho de 1996). «Linux 2.0 really _is_ released». LKML (Lista de grupo de correio). Consultado em 16 de junho de 2020
- ↑ a b 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
- ↑ Linus Torvalds (20 de janeiro de 1999). «2.2.0-final». LKML (Lista de grupo de correio). Consultado em 16 de junho de 2020
- ↑ a b Marc-Christian Petersen (25 de fevereiro de 2004). «Linux 2.2.26». Arquivado do original em 8 de outubro de 2006
- ↑ Linus Torvalds (4 de janeiro de 2004). «And oh, btw». LKML (Lista de grupo de correio). Consultado em 16 de junho de 2020
- ↑ a b Willy Tarreau (18 de dezembro de 2010). «Linux 2.4.37.11». linux-kernel (Lista de grupo de correio)
- ↑ Linus Torvalds (17 de dezembro de 2003). «Linux 2.6.0». LKML (Lista de grupo de correio). Consultado em 16 de junho de 2020
- ↑ a b Torvalds, Linus (24 de dezembro de 2004). «Ho ho ho - Linux 2.6.10». LKML (Lista de grupo de correio). Consultado em 31 de maio de 2020
- ↑ Linus Torvalds (2 de março de 2005). «Linux 2.6.11». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ a b Chris Wright (11 de junho de 2005). «Linux 2.6.11.12». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ Linus Torvalds (18 de junho de 2005). «Linux 2.6.12». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ a b Chris Wright (29 de agosto de 2005). «Linux 2.6.12.6». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ Linus Torvalds (28 de agosto de 2005). «Linux 2.6.13». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ a b Greg Kroah-Hartman (15 de dezembro de 2005). «Linux 2.6.13.5». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ Linus Torvalds (27 de outubro de 2005). «Linux 2.6.14». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ a b Greg Kroah-Hartman (31 de janeiro de 2006). «Linux 2.6.14.7». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ Linus Torvalds (2 de janeiro de 2006). «Linux 2.6.15». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ a b Greg Kroah-Hartman (28 de março de 2006). «Linux 2.6.15.7». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ Linus Torvalds (19 de março de 2006). «Linux 2.6.16». LKML (Lista de grupo de correio). Consultado em 16 de junho de 2020
- ↑ a b Adrian Bunk (21 de julho de 2008). «Linux 2.6.16.62». linux-kernel (Lista de grupo de correio)
- ↑ Linus Torvalds (17 de junho de 2006). «Linux 2.6.17». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ a b Greg Kroah-Hartman (16 de outubro de 2006). «Linux 2.6.17.14». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ Linus Torvalds (19 de setembro de 2006). «Linux 2.6.18». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ a b Greg Kroah-Hartman (23 de fevereiro de 2007). «Linux 2.6.18.8». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ Linus Torvalds (29 de novembro de 2006). «Linux 2.6.19». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ a b Greg Kroah-Hartman (2 de março de 2007). «Linux 2.6.19.7». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ Linus Torvalds (4 de fevereiro de 2007). «Super Kernel Sunday!». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ a b Willy Tarreau (17 de outubro de 2007). «Linux 2.6.20.21». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ Linus Torvalds (25 de abril de 2007). «Linux 2.6.21». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ a b Greg Kroah-Hartman (4 de agosto de 2007). «Linux 2.6.21.7». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ Linus Torvalds (8 de julho de 2007). «Linux 2.6.22 released». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ a b Greg Kroah-Hartman (25 de fevereiro de 2008). «Linux 2.6.22.19». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ Linus Torvalds (9 de outubro de 2007). «Linux 2.6.23». LKML (Lista de grupo de correio). Consultado em 7 de agosto de 2020
- ↑ a b Greg Kroah-Hartman (25 de fevereiro de 2008). «Linux 2.6.23.17». LKML (Lista de grupo de correio). Consultado em 7 de agosto de 2020
- ↑ Linus Torvalds (24 de janeiro de 2008). «Linux 2.6.24». LKML (Lista de grupo de correio). Consultado em 7 de agosto de 2020
- ↑ a b Greg Kroah-Hartman (6 de maio de 2008). «Linux 2.6.24.7». LKML (Lista de grupo de correio). Consultado em 7 de agosto de 2020
- ↑ Linus Torvalds (16 de abril de 2008). «Linux 2.6.25». LKML (Lista de grupo de correio). Consultado em 7 de agosto de 2020
- ↑ a b Greg Kroah-Hartman (10 de novembro de 2008). «Linux 2.6.25.20». LKML (Lista de grupo de correio). Consultado em 7 de agosto de 2020
- ↑ Linus Torvalds (13 de julho de 2008). «Linux 2.6.26». LKML (Lista de grupo de correio). Consultado em 7 de agosto de 2020
- ↑ a b Greg Kroah-Hartman (10 de novembro de 2008). «Linux 2.6.26.8». LKML (Lista de grupo de correio). Consultado em 7 de agosto de 2020
- ↑ Linus Torvalds (9 de outubro de 2008). «Linux 2.6.27». LKML (Lista de grupo de correio). Consultado em 16 de junho de 2020
- ↑ Willy Tarreau (17 de março de 2012). «Linux 2.6.27.62». linux-kernel (Lista de grupo de correio)
- ↑ «Linux 2.6.27». Linux Kernel Newbies. Consultado em 29 de junho de 2020
- ↑ a b Greg Kroah-Hartman (18 de janeiro de 2010). «Stable kernel tree status, January 18, 2010». LKML (Lista de grupo de correio). Consultado em 31 de maio de 2020
- ↑ Linus Torvalds (24 de dezembro de 2008). «Happy v2.6.28». LKML (Lista de grupo de correio). Consultado em 7 de agosto de 2020
- ↑ a b Greg Kroah-Hartman (2 de maio de 2009). «Linux 2.6.28.10». LKML (Lista de grupo de correio). Consultado em 7 de agosto de 2020
- ↑ Linus Torvalds (23 de março de 2009). «Linux 2.6.29». LKML (Lista de grupo de correio). Consultado em 7 de agosto de 2020
- ↑ a b Greg Kroah-Hartman (2 de julho de 2009). «Linux 2.6.29.6». LKML (Lista de grupo de correio). Consultado em 7 de agosto de 2020
- ↑ Linus Torvalds (9 de junho de 2009). «Linux 2.6.30». LKML (Lista de grupo de correio). Consultado em 7 de agosto de 2020
- ↑ a b Greg Kroah-Hartman (5 de outubro de 2009). «Linux 2.6.30.9». LKML (Lista de grupo de correio). Consultado em 7 de agosto de 2020
- ↑ Linus Torvalds (9 de setembro de 2009). «Linux 2.6.31». LKML (Lista de grupo de correio). Consultado em 7 de agosto de 2020
- ↑ a b Greg Kroah-Hartman (5 de julho de 2010). «Linux 2.6.31.14». LKML (Lista de grupo de correio). Consultado em 7 de agosto de 2020
- ↑ Linus Torvalds (2 de dezembro de 2009). «Linux 2.6.32». LKML (Lista de grupo de correio). Consultado em 16 de junho de 2020
- ↑ a b Willy Tarreau (12 de março de 2016). «Linux 2.6.32.71 (EOL)». linux-kernel (Lista de grupo de correio)
- ↑ Greg Kroah-Hartman (18 de janeiro de 2010). «Stable kernel tree status, January 18, 2010». linux-kernel (Lista de grupo de correio)
- ↑ «Linux 2.6.32». Linux Kernel Newbies. Consultado em 29 de junho de 2020
- ↑ Linus Torvalds (24 de fevereiro de 2010). «Linux 2.6.33 released». LKML (Lista de grupo de correio). Consultado em 16 de junho de 2020
- ↑ «Linux 2.6.33.20». gmane.org. Consultado em 31 de maio de 2020. Arquivado do original em 26 de janeiro de 2016
- ↑ a b Greg Kroah-Hartman (7 de novembro de 2011). «Linux 2.6.33.20». LKML (Lista de grupo de correio). Consultado em 31 de maio de 2020
- ↑ Linus Torvalds (16 de maio de 2010). «Linux 2.6.34». LKML (Lista de grupo de correio). Consultado em 16 de junho de 2020
- ↑ a b Paul Gortmaker (11 de fevereiro de 2014). «Linux 2.6.34.15». LKML (Lista de grupo de correio). Consultado em 31 de maio de 2020
- ↑ Linus Torvalds (1 de agosto de 2010). «Linux 2.6.35». LKML (Lista de grupo de correio). Consultado em 16 de junho de 2020
- ↑ a b Andi Kleen (1 de agosto de 2011). «Linux 2.6.35.14». LKML (Lista de grupo de correio). Consultado em 31 de maio de 2020
- ↑ Linus Torvalds (20 de outubro de 2010). «Linux 2.6.36». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ a b Greg Kroah-Hartman (17 de fevereiro de 2011). «Linux 2.6.36.4». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ Linus Torvalds (4 de janeiro de 2011). «Linux 2.6.37». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ a b Greg Kroah-Hartman (27 de março de 2011). «Linux 2.6.37.6». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ Linus Torvalds (14 de março de 2011). «Linux 2.6.38». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ a b Greg Kroah-Hartman (2 de junho de 2011). «Linux 2.6.38.8». LKML (Lista de grupo de correio). Consultado em 6 de agosto de 2020
- ↑ Linus Torvalds (18 de maio de 2011). «Linux 2.6.39». LKML (Lista de grupo de correio). Consultado em 16 de junho de 2020
- ↑ a b Greg Kroah-Hartman (3 de agosto de 2011). «Linux 2.6.39.4». LKML (Lista de grupo de correio). Consultado em 31 de maio de 2020
- ↑ Linus Torvalds (21 de julho de 2011). «Linux 3.0 release». LKML (Lista de grupo de correio). Consultado em 16 de junho de 2020
- ↑ Michael Larabel (22 de julho de 2011). «Linux 3.0 Kernel Has Been Christened». Phoronix. Consultado em 2 de novembro de 2021
- ↑ a b Greg Kroah-Hartman (22 de outubro de 2013). «Linux 3.0.101». LKML (Lista de grupo de correio). Consultado em 16 de junho de 2020
- ↑ «Linux v3.0.101». Linux kernel stable tree. 22 de outubro de 2013. Consultado em 29 de junho de 2020
- ↑ 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
- ↑ Linus Torvalds (24 de outubro de 2011). «Linux 3.1». LKML (Lista de grupo de correio). Consultado em 3 de julho de 2020
- ↑ Michael Larabel (24 de outubro de 2011). «The Belated Linux 3.1 Kernel Is Released». Phoronix. Consultado em 2 de novembro de 2021
- ↑ a b Kroah-Hartman, Greg (18 de janeiro de 2012). «Linux 3.1.10». LKML (Lista de grupo de correio). Consultado em 3 de julho de 2020
- ↑ Michael Larabel (4 de janeiro de 2012). «Linux 3.2 Kernel Officially Christened». Phoronix. Consultado em 2 de novembro de 2021
- ↑ a b Hutchings, Ben (1 de junho de 2018). «Linux 3.2.102». LKML (Lista de grupo de correio). Consultado em 30 de maio de 2020
- ↑ Linus Torvalds (18 de março de 2012). «Linux 3.3 release». LKML (Lista de grupo de correio). Consultado em 3 de julho de 2020
- ↑ Michael Larabel (18 de março de 2012). «Linux 3.3 Kernel Officially Released». Phoronix. Consultado em 2 de novembro de 2021
- ↑ a b Kroah-Hartman, Greg (4 de junho de 2012). «Linux 3.3.8». LKML (Lista de grupo de correio). Consultado em 3 de julho de 2020
- ↑ Linus Torvalds (20 de maio de 2012). «Linux 3.4 released». LKML (Lista de grupo de correio). Consultado em 16 de junho de 2020
- ↑ Michael Larabel (21 de maio de 2012). «Linux 3.4 Kernel Released With Many New Features». Phoronix. Consultado em 2 de novembro de 2021
- ↑ a b «Linux kernel 3.4.113 released». LKML (Lista de grupo de correio). 26 de outubro de 2016. Consultado em 30 de maio de 2020
- ↑ Linus Torvalds (21 de julho de 2012). «Linux 3.5 release». LKML (Lista de grupo de correio). Consultado em 3 de julho de 2020
- ↑ Michael Larabel (21 de julho de 2012). «Linux 3.5 Kernel Officially Released». Phoronix. Consultado em 2 de novembro de 2021
- ↑ a b Kroah-Hartman, Greg (13 de outubro de 2012). «Linux 3.5.7». LKML (Lista de grupo de correio). Consultado em 3 de julho de 2020
- ↑ Linus Torvalds (30 de setembro de 2012). «Linux 3.6». LKML (Lista de grupo de correio). Consultado em 3 de julho de 2020
- ↑ Michael Larabel (30 de setembro de 2012). «Linux 3.6 Kernel Released». Phoronix. Consultado em 2 de novembro de 2021
- ↑ a b Kroah-Hartman, Greg (17 de dezembro de 2012). «Linux 3.6.11». LKML (Lista de grupo de correio). Consultado em 3 de julho de 2020
- ↑ Linus Torvalds (10 de dezembro de 2012). «Linux 3.7». LKML (Lista de grupo de correio). Consultado em 3 de julho de 2020
- ↑ Michael Larabel (11 de dezembro de 2012). «Linux 3.7 Kernel Officially Released». Phoronix. Consultado em 2 de novembro de 2021
- ↑ a b Kroah-Hartman, Greg (27 de fevereiro de 2013). «Linux 3.7.10». LKML (Lista de grupo de correio). Consultado em 3 de julho de 2020
- ↑ Linus Torvalds (18 de fevereiro de 2013). «Linux 3.8». LKML (Lista de grupo de correio). Consultado em 16 de junho de 2020
- ↑ Michael Larabel (18 de fevereiro de 2013). «Linux 3.8 Kernel Officially Released». Phoronix. Consultado em 2 de novembro de 2021
- ↑ a b Kroah-Hartman, Greg (11 de maio de 2013). «Linux 3.8.13». LKML (Lista de grupo de correio). Consultado em 30 de maio de 2020
- ↑ 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
- ↑ Linus Torvalds (28 de abril de 2013). «Linux 3.9 released». LKML (Lista de grupo de correio). Consultado em 16 de junho de 2020
- ↑ Michael Larabel (28 de abril de 2013). «Linux 3.9 Kernel Released With Lots Of Features». Phoronix. Consultado em 2 de novembro de 2021
- ↑ a b Kroah-Hartman, Greg (21 de julho de 2013). «Linux 3.9.11». LKML (Lista de grupo de correio). Consultado em 30 de maio de 2020
- ↑ Linus Torvalds (30 de junho de 2013). «Linux 3.10». LKML (Lista de grupo de correio). Consultado em 16 de junho de 2020
- ↑ Michael Larabel (30 de junho de 2013). «Feature-Rich Linux 3.10 Kernel Officially Released». Phoronix. Consultado em 2 de novembro de 2021