Modprobe - คำสั่ง Linux - คำสั่ง Unix

ชื่อ

modprobe - การจัดการระดับสูงของโมดูลที่สามารถโหลดได้

สรุป

โมดูล modprobe [-adnqv] [-C config ] [สัญลักษณ์ = มูลค่า ... ]
modprobe [-adnqv] [-C config ] [-t ชนิด ] รูปแบบ
modprobe -l [-C config ] [-t ชนิด ] รูปแบบ
modprobe -c [-C config ]
modprobe -r [-dnv] [-C config ] [โมดูล ... ]
modprobe -Vh

ตัวเลือก

-a , - all

โหลดโมดูลที่ตรงกัน ทั้งหมด แทนการหยุดหลังจากการโหลดสำเร็จครั้งแรก

-c , --showconfig

แสดงการกำหนดค่าปัจจุบันที่ใช้อยู่

-C , --config config

ใช้ไฟล์ config แทน (optional) /etc/modules.conf เพื่อระบุการตั้งค่า ตัวแปรสภาพแวดล้อม MODULECONF สามารถใช้เพื่อเลือก (และแทนที่) ไฟล์การกำหนดค่าที่แตกต่างจากไฟล์เริ่มต้น /etc/modules.conf (หรือ /etc/conf.modules (เลิกใช้งาน))

เมื่อตั้งค่าตัวแปร environment UNAME_MACHINE แล้ว modutils จะใช้ค่าแทนฟิลด์ machine จาก unysame () syscall นี่คือส่วนใหญ่ของการใช้เมื่อคุณกำลังรวบรวมโมดูล 64 บิตในพื้นที่ผู้ใช้ 32 บิตหรือในทางกลับกันตั้ง UNAME_MACHINE ให้เป็นประเภทของโมดูล modutils ปัจจุบันไม่สนับสนุนโหมดการสร้างข้ามเต็มสำหรับโมดูล แต่จะ จำกัด การเลือกใช้สถาปัตยกรรมโฮสต์ไว้ระหว่าง 32 และ 64 บิต

-d , --debug

แสดงข้อมูลเกี่ยวกับการแสดงภายในของสแต็คโมดูล

-h , --help

แสดงสรุปตัวเลือกและออกจากระบบทันที

-k , --autoclean

ตั้ง 'autoclean' ในโมดูลที่โหลด ใช้โดยเคอร์เนลเมื่อเรียกใช้ modprobe เพื่อตอบสนองคุณลักษณะที่ขาดหาย (จัดให้เป็นโมดูล) ตัวเลือก -q โดยนัยคือ -k ตัวเลือกเหล่านี้จะถูกส่งไปที่ insmod โดยอัตโนมัติ

-l , --list

แสดงโมดูลที่ตรงกัน

-n , --show

ไม่ได้ดำเนินการจริงเพียงแค่แสดงสิ่งที่จะทำได้

-q , - เงียบสงบ

อย่าบ่นเกี่ยวกับ insmod ล้มเหลวในการติดตั้งโมดูล ดำเนินการต่อตามปกติ แต่เงียบด้วยความเป็นไปได้อื่น ๆ สำหรับ modprobe เพื่อทดสอบ ตัวเลือกนี้จะถูกส่งไปที่ insmod โดยอัตโนมัติ

-r , --remove

เอาโมดูล (stacks) หรือ autoclean ขึ้นอยู่กับว่ามีโมดูลใด ๆ ที่กล่าวถึงในบรรทัดคำสั่ง

-s , --syslog

รายงานผ่านทาง syslog แทน stderr ตัวเลือกนี้จะถูกส่งไปที่ insmod โดยอัตโนมัติ

-t moduletype ; - typetype type

พิจารณาเฉพาะโมดูลประเภทนี้เท่านั้น modprobe จะมองเฉพาะโมดูลที่มีเส้นทางไดเรกทอรีว่า " / moduletype / " moduletype สามารถรวมชื่อไดเรกทอรีได้มากกว่าหนึ่งชื่อเช่น " -t drivers / net " จะแสดงรายการโมดูลใน xxx / drivers / net / และไดเร็กทอรีย่อย

-v , --verbose

พิมพ์คำสั่งทั้งหมดตามที่ดำเนินการ

-V, --version

แสดงเวอร์ชันของ modprobe

บันทึก:

ชื่อโมดูลต้องไม่มีพา ธ (ไม่มี '/') และจะต้องไม่มีเครื่องหมาย '.o' ตัวอย่างเช่น slip เป็นชื่อโมดูลที่ถูกต้องสำหรับ modprobe , /lib/modules/2.2.19/net/slip และ slip.o ไม่ถูกต้อง นี้ใช้กับบรรทัดคำสั่งและรายการใน config

รายละเอียด

modprobe และโปรแกรมอรรถประโยชน์ depmod มีวัตถุประสงค์เพื่อทำให้ Linux modular kernel สามารถจัดการได้ดียิ่งขึ้นสำหรับผู้ใช้ผู้ดูแลระบบและผู้ดูแลระบบการจัดจำหน่ายทั้งหมด

Modprobe ใช้ไฟล์พึ่งพา "Makefile" เหมือนไฟล์ที่สร้างโดย depmod เพื่อโหลดโมดูลที่เกี่ยวข้องโดยอัตโนมัติจากชุดของโมดูลที่มีอยู่ในโครงสร้างไดเรกทอรีที่กำหนดไว้ล่วงหน้า

Modprobe ใช้เพื่อโหลดโมดูลเดียวสแต็คโมดูลที่อ้างอิงหรือโมดูลทั้งหมดที่มีแท็กที่ระบุไว้

Modprobe จะโหลดโมดูลพื้นฐานทั้งหมดที่ต้องการในกองโมดูลโดยอัตโนมัติตามที่อธิบายไว้ในไฟล์ modules.dep หากการโหลดโมดูลใดโมดูลหนึ่งล้มเหลวสแต็คปัจจุบันของโมดูลที่โหลดในเซสชันปัจจุบันจะถูกยกเลิกการโหลดโดยอัตโนมัติ

Modprobe มีสองวิธีในการโหลดโมดูล วิธีหนึ่ง (โหมด probe) จะพยายามโหลดโมดูลออกจากรายการ (กำหนดโดย รูปแบบ ) Modprobe จะหยุดโหลดทันทีที่โมดูลโหลดสำเร็จ นี้สามารถใช้ในการ autoload ไดรเวอร์ Ethernet หนึ่งออกจากรายการ
modprobe วิธีอื่นสามารถใช้คือการโหลดโมดูล ทั้งหมด จากรายการ ดู ตัวอย่าง ด้านล่าง

ด้วยตัวเลือก -r , modprobe จะยกเลิกการโหลดกองโมดูลโดยอัตโนมัติคล้ายกับวิธี " rmmod-r " ที่ทำ โปรดทราบว่าการใช้เพียง " modprobe -r " จะทำความสะอาดโมดูลที่ไม่ได้ใช้ autoloaded และยังดำเนินการคำสั่งก่อนและหลังการลบในไฟล์การกำหนดค่า /etc/modules.conf

การรวมตัวเลือก -l และ -t แสดงรายการโมดูลทั้งหมดที่ใช้ได้ในบางประเภท

ตัวเลือก -c จะพิมพ์การกำหนดค่าที่ใช้อยู่ (ค่าดีฟอลต์ + ไฟล์กำหนดค่า)

การกำหนดค่า

ลักษณะการทำงานของ modprobe (และ depmod ) สามารถแก้ไขได้โดยการกำหนดค่าไฟล์ (optional) /etc/modules.conf
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่ไฟล์นี้สามารถมีได้เช่นเดียวกับการกำหนดค่าเริ่มต้นที่ใช้โดย depmod และ modprobe ดู modules.conf (5)

โปรดทราบว่าคำสั่งก่อนและหลังการถอดถอนจะ ไม่ ทำงานถ้าโมดูลเป็น "autocleaned" โดย kerneld! ค้นหาการสนับสนุนโมดูลสำหรับเก็บข้อมูลแบบถาวรต่อไปแทน
ถ้าคุณต้องการใช้คุณลักษณะก่อนและหลังการติดตั้งคุณจะต้องปิด autoclean สำหรับ kerneld แทนที่จะใส่ข้อมูลบางอย่างเช่นบรรทัดต่อไปนี้ใน crontab ของคุณ (ซึ่งใช้สำหรับระบบ kmod ด้วย) เพื่อทำ autoclean ทุกๆ 2 นาที :

* / 2 * * * * ทดสอบ -f / proc / modules && / sbin / modprobe -r

กลยุทธ์

ความคิดคือว่า modprobe จะดูครั้งแรกในไดเร็กทอรีที่มีโมดูลที่คอมไพล์ไว้สำหรับเคอร์เนลในปัจจุบัน หากไม่พบโมดูลนี้ modprobe จะดูในไดเร็กทอรีที่พบในเวอร์ชันเคอร์เนล (เช่น 2.0, 2.2) ถ้าโมดูลยังคงพบ modprobe จะค้นหาในไดเร็กทอรีที่มีโมดูลสำหรับการเปิดใช้งานดีฟอลต์และอื่น ๆ

เมื่อคุณติดตั้งลินุกซ์ใหม่โมดูลควรถูกย้ายไปยังไดเร็กทอรีที่เกี่ยวข้องกับการเปิดตัว (และเวอร์ชัน) ของเคอร์เนลที่คุณกำลังติดตั้ง จากนั้นคุณควรทำ symlink จากไดเร็กทอรีนี้ไปยังไดเร็กทอรี "default"

ทุกครั้งที่คุณคอมไพล์เคอร์เนลใหม่คำสั่ง " make modules_install " จะสร้างไดเร็กทอรีใหม่ แต่จะไม่เปลี่ยนลิงก์ "ดีฟอลต์"

เมื่อคุณได้รับโมดูลที่ไม่เกี่ยวกับการแจกจ่ายของเคอร์เนลคุณควรวางไว้ในไดเร็กทอรีที่ไม่ขึ้นกับรุ่นภายใต้ / lib / modules

นี่เป็นกลยุทธ์เริ่มต้นซึ่งสามารถแทนที่ได้ใน /etc/modules.conf

ตัวอย่าง

modprobe -t สุทธิ

โหลดโมดูลใดโมดูลหนึ่งที่เก็บอยู่ในไดเร็กทอรีที่ถูกแท็ก "net" แต่ละโมดูลจะถูกทดลองใช้จนกว่าจะประสบความสำเร็จ

modprobe -a -t boot

โมดูลทั้งหมดที่เก็บอยู่ในไดเรกทอรีที่ติดแท็ก "boot" จะถูกโหลด

modprobe slip

การดำเนินการนี้จะพยายามโหลดโมดูล slhc.o หากไม่ได้โหลดมาก่อนเนื่องจากโมดูลสลิปต้องมีฟังก์ชันการทำงานในโมดูล slhc การพึ่งพานี้จะอธิบายไว้ในไฟล์ modules.dep ที่สร้างโดยอัตโนมัติโดย depmod

modprobe -r slip

การดำเนินการนี้จะยกเลิกการโหลดโมดูลสลิป นอกจากนี้ยังจะยกเลิกการโหลดโมดูล slhc โดยอัตโนมัติเว้นเสียแต่ว่าจะถูกใช้โดยโมดูลอื่น ๆ ด้วย (เช่น ppp)

ดูสิ่งนี้ด้วย

depmod (8), lsmod (8), kerneld (8), ksyms (8), rmmod (8)

โหมดปลอดภัย

ถ้า uid ที่มีประสิทธิภาพไม่เท่ากับ uid จริงแล้ว modprobe จะถือว่าข้อมูลเข้าด้วยความสงสัยอย่างมาก พารามิเตอร์สุดท้ายจะถือว่าเป็นชื่อโมดูลเสมอแม้ว่าจะเริ่มต้นด้วย '-' ก็ตาม สามารถเลือกได้เพียงหนึ่งชื่อโมดูลและตัวเลือกของฟอร์ม "variable = value" จะไม่ได้รับอนุญาต ชื่อโมดูลจะถือว่าเป็นสตริงเสมอและจะไม่มีการขยายเมตาในเซฟโหมด อย่างไรก็ตามการขยาย meta ยังคงใช้กับข้อมูลที่อ่านจากไฟล์ config

euid อาจไม่เท่ากับ uid เมื่อถูกเรียกใช้ modprobe จาก kernel ซึ่งเป็น true สำหรับ kernels> = 2.4.0-test11 ในโลกอุดมคติ modprobe สามารถไว้ใจเคอร์เนลเพื่อส่งเฉพาะพารามิเตอร์ที่ถูกต้องไปยัง modprobe เท่านั้น อย่างไรก็ตามมีการใช้ประโยชน์จากรากอย่างน้อยหนึ่งแห่งเนื่องจากรหัสเคอร์เนลระดับสูงได้ส่งผ่านพารามิเตอร์ที่ไม่ผ่านการยืนยันจากผู้ใช้ไปยัง modprobe โดยตรง ดังนั้น modprobe ไม่ไว้วางใจการป้อนข้อมูลของเคอร์เนล

modprobe จะตั้งค่าโหมดปลอดภัยโดยอัตโนมัติเมื่อสภาพแวดล้อมประกอบด้วยเฉพาะสายอักขระเหล่านี้

HOME = / TERM = linux PATH = / sbin: / usr / sbin: / bin: / usr / bin

นี้จะตรวจสอบการประมวลผล modprobe จากเคอร์เนลบน kernel 2.2 ถึงแม้ว่าจะเป็น 2.4.0-test11 แม้ว่า uid == euid ซึ่งเป็นข้อมูลใน kernel ก่อนหน้านี้

คำสั่ง LOGGING

ถ้ามีไดเร็กทอรี / var / log / ksymoops และ modprobe จะรันพร้อมตัวเลือกที่สามารถโหลดหรือลบโมดูลได้ modprobe จะบันทึกคำสั่งและสถานะการส่งคืนใน / var / log / ksymoops / `date +% Y% m% d .log` ไม่มีสวิตช์เพื่อปิดการใช้งานการเข้าสู่ระบบอัตโนมัตินี้โดยอัตโนมัติหากคุณไม่ต้องการให้มีการใช้งานนี้อย่าสร้าง / var / log / ksymoops หากไดเรกทอรีนั้นมีอยู่ควรเป็นของ root และเป็นโหมด 644 หรือ 600 และคุณควรใช้สคริปต์ insmod_ksymoops_clean ทุกวันหรือมากกว่า

โปรแกรมอรรถประโยชน์ที่จำเป็น

depmod (8), insmod (8)

สำคัญ: ใช้คำสั่ง man ( % man ) เพื่อดูว่าคำสั่งถูกใช้อย่างไรในคอมพิวเตอร์เครื่องใดเครื่องหนึ่งของคุณ