*Para o sistema operativo libre composto principalmente polo kernel Linux e GNU, véxase GNU/Linux.*

Tux (un pingüín) é a mascota oficial de Linux.
**Linux** é un kernel, ou núcleo, monolítico libre, inspirado en Unix, e que empregan os sistemas operativos GNU/Linux. Linux é un exemplo paradigmático de software libre no que contribúen centos de desenvolvedores e que ten soporte a longo prazo, de ata seis anos. Desenvólvese con git en github e debatendo en listas de correos, fundamentalmente na lista *Linux kernel mailing list* (LKML: "*lista de desenvolvemento do kernel de Linux*"). O kernel de Linux libérase coa licenza GPL v2.

A familia de sistemas GNU/Linux que empregan este kernel, e que se distribúen como distribucións GNU/Linux, engádenlle recursos ao kernel, como ferramentas de empaquetado de software, e distribúeno. As distribucións de GNU/Linux empréganse tanto en computadores persoais como en servidores; e está implementado para dispositivos como routers, puntos de acceso de rede sen fíos, sistemas de telefonía como a PBX, decodificador de televisión, FTA, smart TVs, gravadores de vídeo dixitais PVR ou sistema de almacenamento en rede NAS. Ademais, o sistema operativo Android, que está en tabletas e teléfonos e reloxos; usa os servizos que lle ofrece o kernel de Linux. Aínda que o uso no escritorio de Linux está arredor do 3%, Linux domina todos os demais usos de sistemas operativos: desde os dispositivos móbiles e televisión ás supercomputadoras. A comezos do 2018 Linux estaba presente en todos e cada un dos 500 supercomputadoras máis potentes do planeta.

O kernel de Linux foi concibido e creado en 1991 polo daquela estudante de ciencias da computación finlandés, Linus Torvalds. Pensouno para uso persoal e sen pensar en interaccións entre plataformas, mais axiña se popularizou o seu proxecto e adaptouse para múltiples arquitecturas de computadores, por riba de calquera outro sistema operativo ou kernel. Logo gañou popularidade entre os desenvolvedores e usuarios, que empregaron ese kernel para outros proxectos de software libre, en particular o proxecto do sistema operativo GNU.

A API do kernel de Linux, é a interface para programar aplicacións (API) coa que os programas interactúan co kernel. Está deseñada para ser estable e non dar erros no contorno de aplicacións do usuario, como as aplicacións con interfaces gráficas (GUIs) ou as que dependen doutras aplicacións. É función do kernel controlar o hardware, polo que os principais dispositivos inténtanse que sexa implementados e estables. Porén, a interface entre o kernel e os módulos de carga do kernel (LKMs) son a parte que non está directamente pensada para ser a máis estable.

O kernel de Linux segue recibindo a contribución de miles de programadores e empresas de todo o mundo. En 2017 contribuíron no seu desenvolvemento máis de 15.600 desenvolvedores de máis de 1.400 empresas, o que supuxo o aumento nun ano de 4.300 de 500 empresas. As compañías aportan máis do 80% dos desenvolvedores do kernel e as que destacaron no seu desenvolvemento no ano 2017 foron Intel, Red Hat, Linaro, IBM, Samsung, SUSE, Google, AMD, Renesas, Mellanox, Texas Instruments e ARM.. Máis do 37% das webs fornécenas equipos con sistemas Linux.

Historia
--------

Na década de 1980 UNIX deixou de distribuírse de balde cando era o sistema operativo preferido nas universidades. Estas reaccionaron e optaron por usar Minix, unha versión barata e limitada creada para o ensino. En abril de 1991, Linus Torvalds, de 21 anos, empezou a traballar nunhas simples ideas para un núcleo dun sistema operativo. Naquel entón Linus estudaba na Universidade de Helsinqui e usaba Minix na casa. Comezou cun intento por obter un núcleo de sistema operativo gratuíto similar a Unix que funcionase con microprocesadores Intel 80386. Logo, o 25 de agosto de 1991, Torvalds escribiu no grupo de noticias *comp.vos.minix*:

> 
> 
> "Estou a facer un sistema operativo (gratuíto, só un por lecer, non será nada grande nin profesional como GNU) para clons AT 386(486). Levo niso desde abril e está a empezar a estar listo. Gustaríame saber a vosa opinión sobre as cousas que lles gustan ou desgustan en minix, xa que o meu SO ten algún parecido con el. [...] Actualmente portei bash(1.08) e gcc(1.40) e parece que as cousas funcionan. Isto quere dicir que terei algo práctico dentro duns meses..."
> 
> 

