Linux / Unix სარდლობის: Insmod

Linux / Unix ბრძანება Insmod გაშვებულია დატვირთული მოდული გაშვებული ბირთვის. insmod ცდილობს კავშირი მოდულის კერნში ჩაანაცვლოს ბირთვიდან ექსპორტირებული სიმბოლო მაგიდის ყველა სიმბოლოთი.

იმ შემთხვევაში, თუ მოდულის ფაილის სახელი მოცემულია გარეშე დირექტორიები ან გაფართოება, insmod შეისწავლის მოდულის ზოგიერთი საერთო ნაგულისხმევი დირექტორიები. გარემოს ცვლადი MODPATH შეიძლება გამოყენებულ იქნას ამ ნაგულისხმევი შეცვლისთვის . თუ მოდულის კონფიგურაციის ფაილი, როგორიცაა /etc/modules.conf არსებობს, ეს შეცვლის MODPATH- ში მითითებულ ბილიკებს .

გარემოს ცვლადი MODULECONF ასევე შეიძლება გამოყენებულ იქნას სხვადასხვა კონფიგურაციის ფაილების შესარჩევად default /etc/modules.conf (ან /etc/conf.modules (უარყოფა)). ეს გარემო ცვლადი ყველაფერს მიანიჭებს ზემოთ აღწერილ ცნებებს.

როდესაც გარემოს ცვალებადი UNAME_MACHINE არის მითითებული, modutils გამოიყენებს მის მნიშვნელობას მანქანათის ნაცვლად uname () syscall. ეს არის ძირითადად გამოყენება, როდესაც თქვენ შედგენა 64-bit მოდულები 32-bit მომხმარებლის სივრცეში ან პირიქით, მითითებული UNAME_MACHINE ტიპის მოდულები. მიმდინარე მოდულები მხარს არ უჭერს მოდულების სრული გადაჯგუფების რეჟიმს, შემოიფარგლება მასპინძელი არქიტექტურის 32- და 64-ბიტიან ვერსიებს შორის.

პარამეტრები

-e persist_name , --persist = persist_name

განსაზღვრავს, სადაც მოდულის ნებისმიერი მუდმივი მონაცემები წაკითხულია დატვირთვისა და წერილობითი ფორმით, როდესაც მოდულის ეს ინსტალაცია იტვირთება. ეს პარამეტრი ჩუმად იგნორირებულია, თუ მოდული არ გააჩნია მუდმივი მონაცემები. მუდმივი მონაცემები მხოლოდ წაიკითხავს insmod თუ ეს პარამეტრი იმყოფება, by default insmod არ დამუშავებას მუდმივი მონაცემები.

მოკლე შრიფტის სახით , -ე "" (ცარიელი სტრიქონი) ინტერმოდად ითვლება, როგორც მოდულის კონფიგურაციის მიხედვით, როგორც მოდულის კონფიგურაციისთვის . მოდულის მოდულის შედარება მოდულის ძებნის გზასთან შედარებით, მინუს ნებისმიერი გადმოკიდული ". gz", ".o" ან ".mod". თუ modules.conf განსაზღვრავს " persistdir = " (ანუ persistdir არის ცარიელი ველი), მაშინ ეს სტენოგრამის ფორმა იგნორირებულია. (იხილეთ modules.conf (5).)

-f , --force

მცდელობა ჩატვირთოს მოდული იმ შემთხვევაშიც კი, თუ გაშვებული ბირთვის ვერსია და კერნის ვერსია, რომლისთვისაც მოდული შედგენილია, არ ემთხვევა. ეს მხოლოდ overrides კერნელი ვერსია შემოწმება, მას არ აქვს გავლენა სიმბოლო სახელის ამოწმებს. თუ მოდულში სიმბოლოთა სახელები არ ემთხვევა ბირჟას , მაშინ არ არსებობს საშუალება, რომ Insmod- ის მოდულის ჩატვირთვა არ მოხდეს.

-h , --help

ჩვენებათა შერჩევა და დაუყოვნებლივ გასვლა.

-k , --autoclean

