Что такое ядро ос типа unix

Упрощенный процесс загрузки ОС Linux

Загрузка ОС на устройстве с UEFI обычно проходит по следующему сценарию:

  1. Инициализация оборудования;

  2. Размещение в оперативной памяти EFI загрузчика (например, grub) и передача управления ему;

  3. EFI загрузчик записывает образ ядра в оперативную память и вызывает функцию start_kernel;

  4. Ядро инициализирует себя, монтирует корень файловой системы и запускает процесс init, лежащий на корне (/init, /sbin/init или другой). Этим процессом может быть systemd, System V и другие;

  5. Процесс init запускает сервисы и уже подготавливает систему для работы с пользователем.

Такая схема является вполне работоспособной. Но что, если мы хотим усложнить сценарий загрузки? Например, загрузиться с зашифрованного раздела или сетевого диска или, элементарно, проверить файловую систему перед загрузкой. На помощь приходит initramfs!

Версии ядра дистрибутивов Linux

Stable

Stable — это последняя доступная стабильная версия ядра Linux, предназначенная для широкого круга использования. По умолчанию, в большинстве дистрибутивов Linux применяется именно stable-версия ядра. Она регулярно обновляется, и к ней довольно часто выпускаются новые патчи.

LTS

LTS (сокр. от «Long-Term Support») — это версия ядра с длительным сроком поддержки, которая считается более стабильной в сравнении с обычной версией ядра, т.к. при её разработке программисты стараются не экспериментировать с различными нововведениями. Однако из-за этого, LTS-версии ядра могут не иметь некоторых функций ядер более свежих релизов, а также содержать старые версии драйверов, несовместимых с более новым оборудованием. Жизненный цикл LTS-ядра, обычно, составляет 5 лет для настольных компьютеров и серверов (раньше для настольных компьютеров поддержка осуществлялась на протяжении 3 лет). Для сравнения, обычные релизы ядра имеют поддержку всего 9 месяцев с момента выпуска.

Несмотря на то, что исправления безопасности внедряются в LTS-версию так же часто, как и в обычную, она, тем не менее, не дает 100% гарантии отсутствия каких-либо ошибок. Правда, шанс того, что с LTS-версией ядра Linux возникнут какие-то проблемы, немного меньше по сравнению с обычной версией ядра Linux, и поэтому многие предприятия отдают предпочтение именно LTS-релизам.

Примечание: По данным компании Canonical, примерно 95% всех установок Ubuntu являются LTS-релизами.

Hardened

Hardened — это усиленная различными обновлениями безопасности stable-версия ядра Linux. Она умеет блокировать потенциально опасные операции, обеспечивая тем самым эффективную защиту от эксплойтов, нацеленных на использование уязвимостей ядра. Данная версия ядра не так популярна, как другие, из-за того, что несколько медленнее их. Hardened-ядро убивает любой процесс, который покажется ему потенциально опасным. Кроме этого, он не отображает , и, следовательно, вы не сможете напрямую обратиться к запущенному исполняемому файлу. Также некоторые программы и функции могут не работать с hardened-ядром.

Zen

Zen — версия ядра Linux, ориентированная на повышение производительности и отзывчивости системы. Также говорят, что это лучшее ядро Linux для игр. Zen имеет низкую задержку и высокочастотный планировщик.

Patches

Вот теперь мы действительно подготовили код для отправки. Лучше всего, чтобы это был единственный коммит. Так проще делать ревью и так быстрее вам ответят. Всё проверив, наконец-то делаем коммит.

Ещё можно комментарии к коммиту дополнить в человеческом текстовом редакторе.

И теперь его можно оформить в виде того самого письма. Правила хорошего тона, или best practice, если угодно — это 75 символов на строку.

В результате получите два файла. В первом нужно указать заголовок письма «Subject» и основное описание патча. В описании патча пишем, для чего он создавался, кому он сделает жизнь на нашей планете лучше и каким образом. Только не словоблудим про космические корабли в Большом театре, а пишем лаконично и по делу. И не в коем случае не пишите корпоративную лабуду а-ля «Без этого патча мой бизнес встанет, меня уволят, а дети мои умрут от голода». Нет, строго по существу: «Увидел вот такую проблему вот тут, починить решил вот таким образом, исходники патча прилагаю». Всё, вы восхитительны! А если не превысили 75 символов на строку, то восхитительны в квадрате.

