ലിനക്സിൽ കേർണൽ മൊഡ്യൂളുകൾ എങ്ങനെ ലോഡ് ചെയ്യുകയും അൺലോഡ് ചെയ്യുകയും ചെയ്യാം


കേർണൽ മൊഡ്യൂൾ എന്നത് കേർണലിലേക്ക് ആവശ്യാനുസരണം ലോഡുചെയ്യാനോ അൺലോഡ് ചെയ്യാനോ കഴിയുന്ന ഒരു പ്രോഗ്രാമാണ്, അത് (കേർണൽ) വീണ്ടും കംപൈൽ ചെയ്യുകയോ സിസ്റ്റം റീബൂട്ട് ചെയ്യുകയോ ചെയ്യാതെ, കേർണലിന്റെ പ്രവർത്തനക്ഷമത വർദ്ധിപ്പിക്കാൻ ഉദ്ദേശിച്ചുള്ളതാണ്.

പൊതുവായ സോഫ്uറ്റ്uവെയർ പദങ്ങളിൽ, മൊഡ്യൂളുകൾ വേർഡ്പ്രസ്സ് പോലുള്ള ഒരു സോഫ്uറ്റ്uവെയറിലേക്കുള്ള പ്ലഗിനുകൾ പോലെയാണ്. പ്ലഗിനുകൾ സോഫ്റ്റ്uവെയർ പ്രവർത്തനം വിപുലീകരിക്കുന്നതിനുള്ള മാർഗങ്ങൾ നൽകുന്നു, അവയില്ലാതെ, ഒരു പാക്കേജിൽ സംയോജിപ്പിച്ചിരിക്കുന്ന എല്ലാ പ്രവർത്തനങ്ങളും ഉൾക്കൊള്ളുന്ന ഒരു വലിയ സോഫ്റ്റ്uവെയർ ഡവലപ്പർമാർ നിർമ്മിക്കേണ്ടതുണ്ട്. പുതിയ പ്രവർത്തനങ്ങൾ ആവശ്യമാണെങ്കിൽ, ഒരു സോഫ്റ്റ്uവെയറിന്റെ പുതിയ പതിപ്പുകളിൽ അവ ചേർക്കേണ്ടതുണ്ട്.

അതുപോലെ മൊഡ്യൂളുകൾ ഇല്ലാതെ, കേർണൽ ഇമേജിലേക്ക് നേരിട്ട് സംയോജിപ്പിച്ചിട്ടുള്ള എല്ലാ പ്രവർത്തനങ്ങളും ഉപയോഗിച്ച് കേർണൽ നിർമ്മിക്കേണ്ടതുണ്ട്. ഇതിനർത്ഥം വലിയ കേർണലുകൾ ഉണ്ടെന്നാണ്, കൂടാതെ സിസ്റ്റം അഡ്മിനിസ്ട്രേറ്റർമാർ ഒരു പുതിയ പ്രവർത്തനം ആവശ്യമുള്ളപ്പോഴെല്ലാം കേർണൽ വീണ്ടും കംപൈൽ ചെയ്യേണ്ടതുണ്ട്.

ഒരു മൊഡ്യൂളിന്റെ ലളിതമായ ഉദാഹരണം ഒരു ഉപകരണ ഡ്രൈവർ ആണ് - ഇത് സിസ്റ്റവുമായി ബന്ധിപ്പിച്ചിട്ടുള്ള ഒരു ഹാർഡ്uവെയർ ഘടകം/ഉപകരണം ആക്uസസ് ചെയ്യാൻ കേർണലിനെ പ്രാപ്uതമാക്കുന്നു.

ലിനക്സിൽ ലോഡുചെയ്ത എല്ലാ കേർണൽ മൊഡ്യൂളുകളും ലിസ്റ്റ് ചെയ്യുക

ലിനക്സിൽ, എല്ലാ മൊഡ്യൂളുകളും അവസാനിക്കുന്നത് .ko എക്സ്റ്റൻഷനിലാണ്, കൂടാതെ സിസ്റ്റം ബൂട്ടിൽ ഹാർഡ്uവെയർ കണ്ടെത്തുമ്പോൾ അവ സാധാരണയായി സ്വയമേവ ലോഡ് ചെയ്യപ്പെടും. എന്നിരുന്നാലും ഒരു സിസ്റ്റം അഡ്മിനിസ്ട്രേറ്റർക്ക് ചില കമാൻഡുകൾ ഉപയോഗിച്ച് മൊഡ്യൂളുകൾ കൈകാര്യം ചെയ്യാൻ കഴിയും.

ലിനക്സിൽ നിലവിൽ ലോഡ് ചെയ്തിട്ടുള്ള എല്ലാ മൊഡ്യൂളുകളും ലിസ്റ്റുചെയ്യുന്നതിന്, ഇതുപോലെയുള്ള /proc/modules-ന്റെ ഉള്ളടക്കം വായിക്കുന്ന lsmod (list modules) കമാൻഡ് നമുക്ക് ഉപയോഗിക്കാം.

# lsmod
Module                  Size  Used by
rfcomm                 69632  2
pci_stub               16384  1
vboxpci                24576  0
vboxnetadp             28672  0
vboxnetflt             28672  0
vboxdrv               454656  3 vboxnetadp,vboxnetflt,vboxpci
bnep                   20480  2
rtsx_usb_ms            20480  0
memstick               20480  1 rtsx_usb_ms
btusb                  45056  0
uvcvideo               90112  0
btrtl                  16384  1 btusb
btbcm                  16384  1 btusb
videobuf2_vmalloc      16384  1 uvcvideo
btintel                16384  1 btusb
videobuf2_memops       16384  1 videobuf2_vmalloc
bluetooth             520192  29 bnep,btbcm,btrtl,btusb,rfcomm,btintel
videobuf2_v4l2         28672  1 uvcvideo
videobuf2_core         36864  2 uvcvideo,videobuf2_v4l2
v4l2_common            16384  1 videobuf2_v4l2
videodev              176128  4 uvcvideo,v4l2_common,videobuf2_core,videobuf2_v4l2
intel_rapl             20480  0
x86_pkg_temp_thermal    16384  0
media                  24576  2 uvcvideo,videodev
....

ലിനക്സിൽ കേർണൽ മൊഡ്യൂളുകൾ എങ്ങനെ ലോഡും അൺലോഡും (നീക്കം ചെയ്യുക) ചെയ്യാം

ഒരു കേർണൽ മൊഡ്യൂൾ ലോഡ് ചെയ്യാൻ, നമുക്ക് insmod (insert module) കമാൻഡ് ഉപയോഗിക്കാം. ഇവിടെ, മൊഡ്യൂളിന്റെ മുഴുവൻ പാതയും ഞങ്ങൾ വ്യക്തമാക്കേണ്ടതുണ്ട്. താഴെയുള്ള കമാൻഡ് speedstep-lib.ko മൊഡ്യൂൾ ചേർക്കും.

# insmod /lib/modules/4.4.0-21-generic/kernel/drivers/cpufreq/speedstep-lib.ko 

ഒരു കേർണൽ മൊഡ്യൂൾ അൺലോഡ് ചെയ്യുന്നതിന്, ഞങ്ങൾ rmmod (മൊഡ്യൂൾ നീക്കം ചെയ്യുക) കമാൻഡ് ഉപയോഗിക്കുന്നു. ഇനിപ്പറയുന്ന ഉദാഹരണം speedstep-lib.ko മൊഡ്യൂൾ അൺലോഡ് ചെയ്യുകയോ നീക്കം ചെയ്യുകയോ ചെയ്യും.

# rmmod /lib/modules/4.4.0-21-generic/kernel/drivers/cpufreq/speedstep-lib.ko 

മോഡ്uപ്രോബ് കമാൻഡ് ഉപയോഗിച്ച് കേർണൽ മൊഡ്യൂളുകൾ എങ്ങനെ കൈകാര്യം ചെയ്യാം

modprobe എന്നത് കേർണലിൽ നിന്ന് മൊഡ്യൂളുകൾ ലിസ്റ്റുചെയ്യുന്നതിനും ചേർക്കുന്നതിനും നീക്കം ചെയ്യുന്നതിനുമുള്ള ഒരു ഇന്റലിജന്റ് കമാൻഡ് ആണ്. ഇത് മൊഡ്യൂൾ ഡയറക്ടറി /lib/modules/$ (uname -r) എല്ലാ മൊഡ്യൂളുകൾക്കും അനുബന്ധ ഫയലുകൾക്കുമായി തിരയുന്നു, എന്നാൽ /etc/modprobe.d ഡയറക്ടറിയിലെ ഇതര കോൺഫിഗറേഷൻ ഫയലുകൾ ഒഴിവാക്കുന്നു.

ഇവിടെ, നിങ്ങൾക്ക് ഒരു മൊഡ്യൂളിന്റെ സമ്പൂർണ്ണ പാത ആവശ്യമില്ല; മുമ്പത്തെ കമാൻഡുകളെ അപേക്ഷിച്ച് modprobe ഉപയോഗിക്കുന്നതിന്റെ പ്രയോജനം ഇതാണ്.

ഒരു മൊഡ്യൂൾ ചേർക്കുന്നതിന്, അതിന്റെ പേര് ഇനിപ്പറയുന്ന രീതിയിൽ നൽകുക.

# modprobe speedstep-lib

ഒരു മൊഡ്യൂൾ നീക്കം ചെയ്യാൻ, ഇതുപോലെ -r ഫ്ലാഗ് ഉപയോഗിക്കുക.

# modprobe -r speedstep-lib

ശ്രദ്ധിക്കുക: മോഡ്uപ്രോബിന് കീഴിൽ, ഓട്ടോമാറ്റിക് അണ്ടർസ്uകോർ പരിവർത്തനം നടക്കുന്നു, അതിനാൽ മൊഡ്യൂൾ പേരുകൾ നൽകുമ്പോൾ _, എന്നിവ തമ്മിൽ വ്യത്യാസമില്ല.

കൂടുതൽ ഉപയോഗ വിവരങ്ങൾക്കും ഓപ്ഷനുകൾക്കും, modprobe മാൻ പേജിലൂടെ വായിക്കുക.

# man modprobe

പരിശോധിക്കാൻ മറക്കരുത്:

  1. കേർണൽ റൺടൈം പാരാമീറ്ററുകൾ സ്ഥിരവും സ്ഥിരമല്ലാത്തതുമായ രീതിയിൽ എങ്ങനെ മാറ്റാം
  2. CentOS 7-ൽ ഏറ്റവും പുതിയ കേർണൽ പതിപ്പ് എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം അല്ലെങ്കിൽ അപ്uഗ്രേഡ് ചെയ്യാം
  3. ഉബുണ്ടുവിലെ ഏറ്റവും പുതിയ പതിപ്പിലേക്ക് കേർണൽ എങ്ങനെ അപ്uഗ്രേഡ് ചെയ്യാം

ഇപ്പോഴത്തേക്ക് ഇത്രമാത്രം! ഈ ഗൈഡിലേക്കോ ചോദ്യങ്ങളിലേക്കോ ഞങ്ങൾ ചേർക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്ന എന്തെങ്കിലും ഉപയോഗപ്രദമായ ആശയങ്ങൾ നിങ്ങൾക്കുണ്ടോ, അവ ഞങ്ങൾക്ക് നൽകുന്നതിന് ചുവടെയുള്ള ഫീഡ്uബാക്ക് ഫോം ഉപയോഗിക്കുക.