Skip to main content

Semua Tentang Perintah Linux / Unix: insmod

sudo command not found fix in Linux (Debian 9 GNU/Linux ) (Mungkin 2025)

sudo command not found fix in Linux (Debian 9 GNU/Linux ) (Mungkin 2025)
Anonim

Perintah Linux / Unix insmod memasang modul boleh guna dalam kernel yang sedang dijalankan.insmod cuba menghubungkan modul ke dalam kernel yang dijalankan dengan menyelesaikan semua simbol dari jadual simbol yang dieksport oleh kernel.

Jika nama fail modul diberikan tanpa direktori atau sambungan,insmod akan mencari modul dalam beberapa direktori lalai biasa. Pembolehubah persekitaranMODPATH boleh digunakan untuk mengatasi lalai ini. Jika fail konfigurasi modul seperti/etc/modules.conf wujud, ia akan mengatasi laluan yang ditakrifkan dalamMODPATH.

Pembolehubah persekitaranMODULECONF juga boleh digunakan untuk memilih fail konfigurasi yang berbeza dari lalai/etc/modules.conf (atau/etc/conf.modules (tidak digunakan). Pembolehubah persekitaran ini akan mengatasi semua definisi di atas.

Apabila pembolehubah persekitaranUNAME_MACHINE ditetapkan, modutils akan menggunakan nilainya daripada medan mesin dari systall uname (). Ini terutamanya digunakan apabila anda menyusun modul 64-bit dalam ruang pengguna 32-bit atau sebaliknya, tetapkanUNAME_MACHINE kepada jenis modul. Modutils semasa tidak menyokong mod pembina silang penuh untuk modul, ia adalah terhad untuk memilih antara 32 dan 64-bit versi seni bina tuan rumah.

Pilihan

-e persist_name , --persist= persist_name

Menentukan mana-mana data berterusan untuk modul dibaca dari pada beban dan ditulis kepada apabila instansiasi modul ini diturunkan. Pilihan ini diabaikan secara diam-diam jika modul tidak mempunyai data berterusan. Data berterusan hanya dibaca olehinsmod jika pilihan ini hadir, secara lalaiinsmod tidak memproses data berterusan.

Sebagai bentuk ringkas,-e "" (rentetan kosong) ditafsirkan olehinsmod sebagai nilaipersistdir seperti yang ditakrifkan dalammodules.conf, diikuti dengan nama fail modul berkenaan dengan laluan carian modul yang ditemui dalam, tolak mana-mana jejak ".gz", ".o" atau ".mod". Jikamodules.conf menyatakan "persistdir ="(iaitu.persistdir adalah medan kosong) maka bentuk singkat ini diam-diam diabaikan. (Lihatmodules.conf (5).)

-f, --force

Siasat memuat modul walaupun versi kernel yang sedang berjalan dan versi kernel yang modulnya dikompilkan tidak sepadan. Ini hanya mengesahkan semakan versi kernel, ia tidak mempunyai kesan pada semakan nama simbol. Jika nama simbol dalam modul tidak sepadan dengan kernel maka tidak ada cara untuk memaksainsmod untuk memuatkan modul.

-h, - membantu

Paparkan ringkasan pilihan dan segera keluar.

-k, --autoclean

Tetapkan bendera automatik bersih pada modul. Bendera ini akan digunakan olehkerneld(8) untuk mengalih keluar modul yang belum digunakan dalam beberapa tempoh masa - biasanya satu minit.

-L, - kunci

Gunakankawanan(2) untuk mengelakkan beban serentak modul yang sama.

-m, --map

Output peta beban pada stdout, menjadikannya lebih mudah untuk debug modul sekiranya terjadi panik kernel.

-n, --tiada beban

Jalankan dummy, lakukan segala-galanya kecuali memuat modul ke dalam kernel. Jika diminta oleh-m atau-O, jangka masa akan menghasilkan fail peta atau gumpalan. Oleh kerana modul tidak dimuatkan, alamat beban kernel sebenar tidak diketahui jadi fail peta dan gumpalan didasarkan pada alamat beban sewenang-wenang 0x12340000.

-o modul_name , --name= modul_name

Secara jelas namanya modul, bukannya mendapatkan nama dari nama asas fail objek objek.

-O blob_name , --blob= blob_name

Simpan objek binari dalam blob_name . Hasilnya adalah gumpalan binari (tiada tajuk ELF) yang menunjukkan apa yang dimuatkan ke dalam kernel selepas manipulasi seksyen dan penempatan semula. Pilihan-m disyorkan untuk mendapatkan peta objek tersebut.

-p, --probe

Siasat modul untuk melihat apakah ia dapat dimuatkan dengan jayanya. Ini termasuk mencari fail objek dalam laluan modul, menyemak nombor versi, dan menyelesaikan simbol. Ia tidak memeriksa penempatan semula dan tidak menghasilkan fail peta atau gumpalan.

-P awalan , --pengesan semula= awalan

Pilihan ini boleh digunakan dengan modul versi untuk SMP atau kernel besar, kerana modul tersebut mempunyai awalan tambahan ditambah dalam nama simbol mereka. Jika kernel dibina dengan versi simbol kemudianinsmod akan secara automatik mengeluarkan awalan dari definisi "get_module_symbol" atau "inter_module_get", salah satunya mesti wujud dalam mana-mana kernel yang menyokong modul. Jika kernel tidak mempunyai versi simbol tetapi modul dibina dengan versi simbol maka pengguna mesti membekalkan-P.

-q, --senyap

Jangan cetak senarai sebarang simbol yang tidak dapat diselesaikan. Jangan mengadu tentang ketidakpadanan versi. Masalah ini hanya akan tercermin dalam status keluar dariinsmod.

-r, --root

Sesetengah pengguna menyusun modul di bawah userid bukan root kemudian memasang modul sebagai root. Proses ini boleh meninggalkan modul yang dimiliki oleh pengguna bukan root, walaupun direktori modul dimiliki oleh root. Jika pengguna tidak root dikompromi, penyusup boleh menimpa modul sedia ada yang dimiliki oleh pengguna tersebut dan menggunakan pendedahan ini untuk bootstrap sehingga akses root.

Secara lalai, modutils akan menolak cubaan menggunakan modul yang tidak dimiliki oleh root. Menentukan -r akan menukar cek dan membenarkan root memuat modul yang tidak dimiliki oleh root.

Catatan: Nilai lalai untuk pemeriksaan root boleh diubah apabila modutils dikonfigurasi.Penggunaan -r untuk mematikan pemeriksaan root atau menetapkan lalai kepada "tiada pemeriksaan root" pada masa konfigurasi adalah pendedahan keselamatan utama dan tidak disyorkan.

-s, --syslog

Output semuanya kepadasyslog(3) dan bukannya terminal.

-S, - malas

Tekan modul yang dimuatkan untuk dimilikikallsyms data, walaupun kernel tidak menyokongnya. Pilihan ini adalah untuk sistem kecil di mana kernel dimuatkan tanpakallsyms data tetapi modul terpilih perlukallsyms untuk debugging. Pilihan ini adalah lalai di Red Hat Linux.

-v, - kata

Berhati-hati.

-V, - pengalihan

Paparkan versiinsmod.

-X, --eksport; -x, --noexport

Lakukan dan jangan mengeksport semua simbol luaran modul, masing-masing. Lalai adalah untuk simbol yang akan dieksport. Pilihan ini hanya berkesan sekiranya modul tidak mengeksploitasi jadual simbol terkawalnya secara eksplisit, dan oleh itu tidak digunakan.

-Y, -; -y, --noksymoops

Lakukan dan jangan tambahksymoops simbol kepada nyenyak. Simbol-simbol ini digunakan olehksymoops untuk menyediakan debugging yang lebih baik jika terdapat Oops dalam modul ini. Lalai adalah untukksymoopssimbol yang akan ditakrifkan. Pilihan ini adalah bebas daripada-X/-x pilihan.

ksymoops simbol menambah kira-kira 260 bait setiap modul yang dimuatkan. Kecuali jika anda benar-benar kekurangan ruang kernel dan cuba mengurangkan ksyms ke saiz minimum, ambil lalai dan dapatkan lebih tepat Oops debugging.ksymoops simbol diperlukan untuk menyimpan data modul yang berterusan.

-N, - hanya angka sahaja

Hanya semak bahagian angka versi modul terhadap versi kernel, i.e. mengabaikan EXTRAVERSION apabila memutuskan jika modul kepunyaan kernel. Bendera ini ditetapkan secara automatik untuk kernel 2.5 dan seterusnya, ia adalah pilihan untuk biji awal.

Parameter Modul

Sesetengah modul menerima parameter beban masa untuk menyesuaikan operasi mereka. Parameter ini sering kali pelabuhan I / O dan nombor IRQ yang berbeza dari mesin ke mesin dan tidak dapat ditentukan dari perkakasan.

Dalam modul yang dibina untuk kernel siri 2.0, sebarang simbol penunjuk integer atau simbol boleh dianggap sebagai parameter dan diubah suai. Bermula dalam kernel siri 2.1, simbol ditandakan secara jelas sebagai parameter supaya hanya nilai tertentu boleh diubah. Selain itu, taip maklumat disediakan untuk menyemak nilai-nilai yang disediakan pada masa beban.

Dalam kes bilangan bulat, semua nilai mungkin dalam perpuluhan, oktaf atau heksadesimal a la C: 17, 021 atau 0x11. Unsur Array adalah urutan yang dipisahkan mengikut koma. Elemen boleh dilangkau dengan menghilangkan nilai.

Dalam modul siri 2.0, nilai yang tidak bermula dengan nombor dianggap sebagai rentetan. Bermula dalam 2.1, maklumat jenis parameter menunjukkan sama ada untuk menafsirkan nilai sebagai rentetan. Sekiranya nilai bermula dengan petikan berganda ('), rentetan ditakrifkan seperti dalam C, melarikan jujukan dan semua. Perhatikan bahawa dari petikan shell, petikan sendiri mungkin perlu dilindungi dari tafsiran shell.

Modul dan Simbol Berlesen GPL

Bermula dengan kernel 2.4.10, modul sepatutnya mempunyai rentetan lesen, yang ditentukan menggunakanMODULE_LICENSE (). Beberapa rentetan diiktiraf sebagai GPL yang serasi; apa-apa tali lesen lain atau tiada lesen sama sekali bermakna modul itu diperlakukan sebagai proprietari.

Jika kernel menyokong/ proc / sys / kernel / dicemari bendera kemudianinsmod akan ATAU bendera tercemar dengan '1' ketika memuat modul tanpa lesen GPL. Amaran dikeluarkan jika kernel menyokong tainting dan modul dimuat tanpa lesen. Amaran sentiasa dikeluarkan untuk modul yang mempunyaiMODULE_LICENSE () yang tidak kompatibel dengan GPL, walaupun pada kernel lama yang tidak menyokong tainting. Ini mengurangkan amaran apabila modutils baru digunakan pada kernel lama.

insmod -f mod (gaya) akan ATAU bendera tercemar dengan '2' pada kernel yang menyokong dicemari. Ia sentiasa mengeluarkan amaran.

Sesetengah pemaju kernel memerlukan simbol yang dieksport oleh kod mereka hanya boleh digunakan oleh modul dengan lesen yang sesuai GPL. Simbol-simbol ini dieksport olehEXPORT_SYMBOL_GPL bukannya normalEXPORT_SYMBOL. Simbol-simbol hanya GPL yang dieksport oleh kernel dan oleh modul lain hanya boleh dilihat dengan modul dengan lesen yang bersesuaian GPL, simbol-simbol ini muncul dalam/ proc / ksyms dengan awalan 'GPLONLY_'. insmod mengabaikannyaGPLONLY_ awalan pada simbol semasa memuatkan modul berlesen GPL jadi modul itu hanya merujuk kepada nama simbol biasa, tanpa awalan. Simbol hanya GPL tidak disediakan untuk modul tanpa lesen serasi GPL, ini termasuk modul tanpa lesen sama sekali.

Bantuan Ksymoops

Untuk membantu debugging kernel Oops apabila menggunakan modul,insmod lalai untuk menambah beberapa simbol kepada nyenyak, lihat-Y pilihan. Simbol-simbol ini bermula dengan__insmod_ modulename_ . The modulename diperlukan untuk membuat simbol yang unik. Ia adalah sah untuk memuat objek yang sama lebih daripada sekali di bawah nama modul yang berbeza. Pada masa ini, simbol yang ditakrifkan ialah:

__insmod_ modulename _ Oobjectfile _ Mmtime _ Versi

objectfile adalah nama fail yang dimuatkan oleh objek tersebut. Ini memastikan bahawa ksymoops boleh memadankan kod ke objek yang betul. mtime adalah timestamp terakhir diubah suai pada fail itu dalam hex, sifar jika stat gagal. versi adalah versi kernel yang modul disusun untuk, -1 jika tiada versi tersedia. The_O simbol mempunyai alamat permulaan yang sama sebagai header modul.

__insmod_ modulename _ Ssectionname _ Llength

Simbol ini muncul pada permulaan bahagian ELF yang dipilih, pada masa ini .text, .rodata, .data, .bs dan .sbss. Ia hanya muncul jika seksyen mempunyai saiz bukan sifar. bahagian seksyen adalah nama bahagian ELF, panjang adalah panjang bahagian dalam perpuluhan. Simbol-simbol ini membantu alamat peta ksymoops ke seksyen apabila tiada simbol tersedia.

__insmod_ modulename _Ppersistent_ nama fail

Hanya dibuat olehinsmod jika modul mempunyai satu atau lebih parameter yang ditandakan sebagai data berterusan dan nama fail untuk menyimpan data berterusan (lihat-e, di atas) boleh didapati.

Masalah lain dengan kernel debugging Oops dalam modul ialah kandungan / proc / ksma dan / proc / modul boleh berubah antara Oops dan apabila anda memproses fail log. Untuk membantu mengatasi masalah ini, jika direktori / var / log / ksymoops wujud kemudianinsmod danrmmod secara automatik akan menyalin / proc / ksyms dan / proc / modul kepada / var / log / ksymoops dengan awalan `tarikh +% Y% m% d% H% M% S`. Pentadbir sistem boleh memberitahu ksymoops yang fail snapshot digunakan semasa debug Oops. Tiada suis untuk melumpuhkan salinan automatik ini. Jika anda tidak mahu ia berlaku, jangan buat / var / log / ksymoops. Jika direktori itu ada, ia harus dimiliki oleh root dan menjadi 644 atau 600 mod dan anda harus menjalankan skrip ini setiap hari atau lebih. Skrip di bawah ini dipasang sebagai insmod_ksymoops_clean.

#! / bin / sh # Padamkan nyenyak dan modul yang tidak dapat diakses dalam 2 hari jika -d ​​/ var / log / ksymoops kemudian set -e # Pastikan selalu ada sekurang-kurangnya satu versi d = `tarikh +% Y% m% d% H% M% s` cp -a / proc / ksyms /var/log/ksymoops/${d}.ksyms cp -a / proc / modules /var/log/ksymoops/${d}.modules cari / var / log / ksymoops -type f -atime +2 -exec rm {} ; fi

Maklumat Asas Tahu

NAME

insmod - memasang modul kernel boleh dimuatkan

SINOPSIS

insmod -fhkLmnpqrsSvVxXyYN -e persist_name -o modul_name -O blob_name -P awalan modul simbol= nilai …