Линукс / Unix Тушаал:

Линукс / Unix тушаалаар үйлдлийн системийг ачаалах модулийг ажиллуулдаг цөмд суулгадаг. insmod ажиллаж байгаа цөмд цөмийн экспортлогдсон тэмдэгтийн хүснэгтээс бүх тэмдэгүүдийг шалгаж холбохыг оролддог.

Хэрэв модуль файлын нэрийг зааваргүйгээр эсвэл өргөтгөлгүйгээр өгсөн бол insmod нь модулийг зарим нийтлэг сангуудад хайх болно. Байгаль орчны хувьсагч MODPATH энэ анхдагч утгыг өөрчлөхийн тулд ашиглаж болно. Хэрэв /etc/modules.conf зэрэг модулийн тохиргооны файл байгаа бол энэ нь MODPATH-д тодорхойлогдсон замуудыг дарж бичих болно.

MODULECONF орчны хувьсагч нь анхдагч /etc/modules.conf (эсвэл /etc/conf.modules (хуучирсан) өөр тохиргооны файлыг сонгоход бас ашиглагдаж болно. Энэ орчны хувьсагч дээрх бүх тодорхойлолтуудыг дарж өөрчлөх болно.

UNAME_MACHINE-ийн орчны хувьсагч тохируулагдсан үед modutils нь uname () сscscall-с машины талбарын оронд түүний утгыг ашиглах болно. Энэ нь 32 битийн хэрэглэгчийн талбарт 64 битийн модулийг хөрвүүлэхэд голчлон ашиглагддаг бөгөөд модулиудын төрөлд UNAME_MACHINE- г тохируулна. Одоогийн modutils нь модулиудын хувьд бүх хөндлөн бүтээх горимыг дэмждэггүй бөгөөд хостын архитектурын 32- 64-bit хувилбаруудыг сонгоход хязгаарлагдсан байдаг.

Сонголтууд

-e persist_name , --persist = persist_name

Модуль дахь тасралтгүй өгөгдөл ачаалах үед уншиж, энэ модулийг instantiation ачаалалгүйгээр бичдэгийг зааж өгнө. Модуль нь тогтмол өгөгдөлгүй бол энэ сонголтыг чимээгүйхэн орхих болно. Зөвхөн энэ сонголттой бол байнгын өгөгдөл нь зөвхөн insmod- ээр уншигдах бөгөөд анхдагчаар insmod нь байнгын өгөгдлийг боловсруулахгүй.

Түргэн хэлбэрийн хэлбэрээр -e "" (хоосон мөр) нь модулс.conf- д тодорхойлсон persistdir- ийн утгыг insmod гэж тайлбарлах бөгөөд дараа нь модулийн файлын нэрийг олсон хайх замаас модулийн нэртэй харьцуулахад хасах ".gz", ".o" буюу ".mod" гэж тэмдэглэв. Хэрэв modules.conf нь " persistdir = " ( persistdir бол хоосон талбар) гэж зааж өгсөн бол энэ түргэн бичгийг бөглөөгүй байна. ( Modules.conf (5) -ийг харна уу.)

-f , --force

Ажиллаж байгаа цөмийн хувилбар болон модулийг хөрвүүлсэн цөмийн хувилбар тохирохгүй байсан ч гэсэн модулийг ачаалах хэрэгтэй. Энэ нь зөвхөн цөмийн хувилбарын шалгалтыг давж гардаг бөгөөд энэ нь тэмдэгтийн нэрийг шалгахад ямар ч нөлөө үзүүлэхгүй. Хэрэв модуль дахь тэмдэгтийн нэр нь цөмтэй тохирохгүй бол модулийг ачаалахын тулд insmod- г хүчээр оруулах арга байхгүй.

-h , --help

Опционы хураангуйг харуулах ба гарч ирнэ.

, - автоматаар

Модуль дээр автоматаар цэвэр тугийг тохируулна уу. Энэ тугийг kerneld (8) ашиглан модулийг зарим нэг хугацаанд ашиглаагүй модулийг ихэвчлэн нэг минутанд хэрэглэнэ.

-L , - түгжээ

Хамт олныг (2) нэг модулийг нэгэн зэрэг ачааллахаас сэргийлэх.

-m , --map

Гаралтыг stdout дээр ачаалах нь цөмийг сүйрэхэд тохиолддог модулийг дибаг хийхэд илүү хялбар болгоно.

-n , --noload

Дамми гүйж байгаа бол модулийг цөмд ачаалахаас өөр бусад бүх зүйлийг хийдэг. Хэрэв -m эсвэл -O -ээр хүсэлт гаргасан бол энэ нь зураг эсвэл блбуу файл үүсгэх болно. Модуль нь дуудагдаагүй учраас жинхэнэ цөмийн ачааллын хаяг үл мэдэгдэх бөгөөд зураг болон бөмбөрийн файл нь 0x12340000-ийн дурын ачааллын хаяг дээр суурилдаг.

-o module_name , --name = module_name

Эх модулийн объектын файлын үндсэн нэрээс нэрийг авчрахын оронд модулийг нэрлэв.

-О blob_name , --blob = blob_name

Blob_name дахь хоёртын объектыг хадгалах. Үр дүн нь хоёртын бөмбөрцөг (ELF толгой байхгүй) хэсгийг хэсэгчлэн зөөвөрлөх болон нүүлгэн шилжүүлсний дараа цөмд юу дуудагдсаныг заана. Сонголт -m нь объектын газрын зураг авахыг зөвлөдөг.

-p , --probe

Модулийг амжилттай ачаалж чадах эсэхийг харна уу. Үүнд модулийн зам дахь обьект файлыг байршуулах, хувилбарын дугаарыг шалгах, тэмдэгтүүдийг шалгах зэрэг орно. Энэ нь нүүлгэн шилжүүлэлтийг шалгахгүй эсвэл газрын зураг эсвэл блбүү файл үүсгэдэггүй.

-P угтвар , --prefix = угтвар

Энэ тохируулга нь SMP эсвэл bigmem кернелийн хувьд хувилбартай модулиудтай хамт хэрэглэгдэж болох бөгөөд ийм модулиуд нь тэдгээрийн бэлгэдлийн нэрэнд нэмэгдсэн нэмэлт угтвартай байдаг. Хэрэв цөм нь бэлгэдлийн хувилбаруудаар бүтээгдсэн бол insmod нь модулийг дэмждэг ямар ч цөмд байх ёстой "get_module_symbol" эсвэл "inter_module_get" гэсэн тодорхойлолтоос автоматаар уг угтварыг автоматаар задална. Хэрэв цөм нь ямар ч тэмдэгтийн хувилбарууд байдаггүй боловч модулийг бэлгэдлийн хувилбаруудаар бүтээгдсэн бол хэрэглэгч -P -ийг хангах ёстой.

-q , -quiet

Шийдэгдээгүй ямар нэг тэмдгийг жагсааж болохгүй. Хувилбарын нийцэмжгүй байдлын талаар гомдоллохгүй байх. Асуудал нь зөвхөн инфляцын гарцын байдалд тусгагдах болно.

-r , - root

Зарим хэрэглэгчид root биш хэрэглэгчээр модулиудыг эмхэтгэн дараа нь модулиудыг root эрхээр суулгана. Модулиудын сан нь root эзэмшдэг ч энэ процесс нь root биш хэрэглэгч эзэмшдэг модулиудыг орхиж болно. Хэрэв root биш хэрэглэгч эвдэгдсэн бол халдагч тэр хэрэглэгчийн эзэмшдэг модулийг дарж бичих боломжтой бөгөөд энэ хандалтыг эхлээд хандалтын хурдыг ашиглана.

Анхдагчаар modutils нь root эрхгүй модулийг ашиглахыг оролдох болно. -r нь шалгаж root -ыг эзэмшдэггүй модулиудыг ачаалахын тулд root -г зөвшөөрөх болно. Тэмдэглэл: modutil тохируулагдсан үед root шалгахын анхдагч утгыг өөрчилж болно.

Тохиргооны цагт root-г идэвхгүй болгохын тулд -r тохируулгыг ашиглахыг болиулах эсвэл анхдагч тохиргоог "no root check" гэж тохируулах нь аюулгүй байдлын гол нөлөөлөл бөгөөд хэрэглэхийг зөвлөдөггүй.

-s , - syslog

Бүх зүйлийг бүгдийг syslog (3) уруу терминалын оронд гаргаж өгнө.

-S , - калкизм

Ачаалагдсан модулийг kernel-д өгөгдөлтэй байхыг шаарддаг . Энэ тохируулга нь kallsyms-ийн тусламжгүйгээр цөм дуудагдах жижиг системүүдэд зориулагдсан байдаг боловч сонгосон модулиуд нь дибаг хийхэд kallsyms хэрэгтэй болно. Энэ сонголт нь Red Hat Linux-ийн анхдагч утга юм.

-v , --verbose

Үргэлжлүүлээрэй.

-V , - хувилбар

Идэвхгүй байгаа хувилбарыг харуулна .

-X , - export ; -x , --noexport

Модулийн бүх тэмдгийг бүхэлд нь экспортолж, хийдэггүй. Анхдагч нь экспортлох тэмдэгүүд юм. Хэрэв энэ модул нь өөрийн хяналтанд байгаа тэмдэгтийн хүснэгтийг шууд экспортлохгүй бол энэ сонголт нь үр дүнтэй байдаг бөгөөд үүнийг хуучирсан.

-Y , --шимой ; -y , --noksymoops

Ksymoops тэмдэгийг ksyms уруу нэмэхгүй байх. Эдгээр модулиудыг энэ модульд байгаа тохиолдолд илүү дибаг хийх боломжийг олгохын тулд ksymoops ашигладаг. Анхдагч нь ksymoops тэмдэгийг тодорхойлоход зориулагдсан. Энэ тохируулга нь -X / -x сонголтуудаас тусдаа байдаг.

ksymoops тэмдэг нь ачаалах модульд ойролцоогоор 260 байт нэмж өгдөг. Хэрэв та цөмийн зайг үнэхээр богиносгодоггүй бол ksyms-ийг хамгийн бага хэмжээгээр багасгахыг оролдох юм бол анхдагч тохиргоог хийн илүү дибаг хийх Oops. ksymoops тэмдэг нь тогтмол модулийн өгөгдлийг хадгалахад шаардлагатай байдаг.

, - тоон цорын ганц

Зөвхөн цөмийн хувилбартай харьцуулахын тулд модулын хувилбар дахь тоон хэсгийг шалгаарай, өөрөөр хэлбэл модул нь цөмд хамаарах эсэхийг шийдэх үед EXTRAVERSION-г үл тоомсорлодог. Энэ туг нь автоматаар цөмийн 2.5-д тохируулагдсан бөгөөд өмнөх цөмүүдэд сонголт хийх боломжтой байдаг.

Модулийн параметрүүд

Зарим модулиуд нь үйл ажиллагааг өөрчлөхийн тулд ачаалах хугацааны параметрүүдийг хүлээн авдаг. Эдгээр параметрүүд нь машинаас машинаас машин уруугаа өөр өөр байх ба тоног төхөөрөмжөөс тодорхойлох боломжгүй I / O порт ба IRQ дугаарууд юм.

2.0 цувралын цөмүүдэд зориулж хийсэн модулиудын хувьд ямар ч бүхэл тоо буюу тэмдэгтийн заагч тэмдэгийг параметрийн хэлбэрээр өөрчилж болно. 2.1 цуврал цөмийн эхлэлээс эхлэн тэмдэглэгээ нь параметараар тодорхойлогддог бөгөөд зөвхөн тусгай утгыг өөрчилж болно. Цаашлаад ачааллын үед өгсөн утгыг шалгахын тулд мэдээллийг бичнэ.

Бүхэл тоон утгын хувьд бүх утга нь аравтын бутархай, octal, эсвэл арван зургаатын дотор C: 17, 021 эсвэл 0x11 байна. Array элементүүд нь таслалаар тусгаарлагдсан тодорхойлогдсон дараалал юм. Үнэ хаялгаснаар элементүүдийг алгасч болно.

2.0 цувралын модулиудад тоонуудаас эхэлдэггүй утгууд нь тэмдэгтүүдийг агуулдаг. 2.1-ээс эхлэн параметрийн төрлийн мэдээлэл нь утгыг утга болгон хувиргах эсэхийг заана. Хэрэв утга нь хоёр ишлэл ( " ) -аар эхэлбэл, тэмдэгт мөр нь C, зугтах дараалал болон бүх зүйлээр тайлбарлагдана. Бүрхүүл хүлээх мөрнөөс иш татах нь бүрхүүлийг тайлбарлахаас хамгаалж байх хэрэгтэй.

GPL лицензтэй модулиуд ба тэмдэглэгээ

2.4.10-ээс эхлэн модулиуд нь MODULE_LICENSE () -ийг ашиглан лицензийн мөртэй байх ёстой. GPL-тэй нийцтэй хэд хэдэн тэмдэгтийг хүлээн зөвшөөрдөг; лицензийн ямар ч лиценз эсвэл лиценз байхгүй л бол модуль нь өмчлөлийн хэлбэр гэж үздэг.

Хэрэв цөм / / proc / sys / kernel / tainted тугийг дэмждэг бол insPLL нь GPL лицензгүй модулийг ачаалах үед '1' товшсон тэмдэг юм. Цөмийг гэмтээхийг дэмждэг бөгөөд модул нь лицензгүйгээр дуудагдсан тохиолдолд анхааруулга өгдөг. MODPLLE_LICENSE () нь GPL-тэй нийцтэй биш модулиудыг байнга гаргадаг бөгөөд бүрмөсөн цөмийг дэмждэггүй хуучин цөмүүдэд ч анхааруулга өгдөг. Шинэ модулиудыг хуучин цөмүүдэд ашигласнаар энэ анхааруулгыг багасгадаг.

insmod -f (force) горим нь tainting-ийг дэмждэг цөмүүдэд '2' нэртэй шүүлтүүрийг үүсгэнэ . Энэ нь үргэлж анхааруулга өгдөг.

Зарим цөм хөгжүүлэгчид кодоор нь экспортолсон тэмдэгүүдийг зөвхөн GPL нийцтэй лицензтэй модулиудаар ашиглахыг шаарддаг. Эдгээр тэмдгүүд нь EXPORT_SYMBOL_GPL- г хэвийн EXPORT_SYMBOL- ээс бус экспортлогдоно. GPL-ийн зөвхөн тэмдэгтүүд нь цөмөөрөө экспортлогддог бөгөөд бусад модулиуд нь зөвхөн GPL-тэй эрх бүхий лиценз бүхий модулиудад харагддаг бөгөөд эдгээр тэмдэгнүүд нь / proc / ksyms дээр ' GPLONLY_ ' гэсэн угтвартай гарч ирдэг. GPLONLY_ prefix нь GPL лицензтэй модулийг дуудах үед тэмдэглэгээн дээр GPLONLY_ угтварыг хэрэгсдэггүй бөгөөд модуль нь хэвийн тэмдэгийн нэрийг угтваргүйгээр дууддаг . GPL нь зөвхөн GPL нийцтэй лицензгүйгээр модульд зориулж бэлэгддэггүй. Энэ нь лицензгүй модулиудыг агуулдаг.

Ksymoops Тусламж

Модулиудыг ашиглаж байхдаа Oops-ийг дибаг хийхэд туслахын тулд insmod нь зарим нэг тэмдэгтүүдийг ksyms уруу нэмж өгдөг бөгөөд -Y сонголтыг үзээрэй. Эдгээр тэмдэгтүүд нь __insmod_modulename_-ээр эхэлдэг . Тэмдэглэгээ өвөрмөц болгохын тулд модулийн нэрийг шаарддаг. Нэг ижил обьектыг нэг модулийг өөр өөр модуляцийн нэрээр нэг удаа дуудах эрхтэй. Одоогоор тодорхойлсон тэмдэглэгээ нь:

__insmod_modulename_Oobjectfile_Mmtime_Vversion

objectfile нь тухайн объект ачаалагдсан файлын нэр юм. Энэ нь ksymoops кодыг зөв объекттой тааруулж чадна. mtime нь hex дэх файл дахь хамгийн сүүлд өөрчлөгдсөн timestamp, статик нь амжилтгүй бол тэг юм. хувилбар нь модулийн эмхэтгэгдсэн кернел хувилбар, -1 хувилбар байхгүй бол хувилбар юм. _O тэмдэг нь модулын толгойн адил эхлэлийн хаягтай байдаг.

__insmod_modulename_Ssectionname_Llength

Энэ тэмдэг нь сонгогдсон ELF хэсэг, одоогоор .text, .rodata, .data, .bss болон .sbss-ийн эхлэлд харагдах болно. Энэ хэсэг нь тэг биш хэмжээтэй байх тохиолдолд л харагдана. sectionname нь ELF хэсгийн нэр бөгөөд урт нь аравтын бутархай хэсгийн урт юм. Эдгээр тэмдэгтүүд нь ksymoops хаягийн хаягуудыг ямар ч тэмдэгт байхгүй үед хэсгүүдэд тусалдаг.

__insmod_modulename_Ppersistent_filename

Зөвхөн модуль нь байнгын өгөгдөл гэж тэмдэглэгдсэн нэг буюу хэд хэдэн параметртэй бөгөөд байнгын өгөгдлийг хэмнэх файлын нэртэй байдаг (хэрэв -e -г үзнэ үү) боломжтой байдаг.

Дибаг хийх цөмтэй холбоотой бусад асуудал Модулийн Oops нь / proc / ksyms болон / proc / модулиудын агуулгыг Oops болон лог файлыг боловсруулах явцад өөрчлөгдөж болох явдал юм. Энэ асуудлыг шийдэхэд туслахын тулд / var / log / ksymoops сан байгаа бол rymod / proc / ksyms болон / proc / модулиуд / var / log / ksymoops -г `date +% Y% m % d% H% M% S`. Системийн администратор нь Oops дибаг хийх үед хормын хувилбарын файлуудыг ашиглах ksymoops-д хэлж чадна. Энэ автомат хуулбарыг хаах боломжгүй байна. Хэрэв та үүнийг хүсэхгүй байгаа бол / var / log / ksymoops үүсгэж болохгүй . Хэрэв энэ сан байгаа бол энэ нь root эзэмшдэг байх ёстой бөгөөд 644 эсвэл 600 горим байх ёстой бөгөөд та энэ скриптийг өдөр бүр ажиллуулах ёстой. Доорх скрипт нь insmod_ksymoops_clean байдлаар суулгагдсан байна.

Мэдэх үндсэн мэдээлэл

NAME

insmod - loadable цөмийн модулийг суулгаарай

Синнассис

insmod [-fhkLmnpqrsSvVxXyYN] [-e persist_name ] [-o module_name ] [-O blob_name ] [-P угтвар ] модулийн [ тэмдэг = утга ...]