Исходный код ядра linux

Исходный код ядра linux

Пересборка ядра Linux дело очень интересное и почему-то часто отпугивает новичков. Но ничего сложного в этом нет, и скомпилировать ядро Linux бывает не сложнее, чем собрать (скомпилировать) любую другую программу из исходников. Пересборка ядра может понадобиться, когда вам требуются какие-нибудь функции, не включенные в текущее ядро, или же, наоборот, вы хотите что-то отключить. Все дальнейшие действия мы будем выполнять в Ubuntu Linux.

Установка утилит

Для настройки и сборки ядра Linux вам потребуется установить несколько пакетов, которые понадобятся для сборки и настройки ядра:  kernel-package , build-essential , libncurses-dev . Сделать это можно командой:

Скачиваем исходный код ядра

Теперь нужно скачать исходный код ядра. Мы будем скачивать ядро для Ubuntu. Вы можете скачать определенную версию ядра, например, ту, которую вы в данный момент используете или же скачать самую последнюю версию. Для того, чтобы определить версию ядра Linux, которую вы используете, выполните команду uname с параметром -r :

Вывод команды будет примерно следующим:

Имя пакета, содержащего исходные коды ядра обычно имеет следующий вид: linux-source-Версия. Например, для ядра версии 2.6.24: linux-source-2.6.24. Самая последняя версия ядра в репозиториях Ubuntu называется просто linux-source, без указания версии на конце. Для установки исходных кодов последней версии ядра Ubuntu Linux, выполните команду:

Эта команда скачивает исходники ядра и размещает их в директории /usr/src . На момент написания заметки последняя версия ядра, которая была скачана — 2.6.27, ее мы и будем использовать. Если мы теперь перейдем в директорию /usr/src и выполним команду ls , то увидим, что среди файлов присутствует файл linux-source-2.6.27.tar.bz2. Это и есть исходные коды ядра Linux (ядра Ubuntu).

Распаковываем исходный код ядра

Перейдем в директорию /usr/src и разархивируем ядро. Для этого выполните следующие команды:

Для удобства мы создали символьную ссылку с именем linux , которая указывает на директорию с исходниками.

Конфигурация ядра

Теперь перейдем к конфигурированию ядра. Чтобы не создавать конфигурацию с нуля, возьмем за основу конфигурацию ядра, которая в данный момент используется. Получить текущую конфигурацию можно выполнив команду make oldconfig . Выполните в терминале:

В результате выполнения команды make oldconfig создастся файл .config , содержащий параметры конфигурации ядра.

Получить справку по всем параметрам make для ядра Linux вы можете, выполнив команду make help .

Для изменения конфигурации ядра мы воспользуемся консольной утилитой menuconfig . Для ее запуска выполните:

Перед вами появится интерфейс, в котором вы можете включать или отключать определенные опции ядра:

Для примера я включу опцию «NTFS write support». Для этого, нажимая кнопку Вниз , найдите пункт «File systems» и нажмите Enter .

Вы окажетесь в меню настройки файловых систем. Найдите в этом списке пункт «DOS/FAT/NT Filesystems» и нажмите Enter .

Перейдите к пункту «NTFS write support» и нажмите Пробел , рядом с пунктом появится звездочка, означающая, что данная опция будет включена в ядро.

Теперь выберите «Exit» (нажав кнопку Вправо и затем Enter ) и выйдите из утилиты. Перед выходом из утилиты выскочит сообщение с вопросом — сохранить проделанные изменения, выберите Yes.

Компиляция ядра

Пришло время скомпилировать ядро с теми изменениями, которые мы внесли на предыдущем шаге. Для начала выполним команду, которая удалит файлы (если они имеются), оставшиеся от предыдущей компиляции:

Наконец, чтобы запустить компиляцию ядра, выполним команду:

Ключ -append-to-version используется, чтобы добавить к имени файла образа ядра, который мы получим после компиляции, строку -mykernel , чтобы было проще идентифицировать свое ядро. Вместо -mykernel вы можете использовать любой префикс.

Компиляция ядра занимает довольно много времени и может длиться от нескольких десятков минут до нескольких часов, в зависимости от мощности вашего компьютера.

Установка (инсталляция) ядра

После компиляции ядра вы получили на выходе два файла: linux-image-2.6.27.18-mykernel_2.6.27.18-mykernel-10.00.Custom_i386.deb, linux-headers-2.6.27.18-mykernel_2.6.27.18-mykernel-10.00.Custom_i386.deb. Мы воспользуемся командной dpkg -i , которая автоматически установит ядро и пропишет его в ваш загрузчик GRUB (в файл  /boot/grub/menu.lst ). Отмечу, что ядро будет установлено, как ядро по умолчанию, поэтому если оно у вас не загрузится вам нужно будет загрузиться, используя ваше предыдущее ядро (оно должно быть в списке меню GRUB при загрузке компьютера) и вручную изменять файл menu.lst . Итак, для установки ядра выполните команды:

Запуск системы с новым ядром

Проверим работоспособность системы с новым ядром. Перезагрузите компьютер. В меню загрузчика GRUB вы должны будете увидеть новый пункт, соответствующей вашему новому ядру, которое должно загрузиться по умолчанию. Если все пройдет успешно, то система запустится с новым ядром.

Часть VI. Работа с ядром ОС

Глава 28. Ядро Linux

28.1. О ядре Linux

28.1.1. Версии ядра

В 1991 году Linus Torvalds разработал первую версию ядра Linux. Он выложил исходный код ядра в открытый доступ, после чего другие люди начали вносить свой вклад в его развитие. В разработке одной из версий ядра (а именно, версии 2.6.27, выпущенной в ноябре 2008 года) поучаствовало более 4000 разработчиков.

Для основных версий ядра Linux используются четные и нечетные номера. Ранее существовало разделение версий, в соответствии с которым версии 2.0 , 2.2 , 2.4 и 2.6 считались стабильными. В то же время версии 2.1 , 2.3 и 2.5 считались нестабильными (или разрабатываемыми). Начиная с выпуска версии ядра 2.6.0 в январе 2004 года вся разработка велась в рамках ветки 2.6. Версия ядра 2.7.0 так и не была выпущена и, судя по заявлениям главного разработчика ядра, которым все также является Linus Torvalds, схема разделения версий ядра на четные/стабильные и нечетные/разрабатываемые не используется и не будет использоваться в будущем.

28.1.2. Команда uname -r

Для того, чтобы узнать текущую версию ядра Linux, следует использовать команду uname -r таким образом, как показано ниже.

В первом примере показан вывод данной команды в системе с ядром Linux основной версии 2.6 и дополнительной версии 24 . Остальная часть строки -22-generic является специфичной для дистрибутива (в данном случае используется дистрибутив Ubuntu).

При выполнении этой же команды в дистрибутиве Red Hat Entrprise Linux можно получить информацию о более старом ядре (версии 2.6.18), причем строка -92.1.17.el5 также является специфичной для дистрибутива.

28.1.3. Файл /proc/cmdline

Параметры, которые были переданы ядру ОС в процессе загрузки системы, могут быть получены из файла /proc/cmdline .

28.1.4. Однопользовательский режим

В случае передачи ядру Linux параметра single будет осуществляться загрузка системы в однопользовательском режиме . В данном случае после загрузки ядра Linux будет запущена командная оболочка bash с привилегиями пользователя root (ввода пароля не потребуется).

В некоторых дистрибутивах данная возможность заблокирована (на этапе компиляции ядра ОС).

28.1.5. Параметр init=/bin/bash

Обычно ядро ОС запускает бинарный файл, путь к которому передан с помощью параметра init , создавая таким образом первый процесс-демон. Добавление параметра init=/bin/bash к строке параметров ядра позволяет вызывать командную оболочку bash (снова с правами пользователя root без необходимости ввода пароля).

28.1.6. Файл журнала /var/log/messages

