Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ядра Linux

Π’ Linux ядро ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ динамичСски β€” с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ядра. Π­Ρ‚ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΡΡ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒΡΡ Π² любоС врСмя, Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ систСмы. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, тСстированиС ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ оборудования, сСтСвых ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ², Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π₯отя Linux ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ядра остаётся ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΎΠΉ: Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ становится ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ ядра ΠΈ взаимодСйствуСт с ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π° Π½Π΅ Ρ‡Π΅Ρ€Π΅Π· мСТпроцСссноС взаимодСйствиС, ΠΊΠ°ΠΊ Π² микроядСрных ОБ.

ΠœΠΎΠ΄ΡƒΠ»ΠΈ ядра Linux β€” это Ρ„Π°ΠΉΠ»Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .ko, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  • e1000e.ko β€” Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ сСтСвой ΠΊΠ°Ρ€Ρ‚Ρ‹ Intel,
  • ext4.ko β€” Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ext4,
  • nouveau.ko β€” Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚ NVIDIA с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с модулями

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с модулями Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²Π° ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (root).

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° модуля

ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ:

sudo insmod /ΠΏΡƒΡ‚ΡŒ/ΠΊ/module_name.ko

МоТно Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

sudo insmod /ΠΏΡƒΡ‚ΡŒ/ΠΊ/module_name.ko irq=12 debug=3

Однако Ρ‡Π°Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° modprobe, которая ΡƒΠΌΠ΅Π΅Ρ‚:

  • ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π² /lib/modules/$(uname -r)/,
  • автоматичСски Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ зависимости.
sudo modprobe module_name
sudo modprobe module_name irq=12 debug=3

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ

lsmod

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π°:

Module         Size    Used by
coretemp       16384   0
e1000e         237568  0
ptp            20480   1 e1000e
pps_core       20480   1 ptp

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ модуля

Для удалСния Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ:

sudo rmmod module_name

Для автоматичСского удалСния с зависимостями:

sudo modprobe -r module_name

Π’Π°ΠΆΠ½Ρ‹Π΅ замСчания

  • НСльзя Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ модулями ΠΈΠ»ΠΈ процСссами. Π­Ρ‚ΠΎ Π²ΠΈΠ΄Π½ΠΎ ΠΏΠΎ полю Used by Π² lsmod.
  • НСкоторыС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ (особСнно Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ сСтСвых устройств) ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ количСство ссылок, Ρ‡Ρ‚ΠΎ услоТняСт Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΡƒ.
  • modprobe -r пытаСтся Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ-зависимости, Ссли ΠΎΠ½ΠΈ большС Π½ΠΈΠ³Π΄Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ модулями

Π€Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ modprobe находятся Π²:

/etc/modprobe.d/

Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚:

  • Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ псСвдонимы для ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ,
  • автоматичСски ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅,
  • ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ список).

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΌΠΎΠ΄ΡƒΠ»Π΅

modinfo module_name.ko

ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚:

  • описаниС модуля,
  • Π°Π²Ρ‚ΠΎΡ€Π°,
  • Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ,
  • ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ,
  • зависимости,
  • ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ.