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

ชื่อ

depmod - จัดการคำอธิบายการพึ่งพาสำหรับโมดูลเคอร์เนลที่สามารถโหลดได้

สรุป

depmod [-aA] [-ehnqrsuvV] [-C configfile ] [-F kernelsyms ] [-b ตัว อ้างอิง ] [ forced_version ]
depmod [-enqrsuv] [-F kernelsyms ] module1.o module2.o ...

ลักษณะ

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

Depmod สร้างแฟ้มอ้างอิงขึ้นตาม "Makefile" โดยขึ้นอยู่กับสัญลักษณ์ที่พบในชุดของโมดูลที่กล่าวถึงในบรรทัดคำสั่งหรือจากไดเร็กทอรีที่ระบุในไฟล์คอนฟิกูเรชัน ไฟล์พึ่งพานี้ถูกใช้โดย modprobe เพื่อโหลดโมดูลหรือสแต็คโมดูลที่ถูกต้องโดยอัตโนมัติ

การใช้งานปกติของ depmod คือการรวมเส้น


/ sbin / depmod -a

ที่ไหนสักแห่งในไฟล์ rc ใน /etc/rc.d เพื่อให้มีการอ้างอิงโมดูลที่ถูกต้องจะพร้อมใช้งานทันทีหลังจากบูตระบบ โปรดทราบว่าตัวเลือก -a คือตอนนี้ไม่จำเป็น สำหรับวัตถุประสงค์ในการบู๊ตเครื่องตัวเลือก -q อาจเหมาะสมกว่าเนื่องจากทำให้ depmod เงียบเกี่ยวกับสัญลักษณ์ที่ยังไม่ได้รับการแก้ไข

นอกจากนี้ยังสามารถสร้างไฟล์พึ่งพาได้ทันทีหลังจากรวบรวมเคอร์เนลใหม่ ถ้าคุณทำ " depmod -a 2.2.99 " เมื่อคุณคอมไพล์ kernel 2.2.99 และโมดูลของมันเป็นครั้งแรกในขณะที่ยังคงทำงานเช่น 2.2.98 ไฟล์จะถูกสร้างขึ้นในตำแหน่งที่ถูกต้อง ในกรณีนี้การพึ่งพาเคอร์เนลจะไม่ได้รับการรับประกันว่าถูกต้อง ดูตัวเลือก -F , -C และ -b ด้านบนสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการจัดการปัญหานี้

ในขณะที่สร้างความสัมพันธ์ระหว่างโมดูลและสัญลักษณ์ที่ส่งออกโดยโมดูลอื่น ๆ depmod ไม่พิจารณาสถานะ GPL ของโมดูลหรือสัญลักษณ์ที่ส่งออก นั่นคือ depmod จะไม่ทำเครื่องหมายข้อผิดพลาดหากโมดูลที่ไม่มีสัญญาอนุญาตที่ใช้ร่วมกับ GPL หมายถึงสัญลักษณ์เฉพาะของ GPL (EXPORT_SYMBOL_GPL ในเคอร์เนล) อย่างไรก็ตาม insmod จะปฏิเสธที่จะแก้ไขเฉพาะสัญลักษณ์ GPL สำหรับโมดูลที่ไม่ใช่ GPL ดังนั้นภาระที่แท้จริงจะล้มเหลว

ตัวเลือก

-a , - all

ค้นหาโมดูลในไดเร็กทอรีทั้งหมดที่ระบุในไฟล์การกำหนดค่า /etc/modules.conf (optional)

-A , - กระพือ

เปรียบเทียบ timestamps ของไฟล์และถ้าจำเป็นให้ทำเหมือน depmod -a ตัวเลือกนี้จะอัปเดตไฟล์การอ้างอิงเท่านั้นหากมีการเปลี่ยนแปลงอะไร

-e , --erryms

แสดงสัญลักษณ์ที่ยังไม่ได้แก้ไขทั้งหมดสำหรับแต่ละโมดูล

-h , --help

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

-n , --show

เขียนไฟล์อ้างอิงบน stdout แทนใน / lib / modules tree

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

บอก depmod ให้เงียบและไม่บ่นเกี่ยวกับสัญลักษณ์ที่หายไป

- r , - ร่อง

ผู้ใช้บางรายคอมไพล์โมดูลภายใต้ userid ที่ไม่ใช่ root จากนั้นติดตั้งโมดูลเป็น root กระบวนการนี้สามารถปล่อยให้โมดูลที่เป็นของ userid ที่ไม่ใช่ root ได้แม้ว่าไดเรกทอรี root จะเป็นของ root ก็ตาม หากผู้ใช้ที่ไม่ใช่ root ถูกบุกรุกผู้บุกรุกสามารถเขียนทับโมดูลที่มีอยู่ซึ่งเป็นของ userid และใช้การเปิดรับนี้เพื่อบูตระบบได้สูงสุด

โดยค่าเริ่มต้น modutils จะปฏิเสธความพยายามที่จะใช้โมดูลที่ไม่ได้เป็นของ root การระบุ -r จะปราบปรามข้อผิดพลาดและอนุญาตให้ root โหลดโมดูลที่ไม่ได้เป็นของ root

การใช้ -r คือการรักษาความปลอดภัยที่สำคัญและไม่แนะนำให้ใช้

-s , --syslog

เขียนข้อความแสดงข้อผิดพลาดทั้งหมดผ่าน daemon syslog แทน stderr

-u , - แก้ไขข้อผิดพลาด

depmod 2.4 ไม่ได้กำหนดรหัสส่งคืนเมื่อมีสัญลักษณ์ที่ยังไม่ได้แก้ไข รุ่นใหญ่ต่อไปของ modutils (2.5) จะกำหนดรหัสการส่งคืนสำหรับสัญลักษณ์ที่ยังไม่ได้แก้ไข บางส่วนของการแจกจ่ายต้องการรหัสย้อนกลับที่ไม่ใช่ศูนย์ใน modutils 2.4 แต่การเปลี่ยนแปลงดังกล่าวอาจทำให้เกิดปัญหากับผู้ใช้ที่คาดหวังถึงพฤติกรรมเก่า ถ้าคุณต้องการรหัสส่งคืนที่ไม่ใช่ศูนย์ใน depmod 2.4 ให้ระบุ -u depmod 2.5 จะละเว้นธง -u โดยอัตโนมัติ และจะให้รหัสการส่งคืนที่ไม่ใช่ศูนย์สำหรับสัญลักษณ์ที่ยังไม่ได้รับการแก้ไข

-v , - verbose

แสดงชื่อของแต่ละโมดูลขณะที่กำลังดำเนินการ

-V , --version

แสดงรุ่นของ depmod

ตัวเลือกต่อไปนี้มีประโยชน์สำหรับผู้ที่จัดการการแจกแจง:

-b ไดเรกทอรีย่อย - based based

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

-C configfile , - configfile config

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

เมื่อตัวแปรสภาพแวดล้อม

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

-F kernelsyms , - kernelsyms ไฟล์

เมื่อสร้างไฟล์พึ่งพาสำหรับเคอร์เนลอื่นนอกเหนือจากเคอร์เนลที่กำลังทำงานอยู่เป็นสิ่งสำคัญที่ depmod ใช้ชุดสัญลักษณ์เคอร์เนลที่ถูกต้องเพื่อแก้ไขการอ้างอิงเคอร์เนลในแต่ละโมดูล สัญลักษณ์เหล่านี้สามารถเป็นสำเนาของ System.map จากเคอร์เนลอื่นหรือสำเนาของผลลัพธ์จาก / proc / ksyms ถ้าเคอร์เนลของคุณใช้สัญลักษณ์ที่มี versioned อยู่ให้ใช้สำเนาของผลลัพธ์ของ / proc / ksyms เนื่องจากไฟล์ดังกล่าวมีสัญลักษณ์สัญลักษณ์เคอร์เนลเป็นสัญลักษณ์ อย่างไรก็ตามคุณสามารถใช้ System.map แม้จะมีสัญลักษณ์ versioned

องค์ประกอบ

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

กลยุทธ์

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

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

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

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

lsmod (8), ksyms (8)

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