Страницы

Сохранить статью у себя в соцсети:

понедельник, 24 июня 2013 г.

§ Linux kernel modules.

Add kernel functionality without reboot.

Как известно ядро Linux состоит из множества подсистем которые реализуют самую разную функциональность. Эти подсистемы в свою очередь являются набором компонентов. Также известно что эти компоненты могут быть как непосредственной частью, так и могут находиться в виде подгружаемых модулей. Время от времени возникает вопрос, а что лучше? Большое монолитное ядро или же маленькое ядро с большим количеством модулей. Доводы в пользу того и другого варианта приводятся разные, однако у модульного варианта есть одно неоспоримое преимущество. 
Модульный подход позволяет добавить недостающую функциональность без перезагрузки. Мало того, собранный модуль можно перенести на другую систему с аналогичным ядром и подгрузить его там. Этот нюанс становится весьма острым когда возникает вопрос перезагрузки. Иногда выполнить перезагрузку совсем нет возможности, а добавить функциональность нужно. Приведу довольно простой пример... Нужно добавить дополнительный драйвер для RAID-контроллера LSI Logic (Fusion-MPT SAS). 
Изначально ядро не предоставляет этого драйвера да и модуля нет:
# modprobe mptctl
modprobe: FATAL: Module mptctl not found.

Однако в Gentoo Linux дела с ядрами обстоят довольно гибко, поэтому переходим в каталог с установленными исходными кодами и запускаем конфигуратор.
# cd /usr/scr/linux
# make menuconfig

Включаем модулем нужный нам Fusion MPT misc device (ioctl) driver, запускаем сборку модулей и затем устанавливаем его.
# make modules && make modules_install

Теперь подгружаем модуль и проверяем его работу
# modprobe mptctl
# modinfo mptctl
filename:       /lib/modules/3.7.10-gentoo-r1-h64-santum-b/kernel/drivers/message/fusion/mptctl.ko
version:        3.04.20
license:        GPL
description:    Fusion MPT misc device (ioctl) driver
author:         LSI Corporation
srcversion:     FC06734C245C4B3697FF5C5
depends:        
intree:         Y
vermagic:       3.7.10-gentoo-r1-h64-santum-b SMP mod_unload
# mpt-status -i 4
ioc0 vol_id 4 type IME, 4 phy, 556 GB, state OPTIMAL, flags ENABLED
ioc0 phy 3 scsi_id 9 HITACHI  HUS154530VLS300  A570, 279 GB, state ONLINE, flags NONE
ioc0 phy 2 scsi_id 5 HITACHI  HUS154530VLS300  A570, 279 GB, state ONLINE, flags NONE
ioc0 phy 1 scsi_id 8 SEAGATE  ST3600057SS      0008, 558 GB, state ONLINE, flags NONE
ioc0 phy 0 scsi_id 7 SEAGATE  ST3600057SS      0008, 558 GB, state ONLINE, flags NONE

Вот так вот... и никакого куищще даунтайма.

На главную "Virtualizing Linux"

Комментариев нет:

Отправить комментарий

Популярные сообщения

Профиль в Google+ Яндекс цитирования Яндекс.Метрика