คำถามติดแท็ก drivers

ไดรเวอร์อุปกรณ์หรือซอฟต์แวร์ไดรเวอร์เป็นโปรแกรมคอมพิวเตอร์ที่อนุญาตให้โปรแกรมคอมพิวเตอร์ระดับสูงกว่าสามารถโต้ตอบกับอุปกรณ์ฮาร์ดแวร์

12
ปรัชญาของการล่าช้าในการเขียนข้อมูลลงดิสก์คืออะไร
ใน Linux การดำเนินการคำสั่งที่เสร็จสิ้นแล้วเช่นcpหรือddไม่ได้หมายความว่าข้อมูลถูกเขียนไปยังอุปกรณ์ หนึ่งมีการยกตัวอย่างเช่นการโทรsyncหรือเรียกว่า "Safely Remove" หรือ "Eject" ฟังก์ชั่นบนไดรฟ์ ปรัชญาของวิธีการดังกล่าวคืออะไร? เหตุใดข้อมูลจึงไม่ถูกเขียนพร้อมกัน ไม่มีอันตรายที่การเขียนจะล้มเหลวเนื่องจากข้อผิดพลาด I / O หรือไม่?

3
ความแตกต่างระหว่างพื้นที่ผู้ใช้และพื้นที่เคอร์เนลคืออะไร?
พื้นที่เคอร์เนลถูกใช้เมื่อเคอร์เนลกำลังทำงานในนามของโปรแกรมผู้ใช้เช่นการเรียกระบบหรือไม่ หรือเป็นพื้นที่ที่อยู่สำหรับเธรดเคอร์เนลทั้งหมด (เช่นตัวกำหนดตารางเวลา)? หากเป็นโปรแกรมแรกแสดงว่าโปรแกรมผู้ใช้ปกติไม่สามารถมีหน่วยความจำเกิน 3GB ได้ (หากแบ่งเป็น 3GB + 1GB) นอกจากนี้ในกรณีนั้นเคอร์เนลสามารถใช้หน่วยความจำสูงได้อย่างไรเนื่องจากที่อยู่หน่วยความจำเสมือนใดที่หน้าเว็บจากหน่วยความจำสูงจะถูกแมปเนื่องจากพื้นที่เคอร์เนล 1GB จะถูกแมปอย่างมีเหตุผล
72 linux  kernel  drivers 

6
ความแตกต่างระหว่างไดรเวอร์เคอร์เนลและโมดูลเคอร์เนลคืออะไร?
เมื่อฉันทำlspci -kบน Kubuntu ด้วยเคอร์เนล 3.2.0-29-generic ฉันสามารถเห็นสิ่งนี้: 01:00.0 VGA compatible controller: NVIDIA Corporation G86 [Quadro NVS 290] (rev a1) Subsystem: NVIDIA Corporation Device 0492 Kernel driver in use: nvidia Kernel modules: nvidia_current, nouveau, nvidiafb มีคนขับเคอร์เนลnvidiaและโมดูลเคอร์เนลnvidia_current, ,nouveaunvidiafb ตอนนี้ฉันสงสัยว่าอะไรคือความแตกต่างระหว่างไดรเวอร์เคอร์เนลและโมดูลเคอร์เนล

4
การย้าย linux ติดตั้งไปยังคอมพิวเตอร์เครื่องใหม่
ฉันรู้ว่าในบางกรณีอาจเป็นการยากที่จะย้ายการติดตั้ง Windows จากคอมพิวเตอร์เครื่องหนึ่งไปยังอีกเครื่องหนึ่ง (ย้ายฮาร์ดไดรฟ์ทางกายภาพ) แต่วิธีการนั้นทำงานบน linux ได้อย่างไร โมดูลไดรเวอร์ส่วนใหญ่ไม่โหลดเมื่อทำการบูทหรือไม่ ดังนั้นในทางทฤษฎีแล้วมันจะเป็นเรื่องยุ่งยากขนาดใหญ่หรือไม่? เห็นได้ชัดว่าการกำหนดค่า xorg จะเปลี่ยนไปและไดรเวอร์ ATI ที่เป็นกรรมสิทธิ์และสิ่งนั้นจะต้องมีการคอมไพล์ใหม่ มีอะไรมากกว่าที่ฉันคิด สมมติว่าคอมพิวเตอร์ 2 เครื่องนั้นมาจากยุคเดียวกันนั่นคือทั้ง i7s และฮาร์ดแวร์แตกต่างกันเล็กน้อย ปรับปรุง: ขอบคุณสำหรับคำตอบ นี่เป็นส่วนใหญ่สำหรับความอยากรู้ของฉันเอง ฉันมีระบบลินุกซ์ของฉันและทำงานในที่ทำงาน แต่ในที่สุดฉันต้องการย้ายไปยังคอมพิวเตอร์ที่ฉันสามารถใช้การ์ดวิดีโอคู่เข้าเพื่อให้ฉันสามารถเรียกใช้จอภาพมากกว่า 2 จอ แต่ไม่มีเวลาเร็ว ๆ นี้

