Начало проекту было положено в 1991 году с публикации сообщения в новостной группе Usenetcomp.os.minix следующего содержания[25]:
Привет всем, кто использует миникс — Я делаю (свободную) операционную систему (всего лишь хобби, она не будет большой и профессиональной, как gnu) для клонов 386 (486) AT…
Оригинальный текст(англ.)
Hello everybody out there using minix -
I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones.
К тому времени GNU уже создал множество составляющих для свободной операционной системы, но её ядро GNU Hurd ещё не было готово. Поэтому пустующее место ядра для свободной ОС занял Linux и, несмотря на ограниченную функциональность ранних версий, привлёк к себе множество разработчиков и пользователей.
«Linux», разработка которого была начата Торвальдсом — лишь небольшая часть многих из использующих его систем, которые обычно тоже называют «Linux». Это иногда приводит к путанице, и те из них, которые используют системные библиотеки (например, GNU C Library) и другие программы Проекта GNU, называют также «GNU/Linux».[26] О различных комбинациях свободных компонентов в операционных системах см. Операционные системы на основе свободного ПО.
Сейчас, в апреле 2011 года, семейство операционных систем на базе ядра Linux — третье по популярности в мире на рынке настольных компьютеров — 5,1 %[27]. На рынке веб-серверов доля Linux порядка 32 %, остальное — Unix-системы (FreeBSD и др.)[28]. По данным Top500, GNU/Linux используется в качестве операционной системы на 91 % самых мощных суперкомпьютеров планеты[29]. Большинство мобильных устройств, таких как смартфоны и планшетные компьютеры на базе ОС Android и MeeGo, а также телевизоры, и многие служебные устройства, такие как внешние сетевые жёсткие диски, маршрутизаторы и модемы, также используют операционные системы на базе ядра Linux.
Хронология
Апрель 1991 — 21-летний Линус Торвальдс начал работу над некоторыми механизмами операционной системы. Он начал с эмулятора терминала и планировщика задач.
25 августа 1991 — Линус поместил следующее сообщение[25]:
От: torvalds@klaava.Helsinki.Fi (Линус Бенедикт Торвальдс)
Новостная группа: comp.os.minix
Тема: Небольшой опрос о моей новой операционной системе
Message-ID:<1991Aug25.205708.9541@klaava.Helsinki.Fi>
Дата: 25 Aug 91 20:57:08 GMT
Организация: Хельсинкский Университет
Привет всем тем, кто использует миникс —
Я делаю (свободную) операционную систему (это только хобби, не столь большое и профессиональное, как GNU) для 386(486)AT клонов. Эта система пишется с апреля и скоро будет готова. Я хочу получить любой отзыв, касающийся вещей, которые нравятся/не нравятся людям в миникс, так как моя ОС похожа на неё (такое же устройство файловой системы (по практическим соображениям), среди прочего).
В настоящее время я портировал bash (1.08) и gcc (1.40), и, похоже, эти программы работают. Это значит, что я получу что-то практичное в ближайшие несколько месяцев, и я хочу узнать, какие возможности хочет большинство людей. Любые предложения принимаются, но я не обещаю, что я осуществлю их:-)
Линус (torvalds@kruuna.helsinki.fi)
PS. Да — в ней нет кода миникс, и будет мультипотоковая ФС. Система НЕПЕРЕНОСИМА (использует команды Intel 386 и т. д.) и, вероятно, будет поддерживать только жёсткие диски AT, так как это всё, что у меня есть :-(
Оригинальный текст(англ.)
Hello everybody out there using minix -
I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).
I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get something practical within a few months, and I'd like to know what features most people would want. Any suggestions are welcome, but I won't promise I'll implement them :-)
Linus (torvalds@kruuna.helsinki.fi)
PS. Yes - it's free of any minix code, and it has a multi-threaded fs. It is NOT portable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that's all I have :-(.
15 января2012 — релиз Linux 3.3 преодолел отметку в 15 млн строк кода.
23 февраля 2015 — первый релиз кандидат Linux 4.0.
Версии
Торвальдс продолжает выпускать новые версии ядра, объединяя изменения, вносимые другими программистами, и внося свои. Оно обычно называется «ванильным» (vanilla), то есть официальное ядро без каких-либо сторонних изменений. В дополнение к официальным версиям ядра существуют альтернативные ветки, которые могут быть взяты из различных источников. Как правило, разработчики [2]
Нумерация версий до 30 мая 2011
Номер версии ядра Linux до 30 мая 2011 содержал четыре числа, согласно недавнему изменению в политике именования версий, схема которой долгое время была основана на трёх числах. Для иллюстрации допустим, что номер версии составлен таким образом: A.B.C[.D] (например 2.2.1, 2.4.13 или 2.6.12.3).
Число A обозначает версию ядра. Оно изменяется редко и только тогда, когда вносятся значительные изменения в код и концепцию ядра. Оно изменялось три раза в истории ядра: в 1994 (версия 1.0), в 1996 (версия 2.0) и 31 мая 2011 (3.0.0).
Число B обозначает старшую версию ревизии ядра. Чётные числа обозначают стабильные ревизии, то есть те, которые предназначены для промышленного использования, такие как 1.2, 2.4 или 2.6. Нечётные числа обозначают ревизии для разработчиков, такие как 1.1 или 2.5. Они предназначены для того, чтобы тестировать новые улучшения и драйвера до тех пор, пока они не станут достаточно стабильными для того, чтобы включить их в стабильный выпуск.
Число C обозначает младшую версию ревизии ядра. В старой трёхчисловой схеме нумерации оно изменялось тогда, когда в ядро включались заплатки, связанные с безопасностью, исправления ошибок, новые улучшения или драйверы. С новой политикой нумерации, однако, оно изменяется только тогда, когда вносятся новые драйверы или улучшения; небольшие исправления поддерживаются числом D.
Число D впервые появилось после случая, когда в коде ядра версии 2.6.8 была обнаружена грубая, требующая незамедлительного исправления ошибка, связанная с NFS. Однако других изменений было недостаточно для того, чтобы это послужило причиной для выпуска новой младшей ревизии (которой должна была стать 2.6.9). Поэтому была выпущена версия 2.6.8.1 с единственным изменением в виде исправления этой ошибки. С ядра 2.6.11 эта нумерация была адаптирована в качестве новой официальной политики версий. Исправления ошибок и заплатки безопасности теперь обозначаются с помощью четвёртого числа, тогда как большие изменения отражаются в увеличении младшей версии ревизии ядра (число C).
Нумерация версий с 30 мая 2011
30 мая 2011 Линус Торвальдс выпустил ядро версии 3.0-rc1. Вместе с ним изменена политика нумерации версий ядра. Отменено использование чётных/нечётных номеров для обозначения стабильности ядра, а третье число означает стабильность ядра. Версия 3.0 практически не несет никаких изменений, кроме изменения политики нумерации ядра. Таким образом, стабильные версии ядра 3.0 будут именоваться 3.0.X, а следующий после этого релиз будет иметь номер 3.1.
Поддержка
В то время как Торвальдс продолжает выпускать новые экспериментальные версии, руководство «старыми» стабильными версиями передаётся другим лицам:
добавлена поддержка для процессоров Hitachi серии H8/300, NEC v850, процессоры для встроенных систем Motorolam68k, новая архитектура доступа к памяти NUMA, поддержка NCR Voyager, технологии Intelhyperthreading и PAE;
добавлено:
поддержка файловой системы XFS (разработчик — фирма SGI);
увеличено максимальное количество пользователей и групп с 65 000 до более 4 млрд;
увеличено максимальное количество процессов с 32 000 до 1 млрд;
увеличено максимальное количество типов устройств (major device) – с 255 до 4095, и максимальное количество устройств каждого типа (minor device) – с 255 до более миллиона. Из-за проблем с распределением номеров под типы устройства введён системный сервис udev;
улучшена поддержка 64-битных систем и файловых систем размером более 16 Тбайт;
уменьшено время реакции для процессов реального времени;
переписана реализация потоков с использованием Native POSIX Thread Library (NPTL);
Версия 3.2 — используется в Ubuntu 12.04 LTS и Debian 7 Wheezy. Помимо исправлений ошибок предполагается впервые вносить некоторые оптимизации кода, влияющие на производительность, в ядро с длительным циклом поддержки.
Можно запретить выполнять скрипты как программы — функционал запуска скриптов, содержащих путь к интерпретатору в заголовке «#!», теперь может быть собран в виде модуля ядра;
Интегрирована разработанная и используемая в Google система Bcache. Bcache позволяет организовать кэширование доступа к медленным жестким дискам на быстрых SSD-накопителях; кэширование при этом ведётся на уровне блочного устройства — и это позволяет ускорить доступ к накопителю, причем независимо от используемых файловых систем на устройстве;
Ядро можно собирать компилятором Clang благодаря подготовленным проектом LLVMLinux патчам;
Появилась динамическая система управления генерацией прерываний таймером. Теперь можно в зависимости от текущего состояния изменять прерывания в диапазоне от тысяч тиков в секунду до одного прерывания в секунду — это позволяет сводить к минимуму нагрузку на CPU при обработке прерываний в случае неактивности системы. Сейчас эта функция используется для систем реального времени и HPC (высокопроизводительных вычислений), но в следующих выпусках ядра будет задействована и для десктоп-систем тоже;
Появилась возможность генерации события с уведомлением приложения о приближении к исчерпанию доступной процессу/системе памяти (в cgroups);
Для команды perf стало доступно профилирование доступа к памяти;
Появился новый драйвер «sync» (экспериментальный). Он был разработан в рамках платформы Android и используется для синхронизации между другими драйверами;
Появился драйвер для виртуальных видеоадаптеров Microsoft Hyper-V (по работе Hyper-V в целом тоже есть улучшения);
Теперь поддерживаются новые средства управления питанием, которые появились в процессорах AMD семейства 16h («Jaguar»);
Поддержка ускорения декодирования видео с использованием аппаратного декодера UVD, встроенного в современные GPUAMD, была добавлена в DRM-модуль Radeon;
Добавлена поддержка протокола RDMA (iSER) в подсистему iSCSI;
Выполнение криптографических функций (sha256, sha512, blowfish, twofish, serpent и camellia) оптимизировано с использованием инструкций AVX/AVX2 и SSE.;
Был интегрирован драйвер виртуальной графической карты QXL (применяется в системах виртуализации для ускоренного вывода графики при помощи протокола SPICE).
На сегодняшний день Linux — монолитное ядро с поддержкой загружаемых модулей. Драйверы устройств и расширения ядра обычно запускаются в 0-кольце защиты, с полным доступом к оборудованию. В отличие от обычных монолитных ядер, драйверы устройств легко собираются в виде модулей и загружаются или выгружаются во время работы системы.
То, что архитектура Linux не является 1992 г.
Совместимость
Не задуманный изначально как многоплатформенное ядро, Linux на данное время перенесён на очень широкий круг архитектур, запускается на широком спектре оборудования от iPAQ (карманный компьютер) до IBM S/390 (высокопроизводительный мейнфрейм). Системы на основе Linux используются в качестве основных почти на всех суперкомпьютерах (более 91 % списка Top500), в том числе и на самых мощных — K computer.
Изначально Linux разрабатывался для 32-битных x86-совместимых ПК; на сегодняшний день различные версии ядра Linux запускаются на следующих процессорных архитектурах:
Linux распространяется на условиях лицензии GNU General Public License, то есть свободно. Эту лицензию выбрал Линус Торвальдс практически сразу после того, как стало понятно, что его хобби начало получать распространение по всему миру. Владельцем торговой марки Linux является Линус, а помогает следить за соблюдением его прав и условий GPL Фонд свободного программного обеспечения.
В качестве символа версии ядра 2.6.29 принят тасманский дьявол Tuz, изображение которого ранее служило талисманом конференции linux.conf.au 2009. На этой конференции Линус Торвальдс провел успешную акцию по благотворительной продаже игрушек Linux Tasmanian devil за сохранение популяции Тасманского дьявола. В версии 2.6.30 используется прежний логотип.
Оценка стоимости разработки с нуля
Стоимость переразработки ядра Linux версии 2.6.0 способами, принятыми для разработки проприетарного ПО, была оценена в 612 млн долл. США (467 млн евро) в ценах 2004 года с использованием модели оценки человеко-месяцев COCOMO.[32] В 2006 году исследование, профинансированное Евросоюзом, подняло стоимость разработки ядра Linux до уровня 882 млн евро (1,09 млрд долл. США).[33]
Эта тема была снова поднята в октябре 2008 г. Амандой МакФерсон, Брайаном Проффиттом и Роном Хейл-Эвансом. Используя методологию Дэвида Э. Вилера, они оценили разработку ядра 2.6.25 в 1,3 млрд долл. США (часть от 10,8 млрд долл. США переразработки Fedora 9).[34] Также Гарсиа-Гарсиа и Алонсо де Магдалено из университета Овьедо (Испания) оценили ежегодный прирост стоимости ядра приблизительно в 100 млн евро с 2005 по 2007 гг. и 225 млн евро в 2008 г. Совокупная стоимость разработки в Евросоюзе в 2009 году оценена в более чем 1 млрд евро (около 1,23 млрд долл. США).[35]
USB core — подсистема для поддержки USB-устройств и контроллеров шины USB.
Ссылки
The Linux Kernel Archives (англ.) (HTML). — Официальный сайт ядра Linux. Проверено 6 июля 2010. Архивировано из первоисточника 21 августа 2011.
git.kernel.org - linux/kernel/git/torvalds/linux-2.6.git/summary (англ.) (HTML). — Git-репозиторий. Проверено 6 июля 2010. Архивировано из первоисточника 21 августа 2011.
Index of /pub/linux/kernel/v3.0 (англ.) (HTML). — Последние версии. Проверено 12 ноября 2012. Архивировано из первоисточника 21 августа 2011.
Замечательный Мир Linux 2.6 (рус.) (HTML). — Замечательный Мир Linux 2.6 (linux). Проверено 6 июля 2010. Архивировано из первоисточника 21 августа 2011.
Мини-портал Linux (рус.) (HTML). — Мини-портал Linux на сайте OpenNet. Проверено 6 июля 2010. Архивировано из первоисточника 21 августа 2011.
Linux Kernel Newbies (англ.) (HTML). — KernelNewbies.org. Проверено 6 июля 2010.
Мини-справочник GNU/Linux (рус.) (HTML). — Фонд свободного программного обеспечения (FSF). Проверено 6 июля 2010. Архивировано из первоисточника 21 августа 2011.
Анализ тенденций и участников разработки ядра Linux — статья об отчёте The Linux Foundation за 2012 год
Литература
Торвальдс, Л.; Даймонд, Д. Ради удовольствия = Just for fun. — М.: ЭКСМО-Пресс, 2002. — С. 288. — ISBN 5-04-009285-7.
Роберт Лав. Разработка ядра Linux = Linux Kernel Development. — 2-е изд. — М.: «Вильямс», 2006. — С. 448. — ISBN 0-672-32720-1.
Родригес К. З., Фишер Г., Смолски С. Linux: азбука ядра. — «КУДИЦ-ПРЕСС», 2007. — С. 584. — ISBN 978-5-91136-017-7.
Баррет Д. Linux: основные команды. Карманный справочник. — 2-е издание. — «КУДИЦ-ПРЕСС», 2007. — С. 288. — ISBN 5-9579-0050-8.