การติดตั้งดิสก์ USB โดยอัตโนมัติ (วิธีการทำงาน)


12

พื้นหลัง: ฉันพยายามเมานท์ดิสก์ usb เป็นแบบอ่านอย่างเดียว แต่อูบุนตูติดตั้งของฉันกำลังติดตั้งอยู่เมื่อฉันเสียบดิสก์

ฉันสามารถถอนการติดตั้งดิสก์ด้วยตนเองและติดตั้งใหม่ด้วยตนเองเป็นแบบอ่านอย่างเดียวด้วยคำสั่ง umount และ mount แต่ก็ไม่สนุก ใครบางคนสามารถให้คำอธิบายอย่างรวดเร็วเกี่ยวกับวิธีการติดตั้ง usb โดยอัตโนมัติบนระบบลินุกซ์ทั่วไป (udev? ภูมิหลังทางประวัติศาสตร์ก็ดีเหมือนกัน) และบางทีฉันจะปรับกระบวนการนี้ให้ฉันอ่านดิสก์ได้อย่างไร

ขอบคุณ

แก้ไข:ฉันใช้ gnome ถ้าช่วยได้
แก้ไข 2:ในความรีบร้อนฉันลืมที่จะให้ข้อมูลเพิ่มเติมอีกเล็กน้อย นี่คือลักษณะของดิสก์จากผลลัพธ์ของ 'mount'

/dev/sdb1 on /media/LaCie type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)

แก้ไข 3: สิ่งนี้อาจเกี่ยวข้องในทางของตัวเอง ในผลลัพธ์ของการเมานท์ฉันมีสิ่งต่อไปนี้

gvfs-fuse-daemon on /home/fletcher/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=fletcher)  

ฉันคิดว่านี่อาจเกี่ยวข้องกับการติดตั้ง fuseblk ด้านบน แต่สิ่งที่ฉันค้นพบคือสิ่งนี้

Gvfs เป็นระบบไฟล์เสมือน Gnome มันเป็นระบบไฟล์เสมือนที่สร้างขึ้นบนเคอร์เนล vfs ที่มีอยู่แล้ว gvfs ใช้ไลบรารี GIO (ซึ่งเป็น VFS API) เพื่อเข้าถึงไฟล์อุปกรณ์ตำแหน่งเครือข่ายระยะไกล ฯลฯ ในกรณีนี้ข้างต้น ('gvfs-fuse-daemon') gvfs กำลังใช้ FUSE เพื่อเมานต์ไฟล์ / ตำแหน่ง / อุปกรณ์ นี่คือสิ่งที่เกิดขึ้นเมื่อคุณเชื่อมต่อเครือข่ายระยะไกลใน Nautilus มันจะใช้ FUSE เพื่อกำหนดตำแหน่ง (ภายใน?) ไดเรกทอรี. gvfs แล้วมันจะสื่อสารกับเลเยอร์ระบบไฟล์เสมือนของ gnome เพื่อสื่อสารกับการเมาท์ใหม่

โดยพื้นฐานแล้วโครงสร้างนี้ช่วยให้ผู้ใช้เมานต์ตำแหน่งใหม่แบบไดนามิกและโต้ตอบกับพวกเขาผ่านทางหอยโข่ง

เพื่อการอ้างอิง: FUSE เป็นระบบไฟล์ userspace หรือที่รู้จักกันว่าอนุญาตให้ผู้ใช้เรียกใช้การเมาท์แม้ว่าผู้ใช้นั้นจะไม่รูท)

แล้วมันจะทิ้งฉันไปที่ไหน? ดิสก์ LaCie กำลังถูกเมาท์ด้วยฟิวส์ชนิด นี่เป็นเพียงอุปกรณ์บล็อกติดตั้งพร้อมฟิวส์ ดังนั้น daemon บางตัวจะตรวจจับไดรฟ์โดยอัตโนมัติเมื่อเสียบปลั๊กแล้วจึงไปข้างหน้าและเรียกใช้ฟิวส์เพื่อติดตั้งอุปกรณ์บล็อกของฉัน ดังนั้นสิ่งที่ดีมอนคือสิ่งนี้และวิธีการกำหนดค่า (ฉันเดาว่ามันคือสิ่งที่คำพังเพยภายใน) เป็นคำถามที่สำคัญที่สุด คำถามที่สองคือวิธีที่ระบบตรวจพบดิสก์ usb ที่เพิ่งแทรกใหม่โดยอัตโนมัติ แต่ฉันคิดว่านั่นเป็นเพียงส่วนเล็กน้อยและระดับล่างที่นี่ (อ่าน: udev?)