3
เคอร์เนลมีฟังก์ชั่น main () หรือไม่? [ปิด]
ฉันกำลังเรียนรู้ไดรเวอร์อุปกรณ์และการเขียนโปรแกรมเคอร์เนล ตามหนังสือของ Jonathan Corbet ไม่มีmain()ฟังก์ชั่นในไดรเวอร์อุปกรณ์ ดังนั้นฉันสองคำถาม: ทำไมเราไม่ต้องการmain()ฟังก์ชั่นในไดรเวอร์อุปกรณ์? เคอร์เนลมีmain()ฟังก์ชั่นหรือไม่? มีคนอธิบายเรื่องนี้กับฉันได้ไหม

4
จะค้นหาไดรเวอร์ (โมดูล) ที่เกี่ยวข้องกับอุปกรณ์บน Linux ได้อย่างไร
บน Linux ได้รับ: อุปกรณ์เช่น/dev/sda, และตัวเลขหลักและรองของตนตัวอย่างเช่น8, 0, ฉันจะรู้ได้อย่างไรว่าโมดูล / ไดรเวอร์ใดที่ "ขับ" หรือไม่ ฉันสามารถขุด/sysหรือ/procค้นพบสิ่งนั้นได้หรือไม่?

2
ความแตกต่างระหว่าง ioctl (), unlocked_ioctl () และ compat_ioctl () คืออะไร?
จะผ่านซอร์สโค้ด linux 2.6.36 ที่lxr.linux.noฉันไม่สามารถหาioctl()วิธีการfile_operationsได้ แต่ผมพบว่าสองสายใหม่และunlocked_ioctl() compat_ioctl()ความแตกต่างระหว่างคืออะไรioctl(), unlocked_ioctl()และcompat_ioctl()?
37 linux  drivers 


7
จะปิด X Server ได้อย่างไรเพื่อหลีกเลี่ยงข้อผิดพลาดขณะอัพเดทไดรเวอร์ nVidia
ฉันพยายามอัปเดตไดรเวอร์ nVidia ของฉัน แต่ฉันพบข้อผิดพลาดเมื่อฉันติดตั้งไดรเวอร์ ดูข้อผิดพลาด: ข้อผิดพลาด: ดูเหมือนว่าคุณกำลังใช้งานเซิร์ฟเวอร์ X อยู่ โปรดออกจาก X ก่อน การติดตั้ง สำหรับรายละเอียดเพิ่มเติมโปรดดูในส่วนการติดตั้ง NVIDIA DRIVER ใน README มีอยู่ในไดรเวอร์ Linux หน้าดาวน์โหลดที่ www.nvidia.com หมายเหตุ: ฉันลองทำตามคำแนะนำโดยพิมพ์init 3แต่ยังไม่มีอะไรเปลี่ยนแปลง .. จะปิดเซิร์ฟเวอร์ X ได้อย่างไร? ดังนั้นฉันสามารถอัปเดตไดรเวอร์

1
วิธีกำหนดไดรเวอร์ USB ให้กับอุปกรณ์
คำถามนี้เป็นสองเท่า: ขั้นแรกให้คุณถอดไดรฟ์เวอร์จากอุปกรณ์ USB ด้วยตนเองและต่อกับไดรฟเวอร์อื่นได้อย่างไร ตัวอย่างเช่นฉันมีอุปกรณ์ที่เมื่อเชื่อมต่อโดยอัตโนมัติจะใช้ไดรเวอร์เก็บข้อมูล usb เอาท์พุท usbview Vendor Id: xxxx Product Id: xxxx ... Number of Interfaces: 2 Interface Number: 0 Name: usb-storage Number of Endpoints: 2 ... Interface Number: 1 Name: (none) Number of Endpoints: 2 ... ฉันไม่ต้องการใช้ไดรเวอร์เก็บข้อมูล usb ดังนั้นในแอปพลิเคชันของฉันฉันใช้libusbห้องสมุดเพื่อถอดไดรเวอร์เก็บข้อมูล usb จากนั้นฉันอ้างสิทธิ์อินเทอร์เฟซ ฉันสามารถส่งข้อมูลไปยังและจากแอปพลิเคชันที่ทำงานบนอุปกรณ์ USB ของฉันและบนระบบโฮสต์ Linux ของฉัน คุณถอดไดรเวอร์ออกด้วยตนเองนอกแอพพลิเคชั่นอย่างไร …