Ядро ОС в процессе загрузки передает демону syslogd информацию о множестве выполняемых действий, которая сохраняется в файле журнала /var/log/messages . Из данного файла журнала можно извлечь информацию о процессе загрузки ядра, включая информацию обо всех устройствах, которые были идентифицированы в процессе загрузки системы.

А в данном примере показан фрагмент файла /var/log/messages , который может использоваться для извлечения информации о дисковом устройстве, представленном файлом устройства /dev/sda .

Читайте также:  Темы для meizu u10

28.1.7. Утилита dmesg

Утилита dmesg выводит все сообщения ядра ОС (с момента последней загрузки системы).

Следовательно, в случае поиска информации о дисковом устройстве, представленном файлом устройства /dev/sda, с помощью утилиты dmesg , будут выведены только сообщения ядра ОС с момента последней загрузки системы.

28.2. Исходный код ядра Linux

28.2.1. Ресурс ftp.kernel.org

Официальное хранилище архивов исходного ядра Linux расположено по адресу ftp.kernel.org . Данный ресурс содержит архивы исходного кода всех официальных выпусков ядра Linux начиная с 1991 года. Доступ ко всем архивам исходного кода, а также к файлам со списками изменений и файлам с исправлениями может осуществляться по протоколам http, ftp и rsync. Дополнительная информация может быть получена на вебсайте www.kernel.org .

Каждый человек может воспользоваться ftp-клиентом для осуществления анонимного входа на ресурс ftp.kernel.org.

Архивы исходного кода всех версий ядра Linux расположены по пути pub/linux/kernel/.

28.2.2. Директория /usr/src

Исходный код ядра ОС на вашем локальном компьютере должен быть расположен в директории /usr/src . Учтите, что структура поддиректорий директории /usr/src может отличаться в зависимости от используемого вами дистрибутива.

В первую очередь давайте рассмотрим структуру поддиректорий директории /usr/src в дистрибутиве Debian . В данном случае в этой директории можно обнаружить две версии полного исходного кода ядра Linux. При поиске определенного файла (e1000_main.c) исходного кода с помощью утилиты find можно получить полный путь к этому файлу.

Данная структура поддиректорий очень похожа на структуру поддиректорий директории /usr/src в дистрибутиве Ubuntu за тем исключением, что в данном случае в директории расположен исходный код одной версии ядра (и эта версия более новая).

Теперь давайте рассмотрим содержимое директории /usr/src в дистрибутиве Red Hat Entrprise Linux .

Нам придется погрузиться немного глубже в дерево директорий для того, чтобы добраться до исходного кода ядра ОС в дистрибутиве Red Hat!

28.2.3. Загрузка исходного кода ядра ОС

Установка пакета программного обеспечения с исходным кодом ядра ОС в дистрибутиве Debian осуществляется достаточно просто с помощью команды aptitude install linux-source . В первую очередь вы можете осуществить поиск всех пакетов программного обеспечения с именами linux-source таким образом, как показано в примере ниже.

После этого вы можете использовать команду aptitude install для загрузки и установки пакета программного обеспечения с исходным кодом ядра Linux из состава дистрибутива Debian.

После того, как утилита aptitude закончит работу, вы обнаружите новый файл с именем /usr/src/linux-source- .tar.bz2 в файловой системе вашего компьютера.

Дистрибутив Ubuntu основывается на дистрибутиве Debian, причем в нем также может использоваться утилита aptitude , поэтому задача полностью аналогична предыдущей.

И после того, как утилита aptitude завершит свою работу, мы получим файл /usr/src/linux-source- .tar.bz2 .

Red Hat Enterprise Linux

Ранее пакет программного обеспечения с исходным кодом ядра ОС располагался на четвертом установочном диске с пакетами исходного кода дистрибутива Red Hat Enerprise Linux. Файл пакета программного обеспечения носит имя kernel-2.6.9-42.EL.src.rpm (пример для дистрибутива RHEL версии 4 с обновлением 4). Также данный пакет доступен по адресу ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/ (пример для дистрибутива RHEL 5).

