ติดตั้งระบบไฟล์ USB stick แบบอัตโนมัติบน Jessie Lite


18

ฉันต้องการที่จะสามารถที่จะ automount ที่ USB sticks FAT32และNTFSจัดรูปแบบในการบินเช่นร้อนเสียบโดยไม่ต้องรีบูตราสเบอร์รี่ Pi 2. ฉันฉันได้NTFS-3Gติดตั้งบนjessie-Lite

การใส่ UUID fstabนั้นไม่ใช่ตัวเลือกเพราะฉันต้องค้นหา UUID ของทุกอุปกรณ์ ฉันต้องการที่จะสามารถเสียบอุปกรณ์ USB ที่แตกต่างกันด้วยรูปแบบไฟล์ที่แตกต่างกันและติดตั้งโดยอัตโนมัติ เป็นไปได้ไหม

นอกจากนี้ฉันเกือบจะทำให้usbmountโปรแกรมทำงานได้ transport endpoint is not connectedฉันสามารถเข้าถึงไดรฟ์ของฉันเป็นครั้งที่สองก่อนที่จะรับข้อผิดพลาด ฉันติดตั้งโปรแกรมใหม่ แต่ไม่เคยไปถึงจุดนั้นอีกเลยแม้แต่กับข้อผิดพลาด

คำตอบ:


15

หลังจากการวิจัยจำนวนมากฉันสามารถแก้ไขปัญหาของฉันด้วย usbmount:

การเพิ่ม ntfs ไปยัง usbmount

  1. ติดตั้ง usbmount sudo apt-get install usbmountกับ
  2. ติดตั้ง NTFS แพ็กเกจไดรเวอร์NTFS-3G ที่sudo apt-get install ntfs-3gมี

  3. กำหนดค่า usbmount จะติดระบบไฟล์ที่ระบุโดยการเปิดไฟล์ usbmount sudo nano /etc/usbmount/usbmount.confกับ

FILESYSTEMS=""ที่นี่มีสายที่เรียกว่า เฉพาะระบบไฟล์ที่ระบุในบรรทัดนี้เท่านั้นที่ติดตั้งผ่าน usbmount ดังนั้นเราจึงเปลี่ยนเป็น:FILESYSTEMS="vfat ntfs fuseblk ext2 ext3 ext4 hfsplus"

หากคุณต้องการ usbmount เพื่อติดตั้งระบบไฟล์ NTFS ให้เพิ่ม ntfsและfuseblkในบรรทัด อุปกรณ์ NTFS บางครั้งมีการระบุไว้เป็นfusblkโดยแพ็คเกจ ntfs-3g ดังนั้นทั้งสองจึงเหมือนกัน ฉันไม่รู้จริงๆว่าทำไม

นอกจากนี้หากคุณไม่ได้เพิ่มfuseblkในการกำหนดค่าอุปกรณ์ NTFS ที่ไม่ได้ต่อเชื่อมจะไม่เลิกเมานท์โดยอัตโนมัติ พวกเขาจะอยู่ติดและเก็บโฟลเดอร์ที่พวกเขาจะติดตั้งไปจนกว่าอุปกรณ์เดินเท้าด้วยตนเองunmount /dev/sda1 -> ที่ sda1 อาจจะเป็นอีกตัวแปรหนึ่ง

FS_MOUNTOPTIONS=""บรรทัดที่สำคัญต่อไปคือ ที่นี่คุณระบุว่าควรติดตั้งระบบไฟล์ใดและควรติดตั้งระบบไฟล์ใด

เราเปลี่ยนเป็น: FS_MOUNTOPTIONS="-fstype=ntfs-3g,nls=utf8,umask=007,gid=46 -fstype=fuseblk,nls=utf8,umask=007,gid=46 -fstype=vfat,gid=1000,uid=1000,umask=007"

ด้วยสิ่งนี้ระบบไฟล์vfat (fat32) ntfs-3g (NTFS) และ fuseblk (NTFS อีกครั้ง) จะถูกติดตั้ง ฉันคิดว่าพารามิเตอร์ส่วนใหญ่ยังคงเหมือนเดิม อีกครั้งที่นี่เพียงเพิ่ม ntfs-3g ( เพิ่ม ntfs-3g ไม่ใช่ ntfs ) และ fuseblk เพื่อให้สามารถเมานท์ไฟล์ NTFS ทั้งหมด -fstype=สำหรับระบบไฟล์เพิ่มมากขึ้นบรรทัดที่มากขึ้นเริ่มต้นด้วย

ทำให้อุปกรณ์ NTFS ถูกเมานต์จนกว่าจะถอดปลั๊ก

นี่คือวิธีแก้ไขปัญหาเมื่อไดรฟ์ NTFS ที่เมาท์สามารถเข้าถึงได้เพียงไม่กี่วินาที การแก้ไขนี้มาจากคริสเตียน Weinberger

  1. สร้างแฟ้มusbmount.rulesใน/etc/udev/rules.d/sudo nano /etc/udev/rules.d/usbmount.rulesกับ