А ещё один волшебный скриптик позволит узнать, кому письмо отправлять.

И вот он, момент отправления письма, ради которого всё и затевалось:

Дальше остаётся только сидеть и ждать ответного письма, где вам скорее всего скажут, что всё здорово, но надо ещё сделать вот это и поправить вот здесь. Возможно, придётся доказывать, что ваш функционал действительно новый и не создаёт дублирования. Хотя могут и сразу всё принять, сказав большое спасибо (шутка :-).

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

Модули ядра[править]

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

Модули могут подключаться к ядру по команде пользователя (modprobe,
insmod) или автоматически при помощи udev, и быть выгружены либо самим
ядром, либо командой rmmod.

Большинство модулей находится в пакете ядра, однако иногда по техническим,
административным или юридическим причинам некоторые модули собираются отдельно.

Все модули

Такая задача возникает нечасто, но если вы хотите посмотреть все установленные модули ядра Linux в системе, делается очень просто. Все модули расположены в папке /lib/modules, а поэтому очень просто вычислить их все одной командой, или даже просто зайти в папку файловым менеджером и посмотреть.

В Ubuntu команда будет выглядеть вот так:

Можно смастерить такую конструкцию с помощью find:

Можем искать только для текущего ядра:

Также, все модули записаны в конфигурационном файле /lib/modules/modules.aliases, поэтому мы можем просто посмотреть его содержимое:

Если хотим проверить установлен ли определенный модуль ядра Linux, отфильтруем вывод любой из команд с помощью grep:

Необходимо сменить язык программирования

Проблему с бесчисленным количеством уязвимостей в Linux Кис Кук частично связывает и с языком программирования С, самым популярным в мире (статистика Tiobe на июль 2021 г.). «Linux, написанный на C, по-прежнему будет иметь длинный хвост проблем», – подчеркнул Кук, добавив, что Linux следовало бы писать на «более безопасных» языках.

«ВТБ Лизинг» внедряет управление данными как ценным бизнес-активом
ИТ в банках

В качестве примера Кук привел язык Rust. Как сообщал CNews, согласно опросу Stack Overflow, большинство программистов называют его своим самым любимым языком. К тому же, он очень нравится и киберпреступникам.

Также Кук считает неправильным нынешний алгоритм поиска уязвимостей в коде ядра. Программисты задействуют базу данных Mitre CVE (Common Vulnerabilities and Exposures), используя ее для оценки опасности существующих уязвимостей. Кук уверен, что она совершенно не годится для решения этой задачи, поскольку, с его слов, «не всем уязвимостям присваиваются CVE-метки, и к тому же они назначаются несвоевременно».

Как проверить версию ядра Linux

Ядро находится в активной разработке, поэтому постоянно появляются новые версии Linux.

Самый простой способ узнать, какая версия находится на вашем компьютере и будет работать в любой версии Linux, – это использовать  команду. Это инструмент командной строки, который предоставляет системную информацию. Вы можете найти используемую версию ядра Linux, открыв окно терминала и напечатав следующее:

В настоящее время я использую ядро ​​Linux версии 4.15.0-29deepin-generic. Давайте разберемся, что это значит.

  • 4 – версии ядра.
  • 15 – текущий крупный пересмотр.
  •  – текущие мелкие доработки.
  • 29 – относится к устранение ошибок и исправлений, применяемых к этой версии.

Информация отображаемая после данных значений будет зависеть от дистрибутива который вы используете. В моём случае, это Deepin 15.9.3.

Что такое ядро?

Каждая операционная система использует ядро. Без ядра у вас не может быть компьютера, который действительно работает. Вы можете видеть и взаимодействовать со многими различными программами, но основную работу ​​выполняет ядро.

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

Таким образом, когда приложение хочет что-то сделать (например, изменить настройку громкости динамиков), оно может отправить этот запрос ядру, и ядро ​​может использовать доступные драйверы динамиков для фактического изменения громкости.

Ядро также активно участвует в управлении ресурсами. Оно должно убедиться, что для запуска приложения достаточно памяти и поместить приложение в нужное место в памяти. Ядро пытается оптимизировать использование процессора, чтоб он мог выполнять задачи как можно быстрее.

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

Стоит ли обновлять ядро ​​Linux?

По большей части, ядро ​​Linux работает в фоновом режиме. Ты не знаешь, что он там, и у тебя нет причин думать об этом. Лучший способ обновить версию ядра Linux – это обновить ее до последней версии предпочитаемой операционной системой которую ты используешь. Как вы могли видеть, с дистрибутивом Deepin 15.9.3, который использую я, поставляется довольно таки старое ядро 4.15, когда многие дистрибутивы уже перешли к доступному на данный момент Linux 5.0.

Хотя ядро ​​в основном невидимо, есть несколько причин перейти на более новое ядро ​​Linux. В отличие от Windows, драйверы оборудования для Linux поставляются в комплекте с ядром Linux. Поэтому, если у вас относительно новый ноутбук с динамиками, Wi-Fi или тачпадом, который ваша версия Linux еще не обнаруживает, вам, возможно, придется подождать более новую версию. Релизы также поставляются с улучшениями стабильности и скорости, поэтому ваш компьютер может работать более плавно в одной версии по сравнению с другой.

Добавление патчей

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

/var/calculate/templates/file_patch

# Calculate format=diff env=install ac_install_patch==on&&merge(sys-kernel/calculate-sources)>=4.19
...

В заголовке указан формат , условие выполнения патча и проверка на версию устанавливаемого пакета.

Пример добавления патча

Пример добавления патча kernel_gcc_patch, расширяющего список процессоров для оптимизации ядра компилятором. Скачайте репозиторий, выполнив:

git clone https://github.com/graysky2/kernel_gcc_patch.git

Скопируйте файл с патчем в директорию шаблонов ядра:

cp kernel_gcc_patch/enable_additional_cpu_optimizations_for_gcc_v9.1+_kernel_v4.13+.patch /var/calculate/templates/kernel_gcc_patch

Добавьте заголовок шаблона к патчу:

/var/calculate/templates/kernel_gcc_patch

# Calculate format=diff env=install ac_install_patch==on&&merge(sys-kernel/calculate-sources)>=4.19
...

Установите исходный код ядра. Параметр запустит процесс установки в один поток, в логе которого можно увидеть вывод сообщения об успешном применении патча:

USE=»-vmlinuz -minimal» emerge -a —jobs=1 sys-kernel/calculate-sources

...
>>> Source configured.
 * Применение патчей Calculate утилитами для calculate-sources ...
 * Применение патча enable_additional_cpu_optimizations_for_gcc_v9.1+_kernel_v4.13+.patch
 * Утилиты Calculate изменили файлы:
 *      .config
 *      arch/x86/Kconfig.cpu
 *      arch/x86/Makefile
 *      arch/x86/Makefile_32.cpu
 *      arch/x86/include/asm/module.h
>>> Compiling source in /var/calculate/tmp/portage/sys-kernel/calculate-sources-5.4.12/work/linux-5.4.12-calculate ...
...

Выполните настройку ядра, выбрав ваш процессор из нового списка:

cl-kernel

Перейдите в раздел . Вы увидите, что список доступных CPU существенно расширился.

Скриншот

После сохранения настроек ядро будет собрано. Патч и обновлённые настройки ядра будут использованы и во время сборки пакета из исходного кода.

Модули ядра

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

/etc/modprobe.d/custom.conf

options <имя модуля> <параметр>=<значение>

Посмотреть список доступных опций модуля можно, используя утилиту . Пример определения доступных параметров модуля snd-intel8x0:

modinfo -p snd-intel8x0

index:Index value for Intel i8x0 soundcard. (int)
id:ID string for Intel i8x0 soundcard. (charp)
ac97_clock:AC’97 codec clock (0 = whitelist + auto-detect, 1 = force autodetect). (int)
ac97_quirk:AC’97 workaround for strange hardware. (charp)
buggy_semaphore:Enable workaround for hardwares with problematic codec semaphores. (bool)
buggy_irq:Enable workaround for buggy interrupts on some motherboards. (bint)
xbox:Set to 1 for Xbox, if you have problems with the AC’97 codec detection. (bool)
spdif_aclink:S/PDIF over AC-link. (int)
inside_vm:KVM/Parallels optimization. (bint)
enable: (bool)
joystick: (int)