5
การถ่ายโอนข้อมูลแบบ USB เป็น USB ระหว่าง Linux OS สองเครื่องนั้นเป็นไปได้หรือไม่?
ฉันต้องการสร้างระบบการถ่ายโอนข้อมูลแบบ USB เป็น USB ใน Linux (ควรเป็น Ubuntu) สำหรับสิ่งนี้ฉันต้องการใช้ฮาร์ดแวร์หรือสวิทช์ภายนอก ( ยกเว้นสายเคเบิลนี้ ) มันจะเหมือนกับการติดตั้งไดรฟ์ USB เข้ากับระบบ แต่ในสถานการณ์นี้หนึ่งในระบบ Linux จะถูกติดตั้งบนอีกระบบหนึ่ง ฉันจะสร้างสิ่งนี้ได้อย่างไร มีเคอร์เนลโมดูลใดบ้างให้ประสบการณ์ของฉันกับการเขียนโปรแกรมเคอร์เนลเป็นพื้นฐานมาก?

1
วิธีการใช้ไดรเวอร์เคอร์เนล Linux อินเตอร์เฟส bind / unbind สำหรับอุปกรณ์ USB-HID
พื้นหลังแรก ฉันกำลังพัฒนาไดรเวอร์สำหรับอุปกรณ์แผงเกม Logitech มันเป็นคีย์บอร์ดที่มีหน้าจออยู่ ไดรเวอร์ทำงานได้เป็นอย่างดี แต่โดยค่าเริ่มต้นอุปกรณ์จะถูกจัดการโดย HID เพื่อป้องกันไม่ให้ HID ทำการยึดอุปกรณ์ก่อนไดร์เวอร์ฉันสามารถขึ้นบัญชีดำใน hid-core.c ใช้งานได้ แต่ไม่ใช่ทางออกที่ดีที่สุดเนื่องจากฉันทำงานกับคนหลายคนและเราทุกคนต้องทำการปะโมดูล HID ของเราซึ่งกำลังเป็นที่น่าเบื่อโดยเฉพาะอย่างยิ่งมันมักเกี่ยวข้องกับการสร้าง initramfs ขึ้นมาใหม่ ฉันได้วิจัยบางอย่างเกี่ยวกับปัญหานี้และผมพบว่าโพสต์รายชื่อผู้รับจดหมายซึ่งท้ายที่สุดก็พาฉันไปที่บทความนี้ใน LWN สิ่งนี้อธิบายกลไกสำหรับการผูกอุปกรณ์กับไดรเวอร์เฉพาะตอนรันไทม์ ดูเหมือนว่าสิ่งที่ฉันต้องการ ดังนั้นฉันจึงพยายาม ฉันสามารถปลดคีย์บอร์ดจาก HID ได้ สิ่งนี้ได้ผลและเป็นไปตามที่คาดไว้ฉันไม่สามารถพิมพ์ได้อีกต่อไป แต่เมื่อฉันพยายามที่จะผูกไว้กับไดรเวอร์ของเราฉันได้รับ "ข้อผิดพลาด: ไม่มีอุปกรณ์ดังกล่าว" และการดำเนินการล้มเหลว ดังนั้นคำถามของฉันคือฉันจะใช้การดำเนินการเคอร์เนลผูก / unbind เพื่อทำซ้ำสิ่งที่เกิดขึ้นเมื่อคุณขึ้นบัญชีดำอุปกรณ์ HID ใน hid-core และจัดหาไดรเวอร์ของคุณเอง? - นั่นคือ - เพื่อแทนที่ความต้องการในการแก้ไข hid-core.c ตลอดเวลาหรือไม่ แหล่งที่มาของไดรเวอร์ของเราอยู่ที่นี่: https://github.com/ali1234/lg4l

3
เหตุใด Intel รุ่น 6 ตระกูลบางรุ่น (Core 2, Pentium M) จึงไม่รองรับโดย intel_idle
ฉันได้ปรับเคอร์เนล Linux สำหรับโปรเซสเซอร์ Intel Core 2 Quad (Yorkfield) และฉันสังเกตเห็นข้อความต่อไปนี้จากdmesg: [ 0.019526] cpuidle: using governor menu [ 0.531691] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns [ 0.550918] intel_idle: does not run on family 6 model 23 [ 0.554415] tsc: Marking TSC unstable due to TSC halts in idle PowerTop …

3
ไดรเวอร์อุปกรณ์ใน Linux เป็นโปรแกรม / กระบวนการหรือเป็นเพียงไลบรารีหรือไม่
ไดรเวอร์อุปกรณ์เป็นโปรแกรมที่ทำงานด้วยตัวเองหรือเป็นเพียงไลบรารี (กลุ่มของฟังก์ชั่น) ที่โหลดในหน่วยความจำและโปรแกรมสามารถเรียกใช้หนึ่งในฟังก์ชั่นของมัน (ดังนั้นจึงไม่ได้ทำงานด้วยตัวเอง) และถ้าเป็นโปรแกรมจะมี ID กระบวนการดังนั้นฉันสามารถยกเลิกไดรเวอร์อุปกรณ์ได้เช่นเดียวกับที่ฉันสามารถยกเลิกกระบวนการอื่นได้หรือไม่?
23 linux  drivers 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.