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

  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:33821e6ad22bfc0f82de64542d627ddf' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtejustify\">Всегда стараюсь по максимуму оптимизировать систему,&nbsp;поэтому при сборке ядра все&nbsp;лишние устройства отключаю. А как быть, если подключили новое устройство и максимально быстро необходимо его запустить? Пересборка ядра - процесс небыстрый. Поэтому воспользуемся возможностью включать поддержку устройств как модуль.</p>\n<p class=\"rtejustify\">В моем случае на удаленный сервер доустановили сетевую карту на чипсете <strong>RealTek 8139</strong>. После старта <strong>FreeBSD </strong>обнаружить ее не смогла,&nbsp;поскольку поддержка этого чипсета была отключена в конфигурационном файле ядра. В ядре <strong>GENERIC </strong>поддержка сетевых карт на этом чипсете выглядит так:</p>\n<p><table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p class=\"rtejustify\">device&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # RealTek 8129/8139</p>\n</td>\n</tr>\n</tbody>\n</table>\n</p>\n<p class=\"rtejustify\">Вывод <strong>ifconfig </strong>до манипуляций с подгрузкой модуля:</p>\n<p class=\"rtejustify\">\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>ifconfig</strong></p>\n<pre>\nre0: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; metric 0 mtu 1500\n options=389b&lt;RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC&gt;\n ether 70:71:bc:dc:94:38\n media: Ethernet autoselect (1000baseT &lt;full-duplex&gt;)\n status: active\nipfw0: flags=8801&lt;UP,SIMPLEX,MULTICAST&gt; metric 0 mtu 65536\nlo0: flags=8049&lt;UP,LOOPBACK,RUNNING,MULTICAST&gt; metric 0 mtu 16384\n options=3&lt;RXCSUM,TXCSUM&gt;\n inet 127.0.0.1 netmask 0xff000000\nvlan5: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; metric 0 mtu 1500\n options=3&lt;RXCSUM,TXCSUM&gt;\n ether 70:71:bc:dc:94:38\n inet 172.16.16.1 netmask 0xffffff00 broadcast 172.16.16.255\n media: Ethernet autoselect (1000baseT &lt;full-duplex&gt;)\n status: active\n vlan: 5 parent interface: re0</pre></td>\n</tr>\n</tbody>\n</table>\n</p>\n<p>Проверим,&nbsp;какие модули загружены:</p>\n<p><table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>kldstat</strong></p>\n<pre>\nId Refs Address Size Name\n 1 6 0xffffffff80100000 6d6290 kernel\n 2 1 0xffffffff80a12000 27adf pf.ko\n 3 1 0xffffffff80a3a000 a14 fire_saver.ko</pre></td>\n</tr>\n</tbody>\n</table>\n</p>\n<p>где</p>\n<ul>\n<li class=\"rtejustify\"><strong>kernel </strong>- собственно говоря,&nbsp;ядро системы</li>\n<li class=\"rtejustify\"><strong>pf.ko</strong> - packet filter, который не включен в ядро,&nbsp;а загружается как модуль</li>\n<li class=\"rtejustify\"><strong>fire_saver.ko</strong> - скринсейвер,&nbsp;который тоже загружается как модуль</li>\n</ul>\n<p class=\"rtejustify\">Воспользуемся командой <strong>kldload</strong> для подгрузки модуля (в моем случае необходима поддержка устройства <strong>rl</strong>):</p>\n<p><table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>kldload /boot/kernel/if_rl.ko</strong></td>\n</tr>\n</tbody>\n</table>\n</p>\n<p class=\"rtejustify\">Проверяем,&nbsp;подгрузился ли модуль:</p>\n<p class=\"rtejustify\">\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p>#<strong> kldstat</strong></p>\n<pre>\nId Refs Address Size Name\n 1 13 0xffffffff80100000 6d6290 kernel\n 2 1 0xffffffff80a12000 27adf pf.ko\n 3 1 0xffffffff80a3a000 a14 fire_saver.ko\n 4 1 0xffffffff80a3b000 4404 <span style=\"color: #ff0000\"><strong>if_rl.ko</strong></span></pre></td>\n</tr>\n</tbody>\n</table>\n</p>\n<p>Проверим состояние сетевых интерфейсов:</p>\n<p><table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>ifconfig</strong></p>\n<pre>\nre0: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; metric 0 mtu 1500\n options=389b&lt;RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC&gt;\n ether 70:71:bc:dc:94:38\n media: Ethernet autoselect (1000baseT &lt;full-duplex&gt;)\n status: active\nipfw0: flags=8801&lt;UP,SIMPLEX,MULTICAST&gt; metric 0 mtu 65536\nlo0: flags=8049&lt;UP,LOOPBACK,RUNNING,MULTICAST&gt; metric 0 mtu 16384\n options=3&lt;RXCSUM,TXCSUM&gt;\n inet 127.0.0.1 netmask 0xff000000\nvlan5: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; metric 0 mtu 1500\n options=3&lt;RXCSUM,TXCSUM&gt;\n ether 70:71:bc:dc:94:38\n inet 172.16.16.1 netmask 0xffffff00 broadcast 172.16.16.255\n media: Ethernet autoselect (1000baseT &lt;full-duplex&gt;)\n status: active\n vlan: 5 parent interface: re0\n<span style=\"color: #ff0000\">rl0: flags=8802&lt;BROADCAST,SIMPLEX,MULTICAST&gt; metric 0 mtu 1500<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; options=3808&lt;VLAN_MTU,WOL_UCAST,WOL_MCAST,WOL_MAGIC&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ether f4:ec:38:83:af:a5<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; media: Ethernet autoselect<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; status: active</span></pre></td>\n</tr>\n</tbody>\n</table>\n</p>\n<p class=\"rtejustify\">В&nbsp;результате имеем в наличии поддержку сетевой карты на чипсете <strong>RealTek 8139</strong>, которая определяется системой как устойство <strong>rl</strong>. Но каждый раз после перезагрузки сервера как-то неохота вручную &quot;подгружать&quot; модуль,&nbsp;поэтому добавим автоматическую загрузку модуля <strong>if_rl.ko</strong> при старте системы:</p>\n<p><table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>echo \'if_rl_load=&quot;YES&quot;\' &gt;&gt; /boot/loader.conf</strong></td>\n</tr>\n</tbody>\n</table>\n</p>\n<p class=\"rtejustify\">Для оптимизации при следующей пересборке ядра можно будет включить поддержку устройства <strong>rl</strong>, а загрузку соответствующего модуля убрать из <strong>/boot/loader.conf</strong>.</p>\n', created = 1767342478, expire = 1767428878, headers = '', serialized = 0 WHERE cid = '2:33821e6ad22bfc0f82de64542d627ddf' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a class=\"thickbox\" href=\"/files/imagepicker/1/wake_up_ua.png\"><img alt=\"Вставай, Україно!\" class=\"imgp_img\" src=\"/files/imagepicker/1/thumbs/wake_up_ua.png\" style=\"height:200px; width:150px\" /></a></p>\n', created = 1767342478, expire = 1767428878, headers = '', serialized = 0 WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:cc913d232116f0426090404133377d88' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a href=\"http://muff.kiev.ua/rss.xml\"><img alt=\"RSS\" width=\"160\" height=\"60\" src=\"http://muff.kiev.ua/files/muf-rss.png\" /></a></p>\n', created = 1767342478, expire = 1767428878, headers = '', serialized = 0 WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:39649256b636e3d5ded656bc52bd8c01' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
Версия для печатиОтправить другу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 голоса)

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

Литература

Бит - это байт минус налоги.