Despois disto, moitas persoas axudaron co código. En setembro de 1991 lanzouse a versión 0.01 de Linux. Tiña 10.239 liñas de código. En outubro dese ano de 1991 lanzaron a versión 0.02 e en decembro a versión 0.11. Esta versión foi a primeira en ser *self-hosted* (autoalbergada): podía ser compilada por unha computadora que executase Linux 0.11. As versións anteriores precisaban de ser compiladas noutros sistemas operativos. Cando lanzou a seguinte versión, Linus adoptou a GPL como o seu propio bosquexo de licenza, a cal non permitía a súa redistribución con outra licenza que non fora GPL.

Iniciouse un grupo de noticias chamado *alt.vos.linux* e o 19 de xaneiro de 1992 publicouse nese grupo o primeiro *post*. O 31 de marzo, *alt.vos.linux*  converteuse en *comp.vos.linux*. XFree86, unha implementación do X Window System, foi portada a Linux, a versión do núcleo 0.95 foi a primeira en ser capaz de executala. Este gran salto de versións (de 0.1x a 0.9x) foi pola sensación de que unha versión 1.0 acabada non parecía estar lonxe. Con todo, estas previsións resultaron ser un pouco optimistas: desde 1993 a principios de 1994, desenvolvéronse 15 versións diferentes de 0.99 (chegando á versión 0.99r15).

O 14 de marzo de 1994, lanzouse Linux 1.0.0, que constaba de 176.250 liñas de código. A versión 2 liberouse n 1996, a versión 3 fíxoo en 2011 e a versión 4 en 2015. En maio de 1996 Torvalds decidiu adoptar ao pingüín Tux como mascota para Linux.

Aspectos técnicos
-----------------

### Arquitecturas

Diagrama do kernel 2.4.0.
O kernel de Linux é un kernel monolítico, cun verdadeiro soporte para o soporte de prioridades multitarefas (tanto no modo de usuario como, desde a serie 2.6, no modo de kernel)), con memoria virtual, con librarías compartidas, carga baixo demanda, e executables de copy-on-write por KMS, xestión de memoria, protocolo de Internet e fíos de tarefas.

Os controladores de dispositivos e os engadidos de kernel execútanse no espazo do kernel (que é ring 0 en moitas das arquitecturas de CPU), e con total acceso ao hardware. Nalgúns casos funcionan no espazo de usuario, como por exemplo o sistema de ficheiros FUSE/CUSE e partes da UIO. O sistema gráfico que a meirande parte dos usuarios usa non se executa co kernel. Ao contrario doutros kernels mololíticos estándares, os controladores de dispositivo configúranse dun xeito sinxelo con módulos e cárganse ou retíranse cando o sistema está en funcionamento. Do mesmo xeito, ós controladores de dispositivos pódeselle dar prioridades baixo certas condicións. Esta función engadiuse no kernel para manexar as interrupcións do uso de hardware correctamente e para dar un mellor soporte aos multiprocesos simétricos. Por defecto, Linux non ten unha interface de kernel binaria.

O hardware tamén se incorpora no sistema xerárquico de ficheiros. A interface de dispositivos de controladores para as aplicacións de usuarios está na entrada dos cartafoles */dev* ou */sys*. A información dos procesos está rexistrada no sistema de ficheiros grazas ao cartafol de */proc*.

O feito de que Linux non fose desenvolvido seguindo o deseño dun micronúcleo (deseño que, naquela época, era considerado o máis apropiado para un núcleo por moitos teóricos informáticos) foi asunto dunha famosa e acalorada discusión entre Linus Torvalds e Andrew S. Tanenbaum.

### Linguaxes de programación

Linux está escrito na linguaxe de programación C para o compilador GCC (esta ten unha serie de cambios e engadidos para a linguaxe C estándar) e con algunhas seccións curtas escritas na Assembly (coa sintaxe do estilo AT&T de GCC) e C++ e para a arquitectura que se precise. Polo uso das súas extensións á linguaxe, GCC foi durante moito tempo o único compilador capaz de compilar correctamente Linux. Assembly e C++ en 2018 supoñían un 1,7 e 1,8% do código total do kernel de Linux.

Outras linguaxes (como Perl, Python e varias linguaxes shell scripting) pódense empregar dalgunha forma para as conexións co procesos de construción do núcleo (o método a través do cal as imaxes de inicio son creadas desde un código fonte). Algúns controladores escríbense en C++, Fortran ou outras linguaxes. O sistema de construción de Linux oficialmente só soporta GCC como núcleo e compilador de controlador.

### Portabilidade

Ipod executando un iPodLinux.
Aínda cando Linus Torvalds non ideou orixinalmente Linux como un kernel portable, evolucionou nesa dirección. Linux agora é un dos núcleos máis amplamente portados e que funciona nun amplo abano de sistemas que van desde as arquitecturas ARM ás computadoras centrais z/Architecture de IBM.