นี่คือเนื้อหา:

KERNEL=="sd*", DRIVERS=="sbp2",         ACTION=="add",  PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="sd*", SUBSYSTEMS=="usb",       ACTION=="add",  PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="ub*", SUBSYSTEMS=="usb",       ACTION=="add",  PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="sd*",                          ACTION=="remove",       RUN+="/usr/share/usbmount/usbmount remove"
KERNEL=="ub*",                          ACTION=="remove",       RUN+="/usr/share/usbmount/usbmount remove"
  1. สร้างไฟล์usbmount @ .serviceใน/ etc / systemd / / ระบบsudo nano /etc/systemd/system/usbmount@.serviceด้วย

นี่คือเนื้อหา:

[Unit]
BindTo=%i.device
After=%i.device

[Service]
Type=oneshot
TimeoutStartSec=0
Environment=DEVNAME=%I
ExecStart=/usr/share/usbmount/usbmount add
RemainAfterExit=yes

ตอนนี้รีบูตและตรวจสอบกับcat /etc/mtabอุปกรณ์ USB ที่ติดตั้งไปยังโฟลเดอร์ใด โดยเริ่มต้นที่พวกเขาจะ mountet เพื่อสื่อ /

ที่มา:

คริสเตียนแก้ไข

ทำไมต้อง fusblk?


โซลูชันนี้ต้องการอีกสองสามขั้นตอนดูคำตอบของฉัน
AbiusX

2

คำตอบโดย Untermoser นั้นถูกต้อง แต่มันจะทำลายการทำงานของ usbmount

เนื่องจากเขาใช้หน่วย Systemd เพื่อวางกระบวนการที่จะเมานท์ (เพื่อเปิดใช้งาน NTFS) ตัวแปรสภาพแวดล้อม$DEVPATHจะไม่ถูกส่งไปยังusbmount addคำสั่งอีกต่อไปส่งผลให้เกิดการสร้าง symlink ล้มเหลว

ในการแก้ไขปัญหาให้เรียกใช้สิ่งต่อไปนี้:

sed -i '/# Determine vendor/,/if/ s/\(.*vendor=\)/if [ -z "$DEVPATH" ]; then DEVPATH="$(udevadm info --query=path --name=\/$DEVNAME)"; fi\n\1/g' /usr/share/usbmount/usbmount

คำสั่งดังกล่าวสร้างขึ้นใหม่$DEVPATHหากยังไม่พร้อมใช้งาน

นอกจากนี้ยังมีข้อผิดพลาดอีกใน usbmount usbmount removeด้วยความเคารพ มันวนซ้ำผ่านจุดเมานท์และหนึ่งที่กำหนดไว้ในการกำหนดค่า usmount จะถูกถอดออก อย่างไรก็ตามหากพบการแข่งขัน แต่ไม่ได้อยู่ในรายการให้ลบการหยุดพักและไม่ทำอะไรเลย นี่เป็นสิ่งสำคัญอย่างยิ่งหากคุณสร้างจุดเชื่อมต่อหลายจุดสำหรับ USB เดียวเนื่องจาก usbmount เห็นจุดแรกและไม่ทำอะไรเลย

ในการแก้ไขจำเป็นต้องมีการเปลี่ยนแปลงต่อไปนี้:

sed -i '/umount.d ||/,/break/ s/break.*//; /umount.d ||/,/done/ s/:/:\n\t\tbreak 2/' /usr/share/usbmount/usbmount

สิ่งนี้จะย้ายตัวแบ่งภายในวงใน (ที่รับประกันความสำเร็จและแบ่งออกเป็น 2 ขั้น)


1

สำหรับผู้ที่พยายามจะทำงานแบบเดียวกันกับ Stretch (Lite) รุ่นใหม่และพบว่าคำตอบของ Untermoser และ AlbiusX ไม่ได้ถอนการติดตั้งไดรฟ์ vfat คุณจะต้องทำตามขั้นตอนพิเศษเพิ่มเติมจากคำตอบที่ให้ :

รันคำสั่งต่อไปนี้ในเทอร์มินัล:

sudo mkdir -p /etc/systemd/system/systemd-udevd.service.d/

สิ่งนี้จะสร้างโฟลเดอร์ที่ต้องการ จากนั้นสร้างไฟล์ conf ที่นี่เช่น:

sudo nano /etc/systemd/system/systemd-udevd.service.d/shared-mount-ns.conf

ภายในไฟล์นี้เพิ่มบรรทัดต่อไปนี้:

[Service] MountFlags=shared

สิ่งนี้จะเปลี่ยนลักษณะการทำงานเริ่มต้นของ systemd-udevd ของเนมสเปซระบบไฟล์ส่วนตัวเพื่อใช้งานร่วมกันซึ่งเทียบเท่ากับพฤติกรรมของ udev ใน jessie

(ที่มาจาก/unix/330094/udev-rule-to-mount-disk-does-not-work/330156#330156 )


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