დააყენეთ ავტომატური სუფთა დროშა მოდულში. ეს დროშა გამოყენებული იქნება kerneld (8), რათა ამოიღონ მოდულები, რომლებიც არ არის გამოყენებული გარკვეული დროის განმავლობაში - ჩვეულებრივ ერთი წუთი.

-L , - ბლოკი

გამოიყენეთ ფარა (2) იმავე მოდულის ერთდროული ტვირთის თავიდან ასაცილებლად.

-m , --map

გამოყვანა ჩატვირთვის რუკა stdout, რაც უფრო ადვილად გამართავს მოდულის შემთხვევაში ბირთვის პანიკა.

-n , --noload

Dummy პერსპექტივაში, ყველაფერი გავაკეთოთ, გარდა ჩატვირთვის მოდულის შევიდა ბირთვის. თუ -m ან -O ითხოვს, შესრულება აწარმოებს რუკას ან ბლოკ ფაილს. მას შემდეგ, რაც მოდული არ არის დატვირთული, რეალური ბირთვიანი დატვირთვის მისამართი უცნობია, ამიტომ რუკა და ბლოკ ფაილები განისაზღვრება 0x12340000- ის თვითნებური დატვირთვის მისამართიზე.

-o module_name , --name = module_name

სავარაუდოდ დაასახელეთ მოდული, ვიდრე წყაროს ობიექტის ფაილის ბაზის სახელიდან გამომდინარე.

-O blob_name , --blob = blob_name

ორობითი ობიექტის შენახვა blob_name- ში . შედეგი არის ორობითი blob (არ ELF სათაურები) აჩვენებს ზუსტად რა დატვირთული კერნელი შემდეგ სექცია მანიპულირება და გადაადგილების. ვარიანტი -m რეკომენდირებულია ობიექტის რუკის მისაღებად.

-p , --probe

გამოიძიეთ მოდული, თუ ის წარმატებით ჩაიტვირთება . ეს შეიცავს ობიექტის ფაილის განთავსებას მოდულის ბილიკზე, ვერსიის ნომრების შემოწმებასა და სიმბოლოების გადასაწყვეტად. იგი არ შეამოწმებს გადაადგილებებს და არც ქმნის რუკას ან ბლოკ ფაილს.

-P პრეფიქსი , --prefix = პრეფიქსი

ეს პარამეტრი შეიძლება გამოყენებულ იქნას SMP- ს ან bigmem kernel- ის ვერსიის მოდულებით, ვინაიდან ამ მოდულებს აქვთ დამატებითი სიმბოლოები დაემატა მათი სიმბოლოთა სახელები. თუ ბირთვი აგებულია სიმბოლოთა ვერსიით, მაშინ ინსკოდი ავტომატურად ამონაწერი პრეფიქსიდან "get_module_symbol" ან "inter_module_get" - ის განსაზღვრებადან, რომელთაგან ერთი უნდა არსებობდეს მოდული, რომელიც მხარს უჭერს მოდერებს. თუ ბირთვი არ გააჩნია სიმბოლო ვერსიები, მაგრამ მოდული აგებულია სიმბოლო ვერსიით, მაშინ მომხმარებელი უნდა მიაწოდოს -P .

-q , --quiet

არ ამოიღოთ ნებისმიერი გადაუჭრელი სიმბოლოების ჩამონათვალი. არ უჩივიან ვერსიის შეუსაბამობას. პრობლემა მხოლოდ აისახება ინსმოდის გასასვლელში.

-r , - root

ზოგიერთი მომხმარებელი შეადგინოს მოდულები არასამთავრობო root userid შემდეგ დააყენოთ მოდულები, როგორც root. ეს პროცესი შეიძლება დატოვონ არაფუნქციური მომხმარებელიდან მოქმედი მოდულები, მიუხედავად იმისა, რომ მოდულების დირექტორია ფლობს კუთხეს. თუ არასამთავრობო root userid არის კომპრომეტირებული, intruder შეიძლება overwrite არსებული მოდულები კუთვნილი ამ userid და გამოიყენოს ეს ექსპოზიციის bootstrap მდე root ხელმისაწვდომობა.

ჩვეულებრივ, modutils უარყოფს მცდელობებს გამოიყენოს მოდული, რომელიც არ ფლობს root. დაზუსტება - ანუ გადაამოწმებს შემოწმებას და საშუალებას იძლევა, რომ დაამატოთ მოდულები, რომლებიც არ ფლობენ ძირითად ფენებს. შენიშვნა: ძირითადი კონფიგურაციისთვის ნაგულისხმევი მნიშვნელობა შეიძლება შეიცვალოს, როდესაც კონფიგურირებული კონფიგურაცია.

-r -ის გამორთვა, რათა თავიდან იქნეს აცილებული ძირეული შემოწმება ან ნაგულისხმევი პარამეტრი "არა ძირეული შემოწმება" კონფიგურაციის დროს არის მთავარი უსაფრთხოების ექსპოზიცია და არ არის რეკომენდებული.

-s , - syslog

გამოდის ყველაფრისთვის syslog (3) ნაცვლად ტერმინალისთვის.

-S , - კილიკები

დატვირთული მოდულის შექმნა kallsyms- ის მონაცემებით, მაშინაც კი, თუ კერნელი არ უჭერს მხარს. ეს ვარიანტი პატარა სისტემებისთვისაა, სადაც კერნელი დატვირთულია გარეშე kallsym მონაცემები, მაგრამ შერჩეული მოდულები უნდა kallsym for debugging. ეს ვარიანტი ნაგულისხმევია Red Hat Linux- ზე.

-v , --verbose

იყავი სიტყვიერი.

-V , - ვერსია

სვეტის ვერსიის ჩვენება .

-X , - ექსპორტი ; -x , -

ნუ და არ ექსპორტს ყველა მოდულის გარე სიმბოლოები, შესაბამისად. ნაგულისხმევი არის ექსპორტირებული სიმბოლოებისთვის. ეს ვარიანტი მხოლოდ ეფექტურია, თუ მოდული არ აშკარად ავრცელებს საკუთარ კონტროლს დაქვემდებარებული სიმბოლო მაგიდას, და ამდენად უარყოფილია.

-Y , - სიმსივნეები ; - ო , - ნუკსიმუპები

ნუ დაამატეთ ksymoops სიმბოლოები ksyms. ეს სიმბოლოები გამოიყენება ksymoops, რათა უზრუნველყოს უკეთესი გამართვის თუ არსებობს Oops ამ მოდულის. ნაგულისხმევი ksymoops სიმბოლოების განისაზღვრება. ეს ვარიანტი დამოუკიდებელია -X / -x პარამეტრები.

ksymoops სიმბოლოები დაამატეთ დაახლოებით 260 ბაიტი თითო დატვირთული მოდული. თუ მართლაც არ ხარ კერნელის სივრცე და ცდილობს შეამციროთ კიმსმა მისი მინიმალური ზომა, მიჰყევი რა და მიიღოთ უფრო ზუსტი Oops შესწორება. სიმბოლოების სიმბოლოები საჭიროა მუდმივი მოდულის მონაცემების შენახვაზე .

-N , - რიცხვითი მხოლოდ

მხოლოდ მოდულის ვერსიის ციფრული ნაწილის კერნელის ვერსიის შემოწმება, ანუ EXTRAVERSION იგნორირებისას, როდესაც მოდული მიეკუთვნება ბირთვის. ეს დროშა ავტომატურად დადგენილია ბირთვზე 2.5 გრადუსზე, სასურველია წინა კერნებისთვის.

მოდული პარამეტრები

ზოგიერთი მოდული იღებს დატვირთვის დროის პარამეტრებს მათი მოქმედებას. ეს პარამეტრები ხშირად I / O პორტი და IRQ ციფრები, რომლებიც მერყეობს მანქანადან მანქანაში და არ შეიძლება განისაზღვროს აპარატიდან.

2.0 ტერმინალისთვის განკუთვნილი მოდულები, ნებისმიერი რიცხვი ან სიმბოლოთა სიმბოლო სიმბოლო შეიძლება განიხილებოდეს როგორც პარამეტრი და შეცვლილი. დაწყებული 2.1 სერია კერნელი, სიმბოლოები მკაფიოდ გამოხატულია პარამეტრებით, რომ მხოლოდ კონკრეტული ღირებულებები შეიძლება შეიცვალოს. გარდა ამისა, გაცნობის ინფორმაცია გათვალისწინებულია დატვირთვის დროს გათვალისწინებული ღირებულებების შემოწმების მიზნით.

რიცხვების შემთხვევაში, ყველა მნიშვნელობა შეიძლება იყოს ათობითი, octal ან hexadecimal la C: 17, 021 ან 0x11. მასივი ელემენტები განსაზღვრულია თანმიმდევრობით მძიმით. ელემენტები შეიძლება გამოტოვოთ ღირებულების გამოტოვებით.

In 2.0 სერიის მოდულები, ღირებულებები, რომლებიც არ იწყება რიცხვი ითვლება სიმები. 2.1-ში დაწყებული პარამეტრის ტიპის ინფორმაცია მიუთითებს თუ არა მნიშვნელობა, როგორც სიმებიანი. თუ ღირებულება იწყება ორმაგი კოტიკით ( " ), სტრინგი განიმარტება როგორც C- ს, გაქცევის თანმიმდევრობას და ყველა.გთხოვთ გაითვალისწინოთ, რომ შელფის სწრაფი გამონათქვამები შეიძლება იყოს დაცული ჭურვი ინტერპრეტაციიდან.

GPL ლიცენზირებული მოდულები და სიმბოლიკა

ბირთვის 2.4.10, მოდულები უნდა ჰქონდეს ლიცენზიის სტრიქონი, განსაზღვრული MODULE_LICENSE () . რამდენიმე სტრიქონი აღიარებულია, როგორც GPL თავსებადი; ნებისმიერი სხვა სალიცენზიო სიტემით ან ლიცენზიის გარეშე ყველა საშუალებით, რომ მოდული განიხილება, როგორც საკუთრება.

თუ kernel მხარს უჭერს / proc / sys / kernel / tainted flag მაშინ insmod ან OR დაზიანებული დროშა "1" როდესაც დატვირთვის მოდულის გარეშე GPL ლიცენზია. გაფრთხილება გაიცემა, თუ კერნელი მხარს უჭერს დაბრკოლებას და მოდულის დატვირთვა ლიცენზიის გარეშე. გაფრთხილება ყოველთვის გაცემულია იმ მოდულებისათვის, რომლებსაც აქვთ MODULE_LICENSE (), რომელიც არ არის GPL თავსებადი, თუნდაც ხანდაზმული ბირთვებით, რომლებიც არ უჭერენ მხარს tainting. ეს ამცირებს გაფრთხილებებს, როდესაც ახალი მოდულები გამოიყენება ხანდაზმული ბირთვებით.

insmod -f (ძალა) რეჟიმში ან OR დაზიანებული დროშა "2" კერნებზე, რომლებიც ხელს უშლის დაბრკოლებას. ის ყოველთვის გასცემს გაფრთხილებას.

ზოგიერთი ბირთვი დეველოპერები ითხოვენ, რომ მათი კოდით ექსპორტირებული სიმბოლოები მხოლოდ GPL- ის კომპაქტურ ლიცენზიასთან ერთად უნდა იქნეს გამოყენებული. ეს სიმბოლოები ექსპორტირდება EXPORT_SYMBOL_GPL- ის ნაცვლად ჩვეულებრივი EXPORT_SYMBOL . GPL- ის მხოლოდ სიმბოლოები, რომლებიც ბირთვისა და სხვა მოდულების მიერ ექსპორტირდება, მხოლოდ GPL- ის თავსებადი ლიცენზიის მოდულებია, ამ სიმბოლოები / proc / ksyms- ში გამოჩნდება " GPLONLY_ "- ის პრეფიქსით. insmod იგნორირებას უკეთებს GPLONLY_ პრეფიქსის სიმბოლოებს GPL ლიცენზირებული მოდულის ჩატვირთვისას, ამიტომ მოდული მხოლოდ ჩვეულებრივი სიმბოლოების სახელს ეხება, პრეფიქსის გარეშე. GPL მხოლოდ სიმბოლოები არ არის ხელმისაწვდომი GPL- ის ლიცენზიის გარეშე მოდულისთვის, ეს მოიცავს მოდულებს, რომელთაც არ გააჩნიათ ლიცენზია.

Ksymoops დახმარება

Kernel- ის გამართვის დასახმარებლად Oops- ის მოდულების გამოყენებისას, insmod ნაგულისხმევებს kmsms- ზე რამდენიმე სიმბოლოს დასძინა, იხ. ეს სიმბოლოები იწყება __insmod_modulename_ . მოდულის შექმნა აუცილებელია სიმბოლოების უნიკალურია. ეს არის კანონიერი იმავე ობიექტის დატვირთვა, ვიდრე ერთზე მეტია სხვადასხვა მოდულის სახელები. ამჟამად განსაზღვრული სიმბოლოებია:

__insmod_modulename_Oobjectfile_Mmtime_Vversion

ობიექტის ფაილი არის ფაილის ფაილი, რომელიც ობიექტი იყო დატვირთული. ეს უზრუნველყოფს, რომ ksymoops შეიძლება შეესაბამებოდეს კოდი სწორი ობიექტი. mtime არის ბოლოს შეცვლილი timestamp რომ ფაილი hex, ნულოვანი თუ stat failed. ვერსია არის კერნელი ვერსია, რომელიც მოდული შედგენილია, -1 თუ ვერსია არ არის ხელმისაწვდომი. _O სიმბოლოს აქვს იგივე დაწყების მისამართი, როგორც მოდულის ჰედერი.

__insmod_modulename_Ssectionname_Llength

ეს სიმბოლო გამოჩნდება შერჩეული ELF სექციების დაწყებისას, ამჟამად .text, .rodata, .data, .bss და .sbss. ეს მხოლოდ ჩანს, თუ სექცია აქვს ნულოვანი ზომა. სექციის სახელი არის ELF სექციის სახელი, სიგრძე არის სიგრძე სექციაში ათობითი. ეს სიმბოლოები ხელს უწყობს ksymoops რუკების მისამართებს სექციები, როდესაც სიმბოლოები არ არის ხელმისაწვდომი.

__insmod_modulename_Ppersistent_filename

მხოლოდ შექმნილმა ინსმოდმა თუ მოდულს აქვს ერთი ან მეტი პარამეტრი, რომელიც დადგენილია, როგორც მუდმივი მონაცემები და ფაილის დამახსოვრებული მონაცემების შენახვა (იხილეთ -ე , ზემოთ).

სხვა პრობლემა დუბლირებისას ბირთვზე Oops in modules არის ის, რომ შინაარსი / proc / ksyms და / proc / მოდულები შეიძლება შეიცვალოს შორის Oops და როდესაც თქვენ დამუშავებას log ფაილი. ამ პრობლემის გადასაჭრელად, თუ დირექტორია / var / log / ksymoops არსებობს, მაშინ insmod და rmmod ავტომატურად დააკოპირებს / proc / ksyms და / proc / მოდულები / var / log / ksymoops- ის თარიღით `% +% Y% m % d% H% M% S`. სისტემურ ადმინისტრატორს შეუძლია გითხრათ ksymoops რომელიც Snapshot ფაილი გამოიყენოს, როდესაც გამართვის Oops. ავტომატური ასლის გამორთვა არ არის. თუ არ გვინდა, რომ მოხდეს, არ შეიქმნას / var / log / ksymoops . თუ ეს დირექტორია არსებობს, ის უნდა ფლობდეს ძირას და იყოთ რეჟიმი 644 ან 600 და ამ სკრიპტს უნდა აწარმოებდით ყოველდღე ან იმდენად. ქვემოთ მოყვანილი სკრიპტი დამონტაჟებულია როგორც insmod_ksymoops_clean .

ძირითადი ინფორმაცია იცოდე

NAME

insmod - დატვირთვადი კერნელი მოდულის დაყენება

სინოფსისი

insmod [-fhkLmnpqrsSvVxXyYN] [-e persist_name ] [-o module_name ] [-O blob_name ] [-p პრეფიქსი ] მოდული [ სიმბოლო = მნიშვნელობა ...]