Для загрузки пакета исходного кода ядра ОС дистрибутива RHEL следует использовать длинную команду (команда должна располагаться в одной строке без завершающего символа ).

После того, как утилита wget закончит свою работу, вы получите файл с расширением .rpm размером в 60 Мб.

Нам придется выполнить дополнительные действия для того, чтобы использовать исходный код ядра ОС из пакета программного обеспечения по назначению.

В первую очередь мы должны выполнить команду rpm -i kernel-2.6.9-42.EL.src.rpm для установки загруженного пакета программного обеспечения дистрибутива Red Hat.

После этого мы должны перейти в директорию SPECS и задействовать утилиту rpmbuild .

Утилита rpmbuild поместит исходный код ядра Linux дистрибутива RHEL в директорию /usr/src/redhat/BUILD/kernel- / .

28.3. Файлы, используемые в процессе загрузки ядра ОС

28.3.1. Файл vmlinuz

Файл vmlinuz из директории /boot является сжатым исполняемым файлом ядра ОС.

28.3.2. Файл initrd

Ядро ОС использует файл initrd (Initial RAM disk — диск в оперативной памяти для начальной инициализации) в процессе загрузки системы. Данный диск монтируется до момента окончания загрузки ядра ОС и может содержать дополнительные драйверы и модули ядра ОС. На самом деле, данный файл является сжатым архивом формата CPIO , поэтому вы можете просмотреть его содержимое следующим образом.

28.3.3. Файл System.map

Файл System.map содержит таблицу символов и изменяется при каждой компиляции ядра ОС. Таблица символов также присутствует в файле /proc/kallsyms (до выпуска ядра Linux версии 2.6 данный файл носил имя /proc/ksyms).

28.3.4. Файл .config

Последним файлом, копируемым в директорию /boot, является файл со значениями параметров конфигурации ядра ОС, используемый в процессе его компиляции. Данный файл не должен находиться директории /boot для корректного функционирования ядра ОС, но размещение его копии в данной директории является обычной практикой. Благодаря его наличию появляется возможность осуществления повторной компиляции ядра ОС с использованием тех же значений параметров конфигурации, которые были использованы для компиляции существующего работоспособного ядра ОС.

28.4. Модули ядра Linux

28.4.1. Информация о модулях ядра Linux

Ядро Linux является монолитным ядром с поддержкой загружаемых модулей. Данные модули содержат части ядра ОС, обычно используемые в качестве драйверов устройств, реализаций файловых систем и сетевых протоколов. В большинстве случаев необходимые модули ядра ОС загружаются автоматически и динамически без вмешательства системного администратора.

28.4.2. Директория /lib/modules

Модули ядра ОС хранятся в директории /lib/modules/ . Для хранения модулей каждой версии ядра Linux, которая была скомпилирована для вашей системы, создается отдельная директория.

Имя файла, содержащего код модуля ядра ОС, обычно оканчивается на .ko . В данном примере показано расположение файлов модулей ядра ОС, предназначенных для поддержки протокола isdn.

28.4.4. Утилита lsmod

Для ознакомления со списком загруженных в текущий момент модулей ядра ОС, следует использовать утилиту lsmod . В выводе утилиты вы можете обнаружить информацию об имени каждого из загруженных модулей, его размере, значении счетчика использования модуля, а также именах других модулей, использующих данный модуль.

28.4.5. Файл /proc/modules

Файл /proc/modules содержит список всех модулей, загруженных ядром ОС. Список модулей ядра ОС из данного файла является слишком длинным для того, чтобы приводить его в данной книге, поэтому давайте используем утилиту grep для поиска модуля с именем vm .

Мы видим, что одновременно загружены модуля ядра ОС vmmon и vmnet. Вы можете получить ту же самую информацию и с помощью утилиты lsmod . На самом деле, утилита lsmod всего лишь читает содержимое файла /proc/modules и выводит его с соответствующим форматированием.

28.4.6. Зависимости модулей ядра ОС

