ทั้งหมดเกี่ยวกับคำสั่ง Linux/Unix depmod
Depmod จัดการคำอธิบายการพึ่งพาสำหรับการโหลดได้ เคอร์เนล โมดูล
เรื่องย่อ
depmod [-aA] [-ehnqrsuvV] [-C configfile] [-NS kernelsyms] [-NS ไดเรกทอรีฐาน] [Forced_version] depmod [-enqrsuv] [-F kernelsyms] module1.o module2.o...
คำอธิบาย
NS depmod และ modprobe สาธารณูปโภคมีจุดมุ่งหมายเพื่อให้ ลินุกซ์ เคอร์เนลแบบแยกส่วนที่สามารถจัดการได้สำหรับผู้ใช้ ผู้ดูแลระบบ และผู้ดูแลการกระจาย
Depmod สร้างไฟล์การพึ่งพา "Makefile" ตามสัญลักษณ์ที่พบในชุดของโมดูลที่กล่าวถึงในบรรทัดคำสั่งหรือจากไดเร็กทอรีที่ระบุในไฟล์การกำหนดค่า ไฟล์การพึ่งพานี้ถูกใช้ในภายหลังโดย modprobe เพื่อโหลดโมดูลหรือกองโมดูลที่ถูกต้องโดยอัตโนมัติ

การใช้งานปกติของ depmod คือการรวมสาย
/sbin/depmod -a
ที่ไหนสักแห่งในไฟล์ rc ใน /etc/rc.dเพื่อให้การพึ่งพาโมดูลที่ถูกต้องจะพร้อมใช้งานทันทีหลังจากบูตระบบ หากคุณกำลังทำงานกับการกระจายแบบสมบูรณ์ของฟีเจอร์เพิ่มเติม เช่น Ubuntu, Debian หรือ Fedora สิ่งนี้จะจัดการให้คุณ โปรดทราบว่าตัวเลือก -NS ตอนนี้เป็นทางเลือก เพื่อวัตถุประสงค์ในการบูต ตัวเลือก -NS อาจเหมาะสมกว่าเพราะนั่นทำให้ depmod เงียบเกี่ยวกับสัญลักษณ์ที่ไม่ได้รับการแก้ไข หากคุณต้องการดูว่ากำลังเพิ่มอะไรอยู่ ให้ใช้ปุ่ม
นอกจากนี้ยังสามารถสร้างไฟล์การพึ่งพาได้ทันทีหลังจากรวบรวมเคอร์เนลใหม่ ถ้าคุณทำ "depmod -a 2.2.99" เมื่อคุณคอมไพล์เคอร์เนล 2.2.99 และโมดูลในครั้งแรก ขณะที่ยังทำงานอยู่ เช่น 2.2.98 ไฟล์จะถูกสร้างขึ้นในตำแหน่งที่ถูกต้อง อย่างไรก็ตาม ในกรณีนี้ การพึ่งพาเคอร์เนลจะไม่รับประกันว่าจะถูกต้อง ดูตัวเลือก -NS, -ค และ -NS ด้านบนสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการจัดการสิ่งนี้
ในขณะที่สร้างความสัมพันธ์ระหว่างโมดูลและสัญลักษณ์ที่ส่งออกโดยโมดูลอื่นdepmod ไม่พิจารณาสถานะ GPL ของโมดูลหรือสัญลักษณ์ที่ส่งออก นั่นคือ depmod จะไม่ตั้งค่าสถานะข้อผิดพลาดหากโมดูลที่ไม่มีใบอนุญาตที่เข้ากันได้กับ GPL อ้างถึงสัญลักษณ์ GPL เท่านั้น (EXPORT_SYMBOL_GPL ในเคอร์เนล) อย่างไรก็ตาม, insmod จะปฏิเสธที่จะแก้ไขสัญลักษณ์เฉพาะ GPL สำหรับโมดูลที่ไม่ใช่ GPL ดังนั้นการโหลดจริงจะล้มเหลว
ตัวเลือก
-NS, --ทั้งหมด
ค้นหาโมดูลในไดเร็กทอรีทั้งหมดที่ระบุในไฟล์คอนฟิกูเรชัน (ทางเลือก)/etc/modules.conf.
-NS, --เร็ว
เปรียบเทียบการประทับเวลาของไฟล์และถ้าจำเป็น ให้ทำตัวเหมือน depmod -a. ตัวเลือกนี้จะอัปเดตไฟล์การพึ่งพาหากมีการเปลี่ยนแปลง
-e, --ersyms
แสดงสัญลักษณ์ที่ยังไม่ได้แก้ไขทั้งหมดสำหรับแต่ละโมดูล
-ชม, --ช่วย
แสดงสรุปตัวเลือกและออกทันที
-NS, --แสดง
เขียนไฟล์การพึ่งพา stdout แทนใน /lib/modules ต้นไม้.
-NS, --เงียบ
บอก depmod ให้เงียบไว้และอย่าบ่นเกี่ยวกับสัญลักษณ์ที่หายไป
-NS, --ราก
ผู้ใช้บางคนคอมไพล์โมดูลภายใต้รหัสผู้ใช้ที่ไม่ใช่รูท แล้วติดตั้งโมดูลเป็นรูท กระบวนการนี้สามารถปล่อยให้โมดูลเป็นเจ้าของโดยรหัสผู้ใช้ที่ไม่ใช่รูท แม้ว่าไดเร็กทอรีโมดูลจะเป็นเจ้าของโดยรูท หากรหัสผู้ใช้ที่ไม่ใช่รูทถูกบุกรุก ผู้บุกรุกสามารถเขียนทับโมดูลที่มีอยู่ซึ่งเป็นของรหัสผู้ใช้นั้นและใช้การเปิดเผยนี้เพื่อบูตสแตรปจนถึงการเข้าถึงรูท
ตามค่าเริ่มต้น modutils จะปฏิเสธความพยายามในการใช้โมดูลที่ไม่ได้เป็นเจ้าของโดย root ระบุ-NS จะระงับข้อผิดพลาดและอนุญาตให้ root โหลดโมดูลที่ไม่ได้เป็นเจ้าของโดย root
การใช้ -r เป็นความเสี่ยงด้านความปลอดภัยที่สำคัญและไม่แนะนำ
-NS, --syslog
เขียนข้อความแสดงข้อผิดพลาดทั้งหมดผ่าน syslog daemon แทน stderr
-ยู, --unresolved-ข้อผิดพลาด
depmod 2.4 ไม่ได้ตั้งรหัสส่งคืนเมื่อมีสัญลักษณ์ใด ๆ ที่ไม่ได้รับการแก้ไข การแจกแจงบางอย่างต้องการโค้ดส่งคืนที่ไม่เป็นศูนย์ในโมดูล 2.4 แต่การเปลี่ยนแปลงนั้นอาจทำให้เกิดปัญหากับผู้ใช้ที่คาดหวังพฤติกรรมแบบเก่า หากคุณต้องการรหัสส่งคืนที่ไม่ใช่ศูนย์ใน depmod 2.4 ให้ระบุ -ยู. depmod 2.5 จะเพิกเฉยต่อ -ยู ตั้งค่าสถานะและจะให้รหัสส่งคืนที่ไม่ใช่ศูนย์เสมอสำหรับสัญลักษณ์ที่ยังไม่ได้แก้ไข
-v, --ละเอียด
แสดงชื่อของแต่ละโมดูลในขณะที่กำลังดำเนินการ
-V, --รุ่น
แสดงเวอร์ชันของ depmod.
การจัดการการจัดจำหน่าย
ตัวเลือกต่อไปนี้มีประโยชน์สำหรับผู้ที่จัดการการแจกจ่าย:
-NS ไดเรกทอรีฐาน, --basedir ไดเรกทอรีฐาน
ถ้าไดเร็กทอรีทรี /lib/modules ที่มีโครงสร้างย่อยของโมดูลถูกย้ายไปที่อื่นเพื่อจัดการโมดูลสำหรับสภาพแวดล้อมที่แตกต่างกัน -NS ตัวเลือกบอก depmod ว่าจะหาภาพที่ย้ายของ .ได้ที่ไหน /lib/modules ต้นไม้. ไฟล์อ้างอิงในไฟล์เอาต์พุต depmod ที่สร้างขึ้น modules.dep, จะไม่มี ไดเรกทอรีฐาน เส้นทาง. ซึ่งหมายความว่าเมื่อโครงสร้างไฟล์ถูกย้ายกลับจาก ไดเรกทอรีฐาน/lib/โมดูล เข้าไปข้างใน /lib/modules ในการแจกแจงครั้งสุดท้าย การอ้างอิงทั้งหมดจะถูกต้อง
-ค configfile, --config configfile
ใช้ไฟล์ configfile แทน /etc/modules.conf. ตัวแปรสภาพแวดล้อม MODULECONF สามารถใช้เพื่อเลือกไฟล์การกำหนดค่าอื่นจากค่าเริ่มต้น /etc/modules.conf (หรือ/etc/conf.modules (เลิกใช้แล้ว)).
เมื่อสภาพแวดล้อมแปรผัน UNAME_MACHINE ถูกตั้งค่าแล้ว modutils จะใช้ค่าของมันแทนฟิลด์เครื่องจาก uname() syscall นี่คือการใช้งานส่วนใหญ่เมื่อคุณรวบรวมโมดูล 64 บิตในพื้นที่ผู้ใช้ 32 บิตหรือในทางกลับกัน ให้ตั้งค่า UNAME_MACHINE กับประเภทของโมดูลที่ถูกสร้างขึ้น โมดูลปัจจุบันไม่รองรับโหมดการสร้างข้ามแบบเต็มสำหรับโมดูล โดยจำกัดให้เลือกระหว่างรุ่น 32 และ 64 บิตของสถาปัตยกรรมโฮสต์
-F kernelsyms,--filesyms kernelsyms
เมื่อสร้างไฟล์การพึ่งพาสำหรับเคอร์เนลที่แตกต่างจากเคอร์เนลที่รันอยู่ในปัจจุบัน สิ่งสำคัญคือ depmod ใช้ชุดสัญลักษณ์เคอร์เนลที่ถูกต้องเพื่อแก้ไขการอ้างอิงเคอร์เนลในแต่ละโมดูล สัญลักษณ์เหล่านี้อาจเป็นสำเนาของ System.map จากเคอร์เนลอื่นหรือสำเนาของเอาต์พุตจาก /proc/ksyms. หากเคอร์เนลของคุณใช้สัญลักษณ์ที่มีการกำหนดเวอร์ชัน ควรใช้สำเนาของ /proc/ksyms เอาต์พุต เนื่องจากไฟล์นั้นมีเวอร์ชันสัญลักษณ์ของสัญลักษณ์เคอร์เนล อย่างไรก็ตาม คุณสามารถใช้ a System.map แม้จะมีสัญลักษณ์รุ่น
การกำหนดค่า
พฤติกรรมของ depmod และ modprobe สามารถปรับได้โดยไฟล์การกำหนดค่า (ตัวเลือก)/etc/modules.conf. ดู modprobe(8) และ modules.conf(5) สำหรับคำอธิบายที่สมบูรณ์
กลยุทธ์
ทุกครั้งที่คุณคอมไพล์เคอร์เนลใหม่ คำสั่ง "ทำ modules_install" จะสร้างไดเร็กทอรีใหม่ แต่จะไม่เปลี่ยนค่าดีฟอลต์
เมื่อคุณได้รับโมดูลที่ไม่เกี่ยวข้องกับการแจกจ่ายเคอร์เนล คุณควรวางไว้ในไดเร็กทอรีที่ไม่ขึ้นกับเวอร์ชันภายใต้ /lib/modules.
นี่คือกลยุทธ์เริ่มต้น ซึ่งสามารถแทนที่ได้ใน /etc/modules.conf.
ใช้ ชายสั่งการ (% ชาย) เพื่อดูวิธีการใช้คำสั่งบนคอมพิวเตอร์เฉพาะของคุณ