Пример настройки загрузки модуля snd-intel8x0 с установленным значением параметра ac97_clock:

/etc/modprobe.d/snd-intel8x0.conf

options snd-intel8x0 ac97_clock=48000

Для того, чтобы отключить загрузку модулей, добавьте их в файл . Пример отключения загрузки модуля usblp:

/etc/modprobe.d/blacklist.conf

blacklist usblp

Настройка параметров модуля

Чтобы передать параметр модулю ядра, вы можете воспользоваться конфигурационным файлом в modprobe или использовать командную строку ядра.

С помощью файлов в /etc/modprobe.d/

Файлы в директории можно использовать для передачи настроек модуля в udev, который через управляет загрузкой модулей во время загрузки системы. Конфигурационные файлы в этой директории могут иметь любое имя, оканчивающееся расширением . Синтаксис следующий:

/etc/modprobe.d/myfilename.conf
options modname parametername=parametervalue

Например:

/etc/modprobe.d/thinkfan.conf
# On ThinkPads, this lets the 'thinkfan' daemon control fan speed
options thinkpad_acpi fan_control=1

Примечание: Если какой-либо из затрагиваемых модулей загружается из initramfs, тогда вам придётся добавить соответствующий файл в в файле или использовать , чтобы он был включен в initramfs.

С помощью командной строки ядра

Если модуль вкомпилирован в ядро, вы также можете передать параметры модулю с помощью командной строки ядра. Для всех стандартных загрузчиков, подойдёт следующий синтаксис:

modname.parametername=parametercontents

Например:

thinkpad_acpi.fan_control=1

Просто добавьте это в загрузчике в строку с ядром, как описано в параметрах ядра.

Как собрать модуль локально[править]

Данная фаза нужна в первую очередь для тестирования модуля, и, в общем-то, необязательна, но полезна для понимания процесса.

Что нам нужноправить

Кроме gcc, make и прочих стандартных сборочных вещей нам нужно kernel-headers-modules-<flavour> (и всё что от него зависит). Этот пакет содержит ту часть исходных кодов, заголовочных файлов, make-файлов и скриптов, которые необходимы для сборки модулей для данного ядра.

Сборкаправить

Для того, чтобы обойти эту проблему, нужно переопределить переменную (обычно KERNELSOURCE или KSRC) в Makefile. Далее запускаем сборку, например make KSRC=/usr/src/linux-2.6.25-std-def. Обычно модуль после этого собирается.

Собранный модуль можно попробовать загрузить с помощью insmod, или положить его к другим модулям ядра в /lib/modules/<kernelversion> и загрузить modprobe. Если модуль загрузился и работает, то можно переходить к следующей части.

Настройка и генерация initrd образа

Сконфигурировать make-initrd можно через файл . При генерации образа вы можете изменить путь до файла с конфигурацией, запустив make-initrd с опцией :

Обычно файл с конфигурацией выглядит следующим образом:

Здесь написано, что вся конфигурация будет определена автоматически. Увидеть «угаданную» конфигурацию можно с помощью команды:

Вы можете попросить make-initrd запускать только определенные guess модули. Например, можно попросить «угадывать» только модули ядра и фичи необходимые для монтирования корня и работы с клавиатурой:

Попробуем теперь собрать intird образ вместе с фичей hello-usb. Подправим конфигурацию

И запустим сборку образа:

Перейдем к проверке нашего образа на виртуальной машине.

Виды и версии ядра

Что такое ядро Linux вы уже знаете, но какие вообще бывают виды ядер? Есть различные способы и архитектурные соображения при создании ядер с нуля. Большинство ядер могут быть одного из трех типов: монолитное ядро, микроядро, и гибрид. Ядро Linux представляет собой монолитное ядро, в то время как ядра Windows и OS X гибридные. Давайте сделаем обзор этих трех видов ядер.

Микроядро

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

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

Плюсы

  • Портативность
  • Небольшой размер
  • Низкое потребление памяти
  • Безопасность

Минусы

  • Аппаратные средства доступны через драйверы
  • Аппаратные средства работают медленнее потому что драйверы работают в пользовательском режиме
  • Процессы должны ждать свою очередь чтобы получить информацию
  • Процессы не могут получить доступ к другим процессам не ожидая

Монолитное ядро

Монолитные ядра противоположны микроядрам, потому что они охватывают не только процессор, память и IPC, но и включают в себя такие вещи, как драйверы устройств, управление файловой системой, систему ввода-вывода. Монолитные ядра дают лучший доступ к оборудованию и реализуют лучшую многозадачность, потому что если программе нужно получить информацию из памяти или другого процесса, ей не придется ждать в очереди. Но это и может вызвать некоторые проблемы, потому что много вещей выполняются в режиме суперпользователя. И это может принести вред системе при неправильном поведении.

Плюсы:

  • Более прямой доступ к аппаратным средствам
  • Проще обмен данными между процессами
  • Процессы реагируют быстрее

Минусы:

  • Большой размер
  • Занимает много оперативной памяти
  • Менее безопасно

Гибридное ядро

Гибридные ядра могут выбирать с чем нужно работать в пользовательском режиме, а что в пространстве ядра. Часто драйвера устройств и файловых систем находятся в пользовательском пространстве, а IPC и системные вызовы в пространстве ядра. Это решение берет все лучшее из обоих предыдущих, но требует больше работы от производителей оборудования. Поскольку вся ответственность за драйвера теперь лежит на них.

Плюсы

  • Возможность выбора того что будет работать в пространстве ядра и пользователя
  • Меньше по размеру чем монолитное ядро
  • Более гибкое

Минусы

  • Может работать медленнее
  • Драйверы устройств выпускаются производителями

Coding

Итак, мы готовы сделать первый шаг непосредственно в разработке — склонировать к себе репозиторий. Советую делать это сразу с указанием ветки, которая будет создана. Также отмечу, что работать лучше не над текущим состоянием в master, а над стабильной версией или кандидатом на релиз. Так вы будете более уверены, что ядро соберётся и будет как-то работать, не вызовет неожиданных конфликтов из-за изменений в других подсистемах. Поэтому всегда внимательно смотрите тэги.

И — опять же — имя своей ветке постарайтесь дать чёткое и лаконичное. В идеальном мире оно даже может отображать суть вносимых изменений. Если вы исправляете известный баг, то хорошим тоном считается включить в название ветки номер issue.

Операция довольно долгая, так что смело можно идти за кофе или на обед. А если попробовать ускорить процесс, отказавшись от истории, то работать с «этим» будет невозможно.

Итак, мы получили ветку, в которой можно начинать свою разработку. Здесь всё очевидно: пишем код, собираем, тестируем, исправляем баги — и так до получения нужного результата. О том, как собирать ядро и проводить отладку, информации в сети море, так что подробно описывать весь процесс я не буду. Лишь вкратце пробежимся по нему чуть позже. Единственный нюанс, который добавлю от себя прямо сейчас: перед сборкой проверьте наличие всех необходимых программ из и их минимальные версии.

Если бродить вслепую по гуглу не хочется, то вся максимально полезная информация по ядру сконцентрирована тут. Прочитать стоит действительно всё. Особенно правильно будет начать с о том, как правильно коммуницировать. Потому что мейнтейнеры, как правило, люди весьма занятые, и вникать в невнятно составленные письма им никакого интереса. Да и вам будет обидно, если из-за плохого описание ваше детище не примут в апстрим.

И вот свой небольшой и эффективный код вы написали, отладили, всё протестировали и готовы отправлять на рассмотрение. Но не спешите этого делать. Для начала обязательно проверьтесь на code style. В этом вам поможет . Для этого сделаем патч и отправим его на проверку.

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

Для .h файлов строка с информацией о лицензии должна быть в ремарках / * *, а для *.c файлов должна быть в ремарках //. Такое запросто выбьет кого угодно из душевного равновесия. Вопрос: «Зачем?!» до сих пор болтается в моей голове, хотя есть вера в то, что это не просто ошибка в скриптах.

Кстати, чтобы просто проверить один файл достаточно вызвать

Можно прикрутить этот вызов к git, чтобы автоматически запускался этот скрипт при попытке что-то зачекинить.

Kernel build

Несмотря на то, что процесс описан в других статьях тут и тут, я все же повторюсь.

По шагам процесс сборки ядра довольно прост, если не вдаваться в детали. Для начала ставим необходимые пакеты (использовался Debian 10):

Это без компилятора и обычного для С/С++ разработчика набора программ.
Запускаем конфигурацию:

Тут есть интересный аспект: в качестве шаблона будет браться config ядра от вашего боевого ядра, которое, скорее всего, подготовлено дистрибьютером. Для Debian 10 сборка проходит успешно, если в конфиге потереть информацию о встраиваемых в ядро сертификатах.

Перед попыткой собрать проверьте, что нужные программы уже установлены. . Чтобы собрать само ядро:

Этого достаточно для проверки собираемости, но недостаточно для запуска ядра в системе, так как без модулей ядро на реальной системе практически беспомощно.

Если какой-то модуль не собирается, просто вырубите его в ближайшем Makefile-е (если 100% уверены, что не пытались в нём что-то улучшить). Наверняка он вам не пригодится, и тратить время на исправления смысла нет.

Теперь можно деплоить то, что получилось, на эту же систему.

Хотя, конечно, экспериментировать с ядром на той же машине, где ведётся разработка — дело рискованное.

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

На моей системе загрузчик после установки ядра автоматически обновился. Если у вас этого не произошло, то это делается это на Debian-подобных системах командой:

Update: Как верно заметил gavk, ядро давно уже умеет собирать пакеты, причём как для deb, так и для rpm.
Команда

выводит весь ассортимент. Так что команда

должна собрать пакет с ядром.

Управление модулями вручную

Управление модулями ядра производится с помощью утилит, предоставляемых пакетом . Вы можете использовать эти утилиты вручную.

Примечание: Если вы обновили ваше ядро, но ещё не перезагрузились, modprobe не сработает без каких либо уведомлений об ошибках и завершится с ошибкой 1, потому что путь больше не существует. Проверьте вручную существование этого пути, если modprobe не работает, чтобы убедиться, что это ваш случай.

Загрузка модуля:

# modprobe module_name

Загрузка модуля из другого места (для тех модулей, которых нет в ):

# insmod filename 

Выгрузка модуля:

# modprobe -r module_name

Альтернативный вариант выгрузки модуля:

# rmmod module_name

Что загружено?

Все информация о загруженных модулях хранится в файле /proc/modules, мы можем ее вывести командой:

Но для этого дела есть более цивилизованные методы. Это утилита lsmod и modinfo. Чтобы посмотреть загруженные модули ядра linux выполните:

Удобно проверять загружен ли модуль с помощью grep:

А более подробную информацию о каждом модуле можно получить с помощью утилиты modinfo:

Здесь вы можете увидеть файл модуля, его лицензию, автора и зависимости. Зависимости — это те модули, которые должны быть загружены для его нормальной работы. К сожалению, не для всех модулей доступно нормальное описание, но вы можете попробовать посмотреть описание зависимостей модуля.

Почему в Linux так много «дыр»

Сообществу разработчиков ядра Linux не хватает специалистов, чтобы вовремя устранять найденные в нем уязвимости

Как сообщил The Register, на эту проблему обратил внимание программист Кис Кук (Kees Cook) из Google Security Team, принимающий непосредственное участие в развитии Linux

По словам Кука, каждую неделю программисты готовят приблизительно по 100 новых исправлений для ядра, но сил тех, кто их проверяет, попросту не хватает, чтобы протестировать каждое из них

Кук утверждает, что из-за этого разработчики отбирают только самые важные из них, притом руководствуются они исключительно собственными критериями «важности» таких патчей

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

Ядру Linux просто не хватает разработчиков, которые бы «заботились» о нем

Кис Кук заявил, что большая часть инженеров, в настоящее время занятых развитием ядра Linux, работают в различных компаниях. Он призвал руководителей этих компаний нанимать больше инженеров, чтобы у разработчиков появилось больше времени на Linux.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: