Как установить модули для линукса

Команда Modprobe в Linux

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

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

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

Вы можете вручную загрузить модуль в ядро с помощью команды modprobe или автоматически во время загрузки с помощью файлов /etc/modules или /etc/modules-load.d/*.conf .

В этой статье мы объясним, как использовать modprobe для добавления и удаления модулей из ядра Linux. modprobe является частью kmod , двоичного kmod , который реализует несколько программ, используемых для управления модулями ядра Linux.

Добавление модулей ядра

Модули ядра хранятся в каталоге /lib/modules/ . Вы найдете версию работающего ядра , используйте команду uname -r .

Только пользователи с правами администратора могут управлять модулями ядра.

Чтобы загрузить модуль, вызовите команду modprobe за которой следует имя модуля:

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

Используйте команду lsmod чтобы убедиться, что модуль загружен:

Чтобы загрузить модуль с дополнительными параметрами, используйте синтаксис parameter=value :

Команда принимает несколько пар parameter=value разделенных пробелом.

Как правило, вам необходимо загрузить модуль во время загрузки системы. Вы можете сделать это, указав модуль и его параметры в файле внутри каталога /etc/modules-load.d . Файлы должны заканчиваться на .conf и иметь любое имя:

Параметры, указанные в этих файлах, считываются программой udev , которая загружает модули при запуске системы с помощью modprobe .

Удаление модулей ядра

Чтобы удалить модуль, вызовите команду modprobe с параметром -r за которым следует имя модуля:

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

При вызове с -r команда принимает несколько модулей в качестве аргументов:

Если вы хотите предотвратить загрузку модуля ядра во время загрузки, создайте файл .conf с любым именем внутри /etc/modprobe.d . Синтаксис:

Если вы хотите внести в черный список дополнительные модули, укажите модули в новой строке или создайте новый файл .conf .

Выводы

Команда modprobe позволяет добавлять и удалять модули ядра Linux.

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.

Источник

Модификация ядра Linux: добавляем новые системные вызовы

В этой статье мы научимся изменять ядро Linux, добавим собственные уникальные системные вызовы и в завершении соберем ядро с новой функциональностью.

Прежде чем перейти к модификации ядра, его нужно скачать.

Читайте также:  Network последняя версия для windows 10

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

  • Скачать ПО для запуска виртуальной машины, например Vimware или VirtualBox.
  • Скачать образ Ubuntu 18.04 (http://releases.ubuntu.com/18.04/).
  • Настроить виртуальную ОС, используя скачанный образ.

После загрузки Ubuntu открыть терминал и следовать дальнейшим инструкциям:

Установка необходимых компонентов:

Скачивание исходного кода Linux:

Изменение разрешений и переименование каталога:

Настройка сборки ядра:

Установка модулей ядра и образа:

После открытия файла сделайте следующее:

  • Установите GRUB_DEFAULT как Ubuntu, with Linux4.15.18-custom ;
  • Установите GRUB_TIMEOUT_STYLE как menu ;
  • Установите GRUB_TIMEOUT как 5 ;
  • В конце добавьте строку: GRUB_DISABLE_SUBMENUE=y .

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

После запуска системы убедитесь, что загрузили кастомное ядро:

Вывод должен быть 4.15.18-custom .

На этом с подготовительной частью мы закончили.

В качестве новой функциональности мы добавим веса процессов.

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

Нам нужно реализовать поддержку двух поведенческих паттернов:

  • При ответвлении дочерний процесс будет получать тот же вес, что и его родитель;
  • Процесс init будет иметь вес 0.

Системный вызовы, которые мы собираемся реализовать, смогут:

  • Устанавливать вес текущего процесса;
  • Получать общий вес текущего процесса рекурсивно.

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

Для этого откройте

/linux-4.15.18-custom/include/linux/sched.h
и в структуре task_struct добавьте целочисленный атрибут веса.

Теперь нужно сообщить каждому процессу, каков его начальный вес. Для этого в том же каталоге, что и ранее, откройте init_task.h , в нем перейдите к макроопределению INIT_TASK и добавьте в атрибут веса инициализацию.

В последнем блоке мы сообщили каждому процессу, что у него теперь есть новый атрибут веса, и что при каждом создании нового процесса этот атрибут нужно инициализировать как 0 .

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

/linux-4.15.18-custom/arch/x86/entry/syscalls/ и откройте syscall_64.tbl .

Промотайте вниз файла и зарезервируйте номера системных вызовов.

Далее мы создадим сигнатуру системного вызова. В том же каталоге откройте syscalls.h и промотайте вниз файла:

Все настроено. Осталось только реализовать эти системные вызовы.

/linux-4.15.18-custom/kernel и создайте новый файл syscalls_weight.c .

Не забудьте в том же каталоге открыть Makefile и добавить ваш новый файл в процесс сборки:

Откройте созданный syscalls_weight.c , и давайте переходить к реализации.

Сначала добавляем библиотеки:

Саму же реализацию начнем с sys_set_weight .

  • current – это указатель на текущую активную задачу;
  • При работе с системными вызовами принято возвращать 0 в случае успешного выполнения и отрицательное значение при возникновении ошибки, как мы и прописали (учитывая, что мы не хотим допускать отрицательный вес).

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

После чего пишем саму реализацию:

Вот и все. Вам осталось только собрать ядро, перезапустить систему и начинать пользоваться новой функциональностью.

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

Автор оригинала статьи выражает признательность за ваше внимание и приглашает посетить его блог CodingKaiser, где вы найдете много интересных материалов из мира технологий и разработки.

Источник

Загружаемые модули ядра Linux

Системное ядро Linux способно к модификации за счёт расширения функциональных возможностей. Это достигается несколькими способами, но самым оптимальным является подключение загружаемых модулей ядра. Этот способ позволяет вести разработку нужного функционала для ядра независимо от самого ядра. Процесс подключения модулей к ядру, как правило, никаких трудностей не вызывает (в отличие от конфигурирования и компиляции). Если конечно модули разработаны грамотно и должным образом протестированы. Системным администраторам стоит помнить, что если нужно «расширить» ядро под требуемый функционал, то в первую очередь следует воспользоваться вариантом в виде загружаемых модулей ядра.

Читайте также:  Gimp для windows последняя версия

Зачем нужны загружаемые модули ядра?

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

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

Среди всех UNIX-подобных операционных систем наиболее приспособленными для работы с загружаемыми модулями ядра (а также поддерживающими самый широкий спектр оборудования и аппаратных платформ, в том числе и новинок) являются системы Linux и Solaris.

Особенности работы с модулями ядра Linux

Как уже было отмечено, Linux способна предоставить системным администраторам довольно широкие возможности для работы с загружаемыми модулями ядра. Так например в Linux любой системный компонент возможно сделать загружаемым модулем за исключением двух системных объектов: драйвера устройства, используемого для работы корневой файловой системы (ФС) и драйвера мыши типа PS/2.

Все загружаемые модули хранятся (и устанавливаются) в каталог /lib/modules/версия_ядра. Здесь версия_ядра может определена командой:

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

Как видно из данного вывода, в системе настроена поддержка брандмауэра iptables, а также используются модули для интеллектуального управления платформой IMPI – Intelligent Platform Management Interface. В колонке «Size» указывается размер в байтах, а в колонке «Used by» (кем используется) приводится количество связей на данный модуль от других компонентов, а также список самих этих компонентов.

Даже если системное ядро было сконфигурировано и скомпилировано с настройками и комплектностью по-умолчанию, то при использовании команды lsmod, как правило будет выведен довольно длинный список модулей. Если известно точное или примерное имя модуля, который необходимо проверить (используется он или нет), то вместе с командой lsmod удобно использовать и команду grep:

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

Загрузка и подключение модулей ядра

Пусть имеется загружаемый модуль ядра для некоторого устройства. Например есть файл модуля somedevice.ko для устройства somedevice. Чтобы загрузить этот модуль для ядра прямо во время работы системы следует использовать команду insmod:

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

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

Следует заметить, что несмотря на то, что команду rmmod хоть и можно использовать в любой момент времени, однако модуль может быть удалён только в случае, если с ним не связано ни одной действующей ссылки, которые указываются в столбце «Used by» вывода команды lsmod.

Чтобы каждый раз поле перезапуска системы не загружать требуемые модули, в Linux существует возможность подключать их автоматически с помощью файла /etc/modprobe.conf и соответствующей команды modprobe. Эта команда является «обёрткой» команды insmod. Она способна определять порядок загрузки и выгрузки модулей, их параметры, а также зависимости от других модулей и/или параметров. Всю эту информацию команда modprobe читает из файла /etc/modprobe.conf, который, кстати способна и сама генерировать.

Читайте также:  Asus m50s драйвера windows

Чтобы сгенерировать файл modprobe.conf в соответствии с текущим набором загруженных модулей (которые необходимо загрузить заранее), нужно использовать команду:

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

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

Значения для строк options администраторы должны задавать самостоятельно, поскольку эти инструкции командой modprobe автоматически не генерируются. Например, чтобы задать для модуля устройства somedevice адрес его ввода-вывода, а также вектор прерываний, можно это сделать таким образом:

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

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Как установить Brotli Module для Nginx в Ubuntu 20.04 LTS

Как установить Brotli Module для Nginx в Ubuntu 20.04 LTS

В этом руководстве мы покажем вам, как установить модуль brotli для Nginx в Ubuntu 20.04 LTS. Для тех из вас, кто не знал, Brotli — это высокопроизводительный алгоритм сжатия без потерь, разработанный и поддерживаемый Google. Он может использоваться веб-серверами для сжатия таких файлов, как и файлы, а также для увеличения производительности веб-сайтов и снижения их требований к пропускной способности. . html . css

В этой статье предполагается, что у вас есть хотя бы базовые знания Linux, вы знаете, как использовать оболочку, и, что наиболее важно, вы размещаете свой сайт на собственном VPS. Установка довольно проста и предполагает, что вы работаете с учетной записью root, в противном случае вам может потребоваться добавить ‘ sudo ‘ к командам для получения привилегий root. Я покажу вам пошаговые инструкции по включению Brotli Compression на Nginx. Вы можете следовать тем же инструкциям для Ubuntu 18.04, 16.04 и любого другого дистрибутива на основе Debian, например Linux Mint.

Установите модуль Brotli для Nginx в Ubuntu 20.04 LTS Focal Fossa

Шаг 1. Во-первых, убедитесь, что все ваши системные пакеты обновлены, выполнив следующие apt команды в терминале.

Шаг 2. Установка Nginx на Ubuntu 20.04.

Nginx доступен в репозиториях Ubuntu по умолчанию. Для его установки выполните следующую команду:

После завершения установки запустите команды, которые позволят Nginx автоматически запускаться при запуске вашего сервера:

Шаг 3. Установка модуля Brotli для Nginx.

Теперь мы запускаем следующую команду, чтобы загрузить и установить модуль Nginx Static Brotli:

Шаг 4. Настройте Nginx.

Создаем конфигурацию, чтобы NGINX использовал модуль Brotli:

Добавьте эти строки поверх : nginx . conf

Теперь добавьте конфигурацию Brotli:

Затем запустите службу Nginx, используя следующую команду:

Шаг 5. Тестирование модуля Brotli.

Теперь проверьте, включен ли модуль Brotli, выполнив следующую команду:

Поздравляю! Вы успешно установили модуль brotli. Благодарим за использование этого руководства для установки Review Board в системе Ubuntu 20.04 LTS Focal Fossa. Для получения дополнительной помощи или полезной информации мы рекомендуем вам посетить официальный сайт Nginx .

Источник

Оцените статью