ลิงค์:


มีรายการ fstab สำหรับระบบไฟล์ / media / LaCie และ / หรืออุปกรณ์ / dev / sdb1 หรือไม่ มี / dev / sdb1 ติดป้ายกำกับอยู่แล้ว (e2label / dev / sdb1) หรือไม่
Tok

ไม่ไม่มีรายการ fstab ฉันเชื่อว่ามันติดป้ายกำกับไว้เมื่อติดตั้งที่ / media / LaCie ฉันจะต้องติดตั้ง ntfslabel เพื่อหาคำตอบ แต่ฉันกำลังจะออกจากงาน มันยังปรากฏบนเดสก์ท็อปของฉันในชื่อว่า LaCie
fthinker

คำตอบ:


3

ฉันพยายามทำสิ่งนี้บนคอมพิวเตอร์และทำงานได้ :)

ก่อนอื่นฉันจะได้รับชื่อสำหรับอุปกรณ์ของฉัน:

ls -l /proc/disk/by-id/

ในกรณีของฉันมันคือ / proc / disk / by-id / usb-09a6_8001

ฉันเพิ่มบรรทัดนี้ใน / etc / fstab:

/dev/disk/by-id/usb-09a6_8001   /media/macle ext2 ro,users 0 2

และมันก็ใช้งานได้เมื่อฉันเสียบ usbkey มันติดตั้ง ro และเป็นเจ้าของโดยผู้ใช้ของฉัน


ขอบคุณ profy :) แต่แรงผลักดันหลักของคำถามของฉันคือการบรรเทาความยุ่งยากที่ฉันรู้สึกทุกครั้งที่ฉันถูกบังคับให้เข้าใจวิธีการทำงานของ automount และอุปกรณ์ usb ฉันมาที่นี่เพื่อถอดรหัสเวทมนตร์ที่อยู่เบื้องหลังระบบที่ซับซ้อนเหล่านี้ นอกจากนี้การใช้อุปกรณ์ fstab และ usb นั้นค่อนข้างยุ่งยากเพราะพวกเขาไม่ได้รับประกันว่าจะต้องเสียบปลั๊กเมื่อเริ่มต้นใช้งาน!
fthinker

1
ฉันไม่รู้ว่ามันทำงานอย่างไร แต่ฉันค่อนข้างมั่นใจว่าอุปกรณ์ใหม่ถูกตรวจพบโดยกฎ udev ลองดูที่ /etc/udev/rules.d/ และที่ /lib/udev/rules.d/
profy

2

ปัจจุบันโซลูชั่นเริ่มต้นคือเท่าที่ผมรู้udiskภูตให้API dbusเช่นเดียวกับอินเตอร์เฟซ commandline นอกจากนี้ยังมีชุดคลุม udisksหลายอันและออโตบอร์

โดยทั่วไปแล้วคุณไม่ได้กำหนดค่าudiskตัวเองเพราะทำตามที่บอกไว้ดังนั้นคุณต้องมองเข้าไปใน Gnome บางที Gnome Disk Utility ช่วยให้คุณสามารถแก้ไข / เปลี่ยนสถานะเมานต์ได้


2

ดังที่ Ulrich Dangel กล่าวว่า udisks ควรเป็นข้อมูลอ้างอิงในปัจจุบัน ฉันยังไม่เห็นวิธีการแจ้งเตือน (udev-> dbus-> udisks?) แต่ด้วยตนเองสามารถใช้เพื่อติดตั้งอุปกรณ์ด้วยตัวเลือกที่คุณต้องการ

Udisks พูดคุยกับ polkit เพื่อดูว่าผู้ใช้ได้รับอนุญาตให้ทำอะไรกับโวลุ่ม ฉันคาดเดาที่นี่ แต่ถ้าเราสามารถหาสถานที่ที่จะตั้งค่าคุณสมบัติสำหรับดิสก์ / อุปกรณ์ที่มีชื่อได้