Некоторые модули ядра ОС зависят от других модулей ядра ОС. В следующем примере вы можете увидеть, что модуль ядра ОС с именем nfsd зависит от модулей с именами exportfs, lockd и sunrpc.

28.4.7. Утилита insmod

Модули ядра ОС могут быть загружены в ручном режиме с помощью утилиты insmod . Это очень простой (и устаревший) способ загрузки модулей ядра ОС. В примере ниже показан процесс загрузки модуля ядра ОС с именем fat (реализующего поддержку файловой системы fat).

Утилита insmod не определяет зависимости между модулями ядра ОС, поэтому в следующем примере нам не удалось загрузить с помощью данной утилиты модуль с именем isdn (так как модуль с именем isdn зависит от модуля с именем slhc).

Читайте также:  Телевизор самсунг перестал подключаться к wifi

28.4.8. Утилита modinfo

Как вы можете увидеть в представленном ниже выводе утилиты modinfo , модуль ядра ОС с именем isdn зависит от модуля ядра ОС с именем slhc.

28.4.9. Утилита modprobe

Большим преимуществом утилиты modprobe перед утилитой insmod является возможность первой утилиты загружать все необходимые модули ядра ОС, в то время, как вторая утилита требует загрузки всех необходимых модулей ядра ОС в ручном режиме. Другое преимущество данной утилиты заключается в отсутствии необходимости указания полного пути к файлу загружаемого модуля ядра ОС.

В данном примере показан способ загрузки модуля с именем isdn с помощью утилиты modprobe с автоматической загрузкой модуля с именем shlc в фоновом режиме.

28.4.10. Файл /lib/modules/ /modules.dep

Зависимости модулей ядра ОС описаны в рамках файла с именем modules.dep .

28.4.11. Утилита depmod

Файл modules.dep может быть обновлен (повторно создан) с помощью утилиты depmod . В следующем примере не было добавлено никаких новых модулей ядра ОС, поэтому утилита depmod сгенерировала идентичный файл.

28.4.12. Утилита rmmod

По аналогии с утилитой insmod , утилита rmmod на сегодняшний день практически не используется.

28.4.13. Команда modprobe -r

В отличие от утилиты rmmod , утилита modprobe будет автоматически удалять неиспользуемые модуля ядра ОС.

28.4.14. Файл конфигурации /etc/modprobe.conf

Файл конфигурации /etc/modprobe.conf и специальные файлы конфигурации из директории /etc/modprobe.d могут содержать псевдонимы (для использования людьми), а также параметры (для зависимых модулей ядра ОС), используемые утилитой modprobe .

28.5. Компиляция ядра ОС

28.5.1. Дополнительная версия

Перейдите в директорию /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/ и измените дополнительную версию ядра ОС, заменив значение параметра extraversion в файле с именем Makefile.

28.5.2. Команда make mrproper

Теперь необходимо удалить результаты предыдущих сборок ядра ОС с помощью команды make mrproper . В том случае, если это ваша первая сборка после загрузки исходного кода, вы не должны выполнять это действие.

28.5.3. Файл .config

Теперь скопируйте работоспособный файл с именем .config из директории /boot в директорию с исходным кодом вашего ядра ОС. Этот файл содержит значения параметров конфигурации, которые использовались при компиляции вашего текущего ядра ОС. Грубо говоря, данный файл содержит информацию о том, должны ли компилироваться определенные модули ядра ОС.

28.5.4. Команда make menuconfig

Теперь следует выполнить команду make menuconfig (или команду make xconfig в случае использования графического интерфейса). Запущенная утилита позволит вам установить, необходимо ли компилировать определенный модуль (m), включить код модуля в состав ядра ОС (*) или вообще не компилировать его (что позволит сократить размер ядра ОС). Если вы откажитесь от компиляции слишком большого количества модулей, ваше ядро ОС не будет работать корректно. Данные конфигурации будут сохранены в скрытом файле с именем .config.

28.5.5. Команда make clean

Выполните команду make clean для подготовки исходного кода ядра ОС к компиляции. Команда make clean позволяет удалить большую часть сгенерированных файлов, но сохраняет ваши файлы конфигурации ядра ОС. Исполнение команды make mrproper на данном этапе приведет к уничтожению файла .config, который был создан в результате исполнения команды make menuconfig .

28.5.6. Команда make bzImage

А теперь следует выполнить команду make bzImage , присесть и расслабиться, ожидая окончания процесса компиляции ядра ОС. Вы также можете использовать команду time make bzImage , чтобы получить информацию о времени, необходимым для компиляции ядра ОС, которая может понадобиться для планирования непродолжительной прогулки во время следующей компиляции.

Исполнение данной команды завершится выводом информации о пути к результирующему файлу bzImage (а также времени компиляции, если вы также использовали команду time ).

На данном этапе вы можете вручную скопировать результирующий файл в директорию /boot с помощью команды cp arch/i386/boot/bzImage /boot/vmlinuz- .

28.5.7. Команда make modules

Теперь следует выполнить команду make modules . На компиляцию всех модулей ядра ОС уйдет от 20 до 50 минут.

28.5.8. Команда make modules_install

Для копирования всех скомпилированных модулей ядра ОС в директорию /lib/modules следует всего лишь выполнить команду make modules_install (на установку модулей уйдет примерно 20 секунд). В примере ниже приведен список содержимого директории модулей перед исполнением упомянутой команды.

А это список содержимого этой же директории после исполнения этой команды. Обратите внимание на то, что в процессе исполнения команды make modules_install была создана новая директория для модулей нового ядра ОС.

28.5.9. Директория /boot

Нам все также необходимо скопировать исполняемый файл ядра ОС, файл System.map и наш файл со значениями параметров конфигурации ядра ОС в директорию /boot. Строго говоря, копировать файл со значениями параметров конфигурации ядра ОС с именем .config совсем не обязательно, но он может пригодиться в будущем при компиляции ядра ОС.

28.5.10. Утилита mkinitrd

Ядро ОС обычно использует файл initrd в процессе загрузки. Мы можем использовать утилиту mkinitrd для генерации этого файла. Убедитесь в том, что вы используете корректное имя ядра ОС!

28.5.11. Системный загрузчик

На этом компиляция ядра ОС закончена, но не следует забывать о необходимости создания дополнительного станса для отображения пункта в меню системного загрузчика grub или lilo.

28.6. Компиляция отдельного модуля ядра ОС

28.6.1. Файл исходного кода hello.c

Небольшая программа на языке C послужит основой для нашего модуля ядра ОС.

28.6.2. Файл Makefile

Файл для сборки модуля ядра ОС будет содержать следующие строки.

Для компиляции модуля необходимы только два описанных файла.

28.6.3. Команда make

В примере ниже представлен результат исполнения команды make .

Теперь у нас больше файлов.

28.6.4. Файл hello.ko

Следует использовать утилиту modinfo для проверки того, действительно ли файл с расширением .ko является модулем ядра ОС.

Отлично, значит мы можем загрузить наш модуль ядра ОС с именем "hello".

Наконец мы можем обнаружить небольшой сюрприз в файле журнала /var/log/messages .

Ядро Linux
Тип свободное и открытое программное обеспечение и ядро операционной системы
Автор Линус Торвальдс[1]
Разработчик Линус Торвальдс , Кокс, Алан , Грег Кроа-Хартман , Ingo Molnár[d] и Andrew Morton[d]
Написана на Си[3] , ассемблер и C++
Первый выпуск 25 августа1991
Аппаратная платформа ARM , AVR , Blackfin[d] , DEC Alpha , ETRAX CRIS[d] , Itanium , MIPS , PA-RISC , PowerPC , SPARC , SuperH , TILE64[d] , Unicore[d] , Xtensa[d] , Motorola 680×0 , IBM System/390 , x86 , x86-64 и z/Architecture [d]
Последняя версия
  • 5.6.3 ( 8 апреля2020 ) [2]