A primeira adaptación de Linux fóra da arquitectura orixinal, a 386, foi a que fixeron usuarios de Commodore Amiga para a plataforma Motorola 68000, para a cal fixeron substitucións importantes do kernel. As modificacións foron sempre tan fundamentais que Torvalds viu esa versión de Motorola como un *fork*, un «*un sistema operativo semellante a linux*», e non unha simple migración. De feito, iso deulle un pulo a facilitar a migración entre arquitecturas para computadores que foran de interese. A primeira migración que apoiou Linux foi a plaforma de 64-bits Alpha AXP de DEC e que se expuxo en maio de 1995 no DECUS. Esa adaptación aceptaba tanto as plataformas 386 como as Alpha nunha mesma árbore de desenvolvemento. DEC foi a responsable de fornecer o hardware necesario para que Torvalds migrase Linux aos 64-bits nese ano.

Linux é o sistema operativo principal do Blue Gene de IBM e outras supercomputadoras rápidas, incluídas as chinesas. A xaneiro de 2018 todos os 500 supercomputadores máis rápidos do mundo empregaban algunha variante de Linux. Linux tamén se adaptou para dispositivos iPod e iPhone de Apple. Algúns sistemas operativos que se desenvolveron para os móbiles usan algunha versión do kernel de Linux, como o fixeron Android, Firefox OS, HP webOS, Maemo de Nokia e Sailfish de Jolla.

Algunhas das principais arquitecturas que ten Linux implementadas son DEC Alpha, ARM, AVR32, Blackfin, ETRAX CRIS, FR-V, H8, IA64, M32R, m68k, MicroBlaze, MIPS, MN10300, PA-RISC, PowerPC, System/390, SuperH, SPARC, x86, x86 64 e Xtensa.

### Arquitectura de máquina virtual

O núcleo Linux pode correr sobre moitas arquitecturas de máquina virtual, tanto como host do sistema operativo ou como cliente. A máquina virtual usualmente emula a familia de procesadores Intel x86, aínda que nalgúns casos tamén son emulados procesadores de PowerPC ou ARM.

### Formatos binarios soportados

Linux 1.0 admitía só o formato binario **a.out**. A seguinte serie estable (Linux 1.2) agregou a utilización do formato ELF, o cal simplifica a creación de bibliotecas compartidas (usadas de forma extensa polos actuais ambientes de escritorio como GNOME e KDE). ELF é o formato usado de forma predeterminada polo GCC desde ao redor da versión 2.6.0. O formato a.out actualmente non é usado, convertendo a ELF no formato binario utilizado por Linux na actualidade.

Linux ten a capacidade de permitir ao usuario engadir o manexo doutros formatos binarios. Tamén binfmt\_misc permite correr o programa asociado a un arquivo de datos.

### Xerarquía de directorios

En Linux existe un sistema de arquivos que carga e contén todos os directorios, redes, programas, particiones, dispositivos etc. que o sistema sabe recoñecer, ou polo menos, identificar. Este sistema de ficheiros e directorios, ten como base ao carácter (**/**); ese mesmo carácter serve tamén para demarcar os directorios, por exemplo: "*/home/usuario/imaxe.jpg*". O directorio especificado por unha ruta consistente só por este carácter contén toda a xerarquía dos directorios que constitúen todo o sistema. A este directorio adoita chamarllo directorio raíz. En Linux, aos discos non se lles asigna unha letra como en Windows (p.e. "C:"), senón que se lles asigna un directorio da xerarquía do directorio raíz (**/**), por exemplo: "*/media/floppy*". É práctica común no sistema de ficheiros de Linux, utilizar varias *sub-xerarquías* de directorios, segundo as diferentes funcións e estilos de utilización dos arquivos. Estes directorios poden clasificarse en:

* **Estáticos**: Contén arquivos que non cambian sen a intervención do administrador (root), con todo, poden ser lidos por calquera outro usuario. (/bin, /sbin, /opt, /boot, /usr/bin...)
* **Dinámicos**: Contén arquivos que son cambiantes, e poden lerse e escribirse (algúns só polo seu respectivo usuario e o root). Conteñen configuracións, documentos etc. Para estes directorios, é recomendable unha copia de seguridade con frecuencia, ou mellor aínda, deberían ser montados nunha partición aparte no mesmo disco, por exemplo, montar o directorio /home noutra partición do mesmo disco, independente da partición principal do sistema; desta forma, pode repararse o sistema sen afectar ou borrar os documentos dos usuarios. (/var/mail, /var/spool, /var/run, /var/lock, /home...)
* **Compartidos**: Contén arquivos que se poden atopar nun computador e utilizarse noutro, ou mesmo compartirse entre usuarios.
* **Restrinxidos**: Contén ficheiros que non se poden compartir, só son modificables polo administrador. (/etc, /boot, /var/run, /var/lock...)

### *Kernel panic*

*Artigo principal**:* Kernel panic.
*Kernel panic*.
En Linux un *panic* é un erro case sempre insalvable do sistema detectado polo núcleo en oposición aos erros similares detectados no código do espazo de usuario. É posible para o código do núcleo indicar estas condicións mediante unha chamada á función de pánico situada no arquivo header *sys/system.h*. Con todo, a maioría das alertas son o resultado de excepcións no código do núcleo que o procesador non pode manexar, como referencias a direccións de memorias inválidas. Xeralmente isto é indicador da existencia dun bug nalgún lugar da cadea de alerta. Tamén poden indicar un fallo no hardware como un fallo da RAM ou erros nas funcións aritméticas no procesador, ou por un erro no software.

En moitas ocasións é posible reiniciar ou apagar adecuadamente o núcleo mediante unha combinación de teclas como ALT+SysRq+REISUB.

Desenvolvemento
---------------

Só uns poucos programadores traballan directamente nas funcionalidades básicas do núcleo e moitas destas achegas están feitas por empresas. A maior parte do código constitúena os controladores, dos que hai miles, cada un coas súas particularidades. Como non interactúan entre eles, senón co núcleo, o desenvolvemento de código para que funcionen déixase a colaboradores voluntarios que vexan a necesidade de utilizar dispositivos que necesiten deses controladores. Isto permite que Linux se probe efectivamente en moitos sistemas moi variados pero trae o inconveniente de que, en xeral, hai que esperar semanas ou ata meses a que un dispositivo acabado de saír ao mercado podía ser usado –en parte tamén porque moitas empresas non queren desvendar o funcionamento interno dos seus produtos, aínda que isto sucede cada vez menos–.

O factor principal no proceso de desenvolvemento de Linux é que o código fonte está dispoñible publicamente baixo unha licenza que permite a súa modificación e distribución libre. Por esta razón, ao poder ser visto por moita xente, se se atopa un problema resulta máis doado solucionalo e se falta unha funcionalidade pódese engadir.

### Versións

Máis aló de desenvolver o seu propio código e de integrar os cambios realizados por outros programas, Linus Torvalds continua lanzando novas versións do núcleo Linux. Estes son chamados núcleos ?vanilla?, o que significa que non foron modificados por ninguén.

#### Numeración

A versión do núcleo Linux orixinal constaba de catro números. Por exemplo, asumamos que o número da versión está composta desta forma: **A.B.C[.D]** (ex.: 2.2.1, 2.4.13 ó 2.6.12.3).

* O número **A** denota a versión do núcleo. É o que cambia con menor frecuencia e só faio cando se produce un gran cambio no código ou no concepto do núcleo. Historicamente só foi modificado tres veces: en 1994 (versión 1.0), en 1996 (versión 2.0) e en 2011 (versión 3.0).
* O número **B** denota a subversión do núcleo.

Antes da serie de Linux 2.6.x, os números pares indicaban a versión ?estable? lanzada. Por exemplo unha para uso de fabricación, como o 1.2, 2.4 ó 2.6. Os números impares, en cambio, como a serie 2.5.x, son versións de desenvolvemento, é dicir que non son consideradas de produción.
Comezando coa serie Linux 2.6.x, non hai gran diferenza entre os números pares ou impares con respecto ás novas ferramentas desenvolvidas na mesma serie do núcleo. Linus Torvalds ditaminou que este será o modelo no futuro.
* O número **C** indica unha revisión maior no núcleo. Na forma anterior de versións con tres números, isto foi cambiado cando se implementaron no núcleo os parches de seguridade, bugfixes, novas características ou drivers. Coa nova política, só é cambiado cando se introducen novos drivers ou características; cambios menores reflíctense no número **D**.
* O número **D** produciuse cando un grave erro, que require dun arranxo inmediato, atopouse no código NFS da versión 2.6.8. Con todo, non había outros cambios como para lanzar unha nova revisión (a cal fose 2.6.9). Entón lanzouse a versión 2.6.8.1, co erro arranxado como único cambio. Con 2.6.11, isto foi adoptado como a nova política de versións. Bug-fixes e parches de seguridade son actualmente manexados polo cuarto número deixando os cambios maiores para o número **C**.

Tamén, algunhas veces logo das versións pode haber algunhas letras como ?rc1? ou ?mm2?. O ?rc? refírese a release candidate e indica un lanzamento non oficial. Outras letras usualmente (pero non sempre) fan referencia ás iniciais da persoa. Isto indica unha bifurcación no desenvolvemento do núcleo realizado por esa persoa, por exemplo ck refírese a Con Kolivas, ac a Alan Cox, mentres que mm refírese a Andrew Morton.

O modelo de desenvolvemento para Linux 2.6 foi un cambio significativo desde o modelo de desenvolvemento de Linux 2.5. Previamente existía unha rama estable (2.4) onde se produciron cambios menores e seguros, e unha rama inestable (2.5) onde estaban permitidos cambios maiores. Isto significou que os usuarios sempre tiñan unha versión 2.4 a proba de fallos e co último en seguridade e case libre de erros, aínda que tivesen que esperar polas características da rama 2.5. A rama 2.5 foi eventualmente declarada estable e renombrada como 2.6. Pero no canto de abrir unha rama 2.7 inestable, os desenvolvedores de núcleos elixiron continuar agregando os cambios na rama ?estable? 2.6. Desta forma non había que seguir mantendo unha rama vella pero estable e podíase facer que as novas características estivesen rapidamente dispoñibles e puidésense realizar máis probas co último código.

Con todo, o modelo de desenvolvemento do novo 2.6 tamén significou que non había unha rama estable para aqueles que esperaban seguridade e bug fixes sen necesitar as últimas características. Os arranxos só estaban na última versión, así que se un usuario quería unha versión con todos os bug fixed coñecidos tamén tería as últimas características, as cales non foran ben probadas. Unha solución parcial para isto foi a versión xa mencionada de catro números (e en 2.6.x.e), a cal significaba lanzamentos puntuais creados polo equipo estable (Greg Kroah-Hartman, Chris Wright, e quizais outros). O *equipo estable* só lanzaba actualizacións para o núcleo máis recente, con todo isto non solucionou o problema do faltante dunha serie estable de núcleo. Distribuidores de Linux, como Red Hat e Debian, manteñen os núcleos que saen cos seus lanzamentos, de forma que unha solución para algunhas persoas é seguir o núcleo dunha distribución.

Como resposta á falta dun núcleo estable e de xente que coordinase a colección de corrección de erros, en decembro de 2005 Adrian Bunk anunciou que continuaría lanzando núcleos 2.6.16 aínda cando o *equipo estable* lanzase 2.6.17. Ademais pensou en incluír actualizacións de controladores, facendo que o mantemento da serie 2.6.16 sexa moi parecido ás vellas regras de mantemento para a serie estables como 2.4. O núcleo 2.6.16 será substituído proximamente polo 2.6.27 como núcleo estable en mantemento durante varios anos.

Dado o novo modelo de desenvolvemento, que mantén fixa a subversión de 2.6, tras durante o Linux Kernel Summit dese ano, Linus Torvalds decidiu modificar o sistema de numeración, substituíndo os dous primeiros números por unha única cifra, de forma que Linux 2.6.39 foi seguida por Linux 3.0 

### Datas de publicación

| Versión | Data | Nota | Ficheiros | LoC | MiB | MiB (bz2) |
| --- | --- | --- | --- | --- | --- | --- |
| 0.01 | 17 de setembro de 1991 | Initial Public Release | 88 | 8.413 | 0,267 | 0,06 |
| 0.02 | 5 de outubro de 1991 |  | - | - |  |  |
| 0.11 | 8 de decembro de 1991 |  | 100 | 11.907 | 0,363 | 0,076 |
| 0.95 | 7 de marzo de 1992 |  | 122 | 19.200 | 0,533 | 0,111 |
| 1.0.0 | 13 de marzo de 1994 | Primeira versión estable | 561 | 170.581 | 4,633 | 0,969 |
| 1.1.0 | 6 de abril de 1994 | Versión de desenvolvemento | 561 | 170.320 |  |  |
| 1.2.0 | 6 de marzo de 1995 |  | 909 | 294.623 |  |  |
| 1.3.0 | 12 de xuño de 1995 | Versión de desenvolvemento | 992 | 323.581 |  |  |
| 2.0.0 | 9 de xuño de 1996 |  | 2.015 | 716.119 | 21,7 | 4,499 |
| 2.1.0 | 30 de setembro de 1996 | Versión de desenvolvemento | 1.727 | 735.736 |  |  |
| 2.2.0 | 26 de xaneiro de 1999 |  | 4.599 | 1.676.182 |  |  |
| 2.3.0 | 11 de maio de 1999 | Versión de desenvolvemento | 4.721 | 1.763.358 |  |  |
| 2.4.0 | 4 de xaneiro de 2001 |  | 8.187 | 3.158.560 | 96,8 | 18,79 |
| 2.5.0 | 23 de novembro de 2001 | Versión de desenvolvemento | 9.893 | 3.833.603 |  |  |
| 2.6.0 | 18 de decembro de 2003 |  | 15.007 | 5.475.685 | 170,7 | 31,7 |
| 2.6.25 | 16 de abril de 2008 |  | 23.810 | 8.396.250 | 258,8 | 46,4 |
| 2.6.30 | 10 de xuño de 2009 |  | 27.878 | 10.419.567 | 322,3 | 56,7 |
| 2.6.35 | 1 de agosto de 2010 |  | 33.315 | 12.250.679 | 376,2 | 66,1 |
| 3.0 | 22 de xullo de 2011 |  | 36.782 | 13.688.408 | 410,8 | 73,2 |
|

Distribucións
-------------

*Artigo principal**:* Distribución de GNU/Linux.
Sharp Zaurus, un computador de peto con Linux.
Unha distribución Linux é un conxunto de software acompañado do núcleo Linux que se enfoca a satisfacer as necesidades dun grupo específico de usuarios. Deste xeito hai distribucións para fogares, empresas e servidores.

As distribucións son ensambladas por individuos, empresas ou outros organismos. Cada distribución pode incluír calquera número de software adicional, incluíndo software que facilite a instalación do sistema. A base do software incluído con cada distribución inclúe o núcleo Linux, na maioría dos casos as ferramentas GNU, ao que adoitan engadirse tamén multitude de paquetes de software.

As ferramentas que adoitan incluírse na distribución deste sistema operativo obtéñense de diversas fontes, e en especial de proxectos de software libre, como: GNU, GNOME (creado por GNU) e KDE. Tamén se inclúen utilidades doutros proxectos como Mozilla, Perl, Ruby, Python, PostgreSQL, MySQL, Xorg, case todas con licenza GPL ou compatibles con esta (LGPL, MPL).

Usualmente utilízase a plataforma X.Org Server, baseada na antiga XFree86, para soster a interface gráfica.

Copyright
---------

Inicialmente, Torvalds distribuíu Linux baixo os termos dunha licenza que prohibía a explotación comercial. Pero esta licenza foi substituída, pouco tempo despois, pola GNU GPL (versión 2 exclusivamente). Os termos desta última licenza permiten a distribución e venda de copias ou mesmo modificacións, pero require que todas as copias do traballo orixinal e traballos de autoría derivados do orixinal sexan publicados baixo os mesmos termos, e que o código fonte sempre poida obterse polo mesmo medio que o programa licenciado.

Torvalds referiuse a licenciar Linux baixo a GPL como *"a mellor cousa que fixen"* (en inglés, *"the best thing I ever did"*).

Con todo, a versión oficial do núcleo Linux contén firmware de código pechado[], por iso, o Proxecto Linux-libre, auspiciado pola FSFLA, publica e mantén versións modificadas do núcleo Linux ás que se lles quitou todo o software non libre.

Marca
-----

A día de hoxe, *Linux* é unha marca rexistrada de Linus Torvalds nos Estados Unidos.

Até 1994 ninguén rexistrou a marca Linux nos Estados Unidos. O 15 de agosto de 1994 cando William R. Della Croce, Jr. rexistrou a marca *Linux*, pediu o pago de regalías aos distribuidores de Linux. En 1996, Torvalds e algunhas organizacións afectadas denunciaron a Della Croce e en 1997 o caso pechouse e a marca foi asignada a Torvalds.

Desde entón, o Linux Mark Institute xestiona a marca. En 2005 o LMI enviou algunhas cartas a empresas distribuidoras de Linux esixindo o pago dunha cota polo uso comercial do nome. Isto é así porque a lexislación estadounidense esixe que o dono dunha marca deféndaa, polo que se tivo que pedir diñeiro por usar a marca Linux, algunhas compañías de forma totalmente voluntaria cumpriron coa devandita esixencia, a propósito de que devandito diñeiro se ía a usar para caridade ou defender a marca Linux.

Críticas
--------

### Soporte de hardware

O núcleo Linux foi criticado con frecuencia por falta de controladores para certo hardware de computadoras de escritorio. Con todo, o progresivo incremento na adopción de Linux no escritorio mellorou o soporte de hardware por parte de terceiros ou dos propios fabricantes, provocando que, nos últimos anos, os problemas de compatibilidade redúzanse.

Empresas como IBM, Intel Corporation, Hewlett-Packard, Dell ou MIPS Technologies teñen programadores no equipo de desenvolvedores do núcleo Linux que se encargan de manter os controladores para o hardware que fabrican. Este grupo de programadores tamén se lle suman os que prové grandes distribuidores de solucións Linux como Novell ou Red Hat.

### Arquitectura monolítica

Andy Tanenbaum escribiu o 29 de xaneiro de 1992:

> 
> 
> ...Linux é un sistema monolítico. Isto é retroceder un paso xigante cara á década de 1970. É como tomar un programa existente escrito en C e reescribilo en BASIC. Para min, escribir un sistema monolítico en 1991 é verdadeiramente unha idea pobre.
> 
>

Notas
-----

1. ↑  LMKL.ORG - the Linux Kernel Mailing List Arquive, Sitio Oficial de *Linux Kernel Mailing List*.
2. ↑  Martens, China (28 de xullo de 2006). InfoWorld, eds. "Linux creator Torvalds still no fan of GPLv3".
3. 1 2  "Linux Kernel Copying". Arquivado dende o orixinal o 21 de decembro de 2012. Consultado o 13 de novembro de 2019. *Nótese ademais que a única versión válida da GPL no que respecta ao kernel é \_esta\_ versión en particular da licenza (ie v2, nin v2.2 nin v3.x ou a que sexa), agás que se diga o contrario.*
4. ↑  Stallman, Richard (2002). Free Software Foundation, eds. "Linux, GNU, and freedom".
5. ↑  git.kernel.org, eds. (16 de outubro de 2002). "kernel/git/stable/linux-stable.git". Arquivado dende o orixinal o 13 de xaneiro de 2013. Consultado o 26 de agosto de 2018. path: root/firmware/WHENCE
6. ↑  Torvalds, Linus (12 de novembro de 2017). LKML, eds. "Linux 4.14".
7. ↑  linux.org, ed. (2010). "What is Linux" (en inglés). Arquivado dende o orixinal o 27/05/2010. Consultado o 2/01/2018.
8. ↑  Torvalds, Linus (25/09/2006). "Re: GPLv3 Position Statement". *LKML*. Consultado o 02701/2018.
9. ↑  slashdot.org (eds.). "Linux kernel moves to github".
10. ↑  Linus Torvalds (04/09/2011). "Linux 3.1-rc5".
11. ↑  netmarketshare.com (eds.). "Operating System Market Share". Para os ambientes de escritorio entre novembro e decembro de 2017 statcounter cita unha porcentaxe de uso do 2.33%."
12. ↑  statcounter, Global Stats (eds.). "Desktop Operating System Market Share Worldwide". Para os ambientes de escritorio entre novembro e decembro de 2017 statcounter cita unha porcentaxe de uso do 1.53%.
13. ↑  w3schools.com (eds.). "OS Platform Statistics". Para o sistema operativo que se identifican navegando na web, en 2017 w3schools rexistrou un mínimo do 5.3% e un máximo 6.0% de porcentaxe de uso de Linux.
14. 1 2  Top500.org (eds.). "TOP500 Supercomputer Sites: Operating system Family / Linux". Consultado o 02/91/2018.
15. 1 2  Marjorie Richardson (1/11/1999). "Interview: Linus Torvalds". *Linux Journal* (en inglés). Consultado o 20/08/2009.
16. ↑  Williams, Sam (Marzo de 2002). "Chapter 9: The GNU General Public License". En O'Reilly. *Free as in Freedom: Richard Stallman's Crusade for Free Software*. ISBN 0-596-00287-4. Consultado o 02/01/2018.
17. ↑  Kroah-Hartman, Greg. "The Linux Kernel Driver Interface". *Linux Kernel Documentation*. Arquivado dende o orixinal o 21 de decembro de 2016. Consultado o 20 January 2016. 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.
18. ↑  Greg Kroah-Hartman (Abril de 2008). "Linux Kernel Development: How Fast it is Going, Who is Doing It, What They are Doing, and Who is Sponsoring It" (PDF) (en inglés). Arquivado dende o orixinal o 12 de setembro de 2019. Consultado o 01 de xaneiro de 2018. Since 2005, over 3700 individual developers from over 200 different companies have contributed to the kernel.
19. 1 2  Linux Foundation, Press Release, eds. (24/10/2017). "The Linux Foundation Releases Annual Kernel Development Report". Arquivado dende o orixinal o 03/01/2018. Consultado o 02/01/2018.
20. ↑  Jonathan Corbet (02/08/2017). lwn.net, eds. "Statistics from the 4.7 development cycle".
21. ↑  Linux.com (eds.). "Linux Kernel Development Report 2016. How Fast It's Going, Who Is Doing It, What They Are Doing, and Who Is Sponsoring It?". Arquivado dende o orixinal o 22 de agosto de 2016. Consultado o 23 de agosto de 2016.
22. ↑  W3Techs (eds.). "Usage statistics and market share of Unix for websites". Consultado o 02/01/2018.
23. ↑  "Sobre Linux". Linux.org. Consultado o 19 de xullo de 2012.
24. ↑  Linus Torvalds (25-08-1991) Message from discussion What would you like to see most in minix? Newsgroups: comp.vos.minix, Google Groups (en inglés).
25. ↑  "FAQ: Preemption". *kernelnewbies.org*. 22 de agosto de 2009. Consultado o 2/01/2017.
26. 1 2  Jonathan Corbet (24 February 2003). "Driver porting: the preemptible kernel". LWN.net. Consultado o 7 May 2015.
27. ↑  Jake Edge (25 November 2008). "Character devices in user space". LWN.net. Consultado o 2/01/2017.
28. ↑  Jonathan Corbet (2 May 2007). "UIO: user-space drivers". LWN.net. Consultado o 2/01/2017.
29. ↑  Kroah-Hartman, Greg. "The Linux Kernel Driver Interface". Arquivado dende o orixinal o 04/11/2013. Consultado o 02/01/2018.
30. 1 2  Nguyen, Binh (30 de xullo de 2004). "Linux Filesystem Hierarchy: Chapter 1. Linux Filesystem Hierarchy". The Linux Documentation Project. Consultado o 02/01/2017.
31. ↑  cosaslibres.com (eds.). "GNU/Linux Kernel Híbrido" (en castelá).
32. ↑  dina.dk (eds.). "Resumo da afamada discusión entre Linus Torvalds e Andrew Tanenbaum". Arquivado dende o orixinal o 08 de xuño de 2015. Consultado o 01 de xaneiro de 2018.
33. ↑  Paul Barry (07/02/2001). Linux Journal, eds. "Which Programming Language?".
34. ↑  Balc Dub (eds.). "Linux Kernel : Languges".
35. ↑  Torvalds, Linus Benedict (26/08/1991). comp.os.minix, eds. "What would you like to see most in minix? (ID da mensaxe: 1991Aug25.205708.9541@klaava.Helsinki.FI)".
36. 1 2 3  Torvalds, Linus (Xaneiro de 1999). "The Linux Edge". En O'Reilly. *Open Sources: Voices from the Open Source Revolution*. ISBN 1-56592-582-3. Consultado o 02/01/2018.
37. ↑  "Porting Linux to the DEC Alpha: The Kernel and Shell". Consultado o 02/01/2018.
38. ↑  "Linux on Alpha: A Strategic Choice". Consultado o 02/01/2018.
39. ↑  Wang, David (6/05/2010). TechHive, eds. "Android Now Running On iPhone 3G". Consultado o 02/01/2018.
40. ↑  Kroah-Hartman, Greg (2/02/2010). "Android and the Linux kernel community". Consultado o 02/01/2018. *Isto quere dicir que calquera driver que se escriba para as plataformas de Android non se poden volver a unir coa pola principal do kernel xa que teñen dependencias no código que só están presente na árbore do kernel de Google; e iso causa que haxa fallos compilando a árbore no kernel.org. Por iso, Google evitou que unha boa parte do código de drivers de hardware e código da plataforma se xunga coa árbore principal do kernel. En efecto o que se creou foi unha póla do kernel na que na práctica se basean os múltiples distribuidores.*
41. ↑  Meyer, David (03/02/2010). ZDNet, eds. "Linux developer explains Android kernel code removal". Consultado o 02/01/2018.
42. ↑  Nokia, eds. (2008). "Chapter 03: maemo Platform Overview". *maemo Technology Overview*. Arquivado dende o orixinal o 16/06/2008. Consultado o 02/01/2018.
43. ↑  Linux Torvalds. git.kernel.org, eds. "github.com/torvalds/linux/tree/master/kernel". Consultado o 02/01/2018.
44. ↑  Organización dos directorios en Linux[*Ligazón morta*]
45. ↑  29 de maio de 2011, anuncio de Linux 3.0-rc1
46. ↑  "Datas de publicación de Linux". Arquivado dende o orixinal o 27 de decembro de 2008. Consultado o 01 de xaneiro de 2018.
47. ↑  Contados con "find -type f | wc -l"
48. ↑  Lines of Code (Liñas de código), contados con "find -name \*.[hcS] | xargs cat | wc -l"
49. ↑  Yamagata, Hiroo (11-11-1997). "The Pragmatist of Free Software: Linus Torvalds Interview". Arquivado dende o orixinal o 26-12-2007. Consultado o 30-10-2011.
50. ↑  "Rexistro en Estados Unidos Non: 1916230". Oficina de Patentes e Marcas Comerciais de Estados Unidos. Consultado o 30-10-2011.
51. ↑  "Linux Timeline". Linux Journal. 31-05-2006.
52. ↑  "Linus gets tough on Linux trademark". 05-09-2005. Arquivado dende o orixinal o 12-04-2008. Consultado o 30-10-2011.
53. ↑  "Who writes Linux" (PDF). Agosto de 2009. Arquivado dende o orixinal (PDF) o 31 de xaneiro de 2010. Consultado o 01 de xaneiro de 2018.
54. ↑  A. S. Tanenbaum (29-01-1992). "LINUX is obsolete". Grupo de novas: comp.vos.minix. Consultado o 30-10-2011.

Véxase tamén
------------

### Outros artigos

* GNU/Linux
* Linus Torvalds

### Ligazóns externas

* Sitio web oficial do kernel Linux *(en inglés)*.

|  |  |
| --- | --- |
| Control de autoridades | 
* Wd: Q388
* WorldCat
* VIAF: 185985901
* BNF: 124906479
* EBID: ID
* GEC: 0263202
* GND: 4337730-0
* IGDB: linux
* LCCN: n94087892
* MAG: 517481932
* NKC: ph117043
* NLG: 51688
* PSH: 12506
* SUDOC: 034116125

 |