Kldload - включаем поддержку устройств без пересборки ядра системы

Версия для печатиОтправить другуPDF version

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

В моем случае на удаленный сервер доустановили сетевую карту на чипсете RealTek 8139. После старта FreeBSD обнаружить ее не смогла, поскольку поддержка этого чипсета была отключена в конфигурационном файле ядра. В ядре GENERIC поддержка сетевых карт на этом чипсете выглядит так:

device          rl              # RealTek 8129/8139

Вывод ifconfig до манипуляций с подгрузкой модуля:

# ifconfig

re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
        ether 70:71:bc:dc:94:38
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet 127.0.0.1 netmask 0xff000000
vlan5: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=3<RXCSUM,TXCSUM>
        ether 70:71:bc:dc:94:38
        inet 172.16.16.1 netmask 0xffffff00 broadcast 172.16.16.255
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        vlan: 5 parent interface: re0

Проверим, какие модули загружены:

# kldstat

Id Refs Address            Size     Name
 1    6 0xffffffff80100000 6d6290   kernel
 2    1 0xffffffff80a12000 27adf    pf.ko
 3    1 0xffffffff80a3a000 a14      fire_saver.ko

где

  • kernel - собственно говоря, ядро системы
  • pf.ko - packet filter, который не включен в ядро, а загружается как модуль
  • fire_saver.ko - скринсейвер, который тоже загружается как модуль

Воспользуемся командой kldload для подгрузки модуля (в моем случае необходима поддержка устройства rl):

# kldload /boot/kernel/if_rl.ko

Проверяем, подгрузился ли модуль:

# kldstat

Id Refs Address            Size     Name
 1   13 0xffffffff80100000 6d6290   kernel
 2    1 0xffffffff80a12000 27adf    pf.ko
 3    1 0xffffffff80a3a000 a14      fire_saver.ko
 4    1 0xffffffff80a3b000 4404     if_rl.ko

Проверим состояние сетевых интерфейсов:

# ifconfig

re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
        ether 70:71:bc:dc:94:38
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet 127.0.0.1 netmask 0xff000000
vlan5: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=3<RXCSUM,TXCSUM>
        ether 70:71:bc:dc:94:38
        inet 172.16.16.1 netmask 0xffffff00 broadcast 172.16.16.255
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        vlan: 5 parent interface: re0
rl0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=3808<VLAN_MTU,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
        ether f4:ec:38:83:af:a5
        media: Ethernet autoselect
        status: active

В результате имеем в наличии поддержку сетевой карты на чипсете RealTek 8139, которая определяется системой как устойство rl. Но каждый раз после перезагрузки сервера как-то неохота вручную "подгружать" модуль, поэтому добавим автоматическую загрузку модуля if_rl.ko при старте системы:

# echo 'if_rl_load="YES"' >> /boot/loader.conf

Для оптимизации при следующей пересборке ядра можно будет включить поддержку устройства rl, а загрузку соответствующего модуля убрать из /boot/loader.conf.

Ваша оценка: Нет Средняя: 3.7 (3 голоса)

Вставай, Україно!

Литература