Лицензия GNU GPL 2[4][5][6]
Сайт kernel.org​ (англ.)
Медиафайлы на Викискладе

Ядро Linux ( /ˈlɪnʊks/ [7] ) — ядро операционной системы, соответствующее стандартам POSIX, составляющее основу операционных систем семейства Linux. Разработка кода ядра была начата финским студентом Линусом Торвальдсом в 1991 году, на его имя зарегистрирована торговая марка «Linux».

Код написан в основном на Си с некоторыми расширениями gcc и на ассемблере (с использованием AT&T-синтаксиса GNU Assembler).

Распространяется как свободное программное обеспечение на условиях GNU General Public License, кроме несвободных элементов, особенно драйверов, которые используют прошивки, распространяемые под различными лицензиями [8] .

Операционные системы на базе ядра Linux являются лидерами на рынках суперкомпьютеров, микрокомпьютеров, серверов и смартфонов.

Содержание

История [ править | править код ]

Начало проекту было положено в 1991 году с публикации сообщения в новостной группе Usenet [9] .

Читайте также:  Плавный пуск на кр1182пм1 схема

К тому времени GNU уже создал множество составляющих для свободной операционной системы, но её ядро GNU Hurd ещё не было готово. Поэтому пустующее место ядра для свободной операционной системы занял Linux и, несмотря на ограниченную функциональность ранних версий, привлёк к себе множество разработчиков и пользователей.

«Linux» как ядро операционной системы, разработка которого была начата Торвальдсом — лишь небольшая часть многих из использующих его систем, которые обычно тоже называют «Linux». Это иногда приводит к путанице, и те из них, которые используют системные библиотеки (например, GNU C Library) и другие программы проекта GNU, формально называют также «GNU/Linux» [10] .

По состоянию на сентябрь 2016 года семейство операционных систем на базе ядра Linux — третье по популярности в мире на рынке настольных компьютеров — 5,8 % [11] . На рынке веб-серверов доля Linux порядка 32 %, остальное — Unix-системы (FreeBSD и др.) [12] . По данным Top500 (июнь 2016 года), Linux используется в качестве операционной системы на 99,4 % самых мощных суперкомпьютеров планеты [13] .

Большинство мобильных устройств, таких, как смартфоны и планшетные компьютеры на базе операционных систем Android, MeeGo, Tizen, а также телевизоры и многие служебные устройства, такие, как внешние сетевые жёсткие диски, маршрутизаторы и модемы, также использует операционные системы на базе ядра Linux.

Хронология [ править | править код ]

  • Апрель 1991: 21-летний Линус Торвальдс начал работу над некоторыми механизмами операционной системы. Он начал с эмулятора терминала и планировщика задач.
  • 25 августа 1991: Торвальдс поместил сообщение в новостную группу по Minix[9][14] .
  • 17 сентября 1991: Linux версии 0.01 (10 239 строк кода).
  • 5 октября 1991: Linux версии 0.02 [1] (англ.) .
  • Декабрь 1991: Linux версии 0.11. Это была первая версия Linux, на которой можно было собрать Linux из исходных кодов.
  • 19 января 1992: Первое сообщение в группе новостей alt.os.linux (англ.) .
  • 31 марта 1992: Создана группа новостей comp.os.linux (англ.) .
  • Апрель 1992: Linux версии 0.96, на котором стало возможно запустить графический сервер X Window System.
  • Весь 1993 и начало 1994: 15 тестовых выпусков версии 0.99.* (в июле 1993 введено понятие BogoMips).
  • 14 марта 1994: Linux версии 1.0.0 (176 250 строк кода).
  • Март 1995: Linux версии 1.2.0 (310 950 строк кода).
  • 9 мая 1996: Выбран символ Linux — пингвин Tux.
  • 9 июня 1996: Linux версии 2.0.0 (777 956 строк кода).
  • 25 января 1999: Linux версии 2.2.0, изначально довольно недоработанный (1 800 847 строк кода).
  • 4 января 2001: Linux версии 2.4.0 (3 377 902 строки кода).
  • 18 декабря 2003: Linux версии 2.6.0 (5 929 913 строк кода).
  • 23 марта 2009: Linux версии 2.6.29, временный символ Linux — тасманский дьявол Tuz (11 010 647 строк кода).
  • 22 июля 2011: релиз Linux 3.0 (14,6 млн строк кода).
  • 24 октября 2011: релиз Linux 3.1.
  • 15 января 2012: релиз Linux 3.3 преодолел отметку в 15 млн строк кода.
  • 23 февраля 2015: первый релиз-кандидат Linux 4.0 (более 19 млн строк кода).
  • 7 января 2019: первый релиз-кандидат Linux 5.0 (более 26 млн строк кода).

Версии [ править | править код ]

Торвальдс продолжает выпускать новые версии ядра, объединяя изменения, вносимые другими программистами, и внося свои. Оно обычно называется «ванильным» (vanilla), то есть официальное ядро без каких-либо сторонних изменений. В дополнение к официальным версиям ядра существуют альтернативные ветки, которые могут быть взяты из различных источников. Как правило, разработчики дистрибутивов Linux поддерживают свои собственные версии ядра, например, включая в них драйверы устройств, которые ещё не включены в официальную версию. С 30 мая 2011 изменена политика нумерации версий ядра [15] .

Нумерация версий до 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) и 21 апреля 2015 (4.0.0).
  • Число B обозначает старшую версию ревизии ядра. В ядрах до версии 3.0 Чётные числа обозначали стабильные ревизии, то есть те, которые предназначены для продуктивного использования, такие, как 1.2, 2.4 или 2.6, а нечётные — ревизии для разработчиков, предназначенные для того, чтобы тестировать новые улучшения и драйвера до тех пор, пока они не станут достаточно стабильными для того, чтобы включить их в стабильный выпуск.
  • Число 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.

Поддержка [ править | править код ]

В то время как Торвальдс продолжает выпускать новые экспериментальные версии, руководство LTS-версиями передаётся другим лицам:

Серия Версии Руководители Окончание поддержки
3.2 3.2.101 Бэн Хатчингс Май 2018
3.4 3.4.113 Ли Зифан Октябрь 2016
3.10 3.10.108 Уилли Тароу Ноябрь 2017
3.12 3.12.74 Иржи Слаби Май 2017
3.14 3.14.79 Грег Кроа-Хартман Сентябрь 2016
3.16 3.16.82 Бэн Хатчингс Апрель 2020
3.18 3.18.136 Саша Левин Январь 2017
4.1 4.1.51 Саша Левин Май 2018
4.4 4.4.214 Грег Кроа-Хартман & Саша Левин Февраль 2022
4.9 4.9.214 Грег Кроа-Хартман & Саша Левин Январь 2023
4.14 4.14.171 Грег Кроа-Хартман & Саша Левин Январь 2024
4.19 4.19.104 Грег Кроа-Хартман & Саша Левин Декабрь 2020
5.4 5.4.20 Грег Кроа-Хартман & Саша Левин Декабрь 2021

Другими программистами ядра Linux являются Роберт Лав [en] и Инго Молнар [en] [16] .

Ссылка на основную публикацию
Интернет банк приват 24 вход в систему
Приватбанк — самый крупный банк на Украине по величине активов и популярности среди населения. Все операции в данной организации можно...
Игра angry birds pigs
Скачать Angry Birds AR: Isle of Pigs на андроид, вас снова предстоит объединиться с нашими главными героями Редом, Чаком, Бомбом,...
Игра в стиме dead by daylight
Patch notes 3.7.0Release time: April 7th 2020 at 11AM EDT When all remaining Survivors in a trial hit the Struggle...
Интернет для вай фай роутера билайн
Приобретение маршрутизатора — непростая задача, так как на устройство возлагается задача обеспечения бесперебойного доступа в Интернет. Технические особенности позволяют его...
Adblock detector