เมื่อใช้ udisksctl ผู้ใช้ของคุณจะสามารถติดตั้งอุปกรณ์ด้วยตัวเลือกที่คุณต้องการได้ดังนี้:

udisksctl mount -b / dev / sdxy -o ro / mountpoint

แต่ฉันไม่ต้องการวางตัวเลือก

อัปเดต: ตามคำแนะนำของอูลริชฉันไปที่ดิสก์ยูทิลิตี้ของ Gnome และฉันได้ทำตามที่คุณต้องการ แต่ไม่แน่ใจว่ามันเป็นทางออกที่ดีที่สุดหรือไม่ ฉันใช้ Kororaa 17 (อิง Fedora 17) กับ Cinnamon + Gnome3 ไปที่ยูทิลิตี "ดิสก์" และตัวเลือกเมานต์ที่ปรับเปลี่ยนสำหรับไดรฟ์ usb ของฉันเพิ่ม "ro" และบันทึกไว้

มันเพิ่มรายการไปยัง fstab (นั่นคือที่ที่ฉันไม่เห็นว่ามันเป็นโซลูชั่นที่สง่างามฉันคิดว่ามันควรจะยังคงอยู่เนื่องจากการกำหนดค่าผู้ใช้ที่ไม่กว้างของระบบ) ฉันเสียบไดรฟ์และติดตั้งอัตโนมัติ ฉันบันทึกไว้ที่ Gnome disk utility


คุณหมายถึงอะไรกับคุณต้องดูว่ามันได้รับแจ้ง? ขั้นตอนใดหายไป?
Ulrich Dangel

และไม่ใช่udev→dbus→udiskแต่udev/uevent→udisk→dbus
Ulrich Dangel

ฉันหมายถึงฉันไม่แน่ใจจริงๆและฉันต้องการยืนยัน แต่ตอนนี้ฉันเห็นว่าฉันไม่ผิด 100%
สามเท่าใน

[การประท้วง] โปรดแสดงบรรทัดที่เพิ่มเข้าใน fstab ฉันต้องการยืนยันสิ่งที่ฉันคิดว่าเป็น [/ strike] ดังนั้นบรรทัด fstab ตรงกับคำตอบของ @ profy หรือไม่ เช่นกับroตัวเลือก
กลับรายการ

-1

ในเรื่องของวิธีการที่ฮาร์ดแวร์เคอร์เนลตรวจพบที่นี่เป็นบทความที่ดีมากว่าเกิดอะไรขึ้น

สรุป:

  • เคอร์เนลอย่างต่อเนื่องสแกน bus'es /sys/คอมพิวเตอร์ของคุณและแผนที่อุปกรณ์ระบบแฟ้มเสมือนมักจะอยู่ภายใต้
  • เคอร์เนลส่งข้อความว่าฮาร์ดแวร์ใหม่พร้อมใช้งานสำหรับ udev ซึ่ง:
    • ประมวลผลกฎ udev บนอุปกรณ์
    • symlink อุปกรณ์เข้า /dev/
    • โหลดไดรเวอร์อุปกรณ์
    • แจ้งเตือนพื้นที่ผู้ใช้ของอุปกรณ์ผ่าน dbus

ณ จุดนี้อุปกรณ์พร้อมใช้งานโดย userspace Gvfs และ FUSE เป็นทั้งระบบไฟล์ userspace


ไม่udevปกติแล้วจะไม่แจ้งเตือนแอปพลิเคชันผ่านdbusแอปพลิเคชันของบุคคลที่สาม หากคุณใช้qdbus --systemคุณจะไม่เห็นชื่อ udev โดยทั่วไปแล้วแอปพลิเคชันจะสมัครสมาชิกด้วยตนเองueventsหรือส่งกฎของตัวเอง
Ulrich Dangel

ขอบคุณสำหรับการชี้ให้เห็นว่า @ulrich ข้อมูลสรุปของฉันมีโครงร่างพื้นฐานที่ไม่รวมหลายขั้นตอน ดูบทความที่เชื่อมโยงสำหรับรายละเอียดที่มีทราย
กลับหัวระหว่าง

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