อัตโนมัติลำดับของคำสั่งการติดตั้ง


9

เมื่อฉันเชื่อมต่ออุปกรณ์ (แท็บเล็ต, กล้อง, แฟลชไดรฟ์, ฮาร์ดไดรฟ์ภายนอก) กับแล็ปท็อปของฉันด้วย Linux ฉันมักจะพิมพ์คำสั่งต่อไปนี้

$ ls /dev/sd*
สมมติว่าอุปกรณ์ของฉันเป็น / dev / sdc
เป็น$ sudo mkdir /media/my_flash
ทางเลือกก็ได้$ sudo chmod 777 /media/my_flash
$ sudo mount /dev/sdc /media/my_flash

จากนั้นฉันจะคัดลอกไฟล์บางไฟล์และ

$ sudo umount /dev/sdc

ลำดับนี้รับประกันว่าไฟล์จะถูกคัดลอกและไม่มีอะไรเลวร้ายเกิดขึ้น

คุณสามารถบอกวิธีการเรียงลำดับคำสั่งนี้ได้โดยอัตโนมัติหรือไม่? ดังนั้นฉันจะเพียงแค่เสียบอุปกรณ์มันจะรับรู้ว่าควรติดตั้งไดเรคทอรีใดจากนั้นฉันจะทำการถ่ายโอนไฟล์และจากนั้นจะส่งสัญญาณให้ฉัน (อย่างใด) ฉันสามารถถอดปลั๊กอุปกรณ์ได้หรือไม่ มีการตั้งค่าบางอย่างใน Linux OS หรือไม่?

คำตอบ:


6

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

มีสองขั้นตอนที่เกี่ยวข้อง: เชื่อมโยงไฟล์อุปกรณ์ (เช่น/dev/sdc) กับอุปกรณ์ฮาร์ดแวร์และติดตั้งอุปกรณ์เพื่อเข้าถึงระบบไฟล์ งาน udev เป็นขั้นตอนแรก mountแต่คุณสามารถบอกให้เรียกใช้คำสั่งภายนอกเช่น

สำหรับอุปกรณ์แบบถอดได้ที่รู้จักฉันต้องการใช้ชื่ออุปกรณ์เฉพาะภายใต้/dev/removable(ชื่อไดเรกทอรีนั้นเป็นแบบแผนส่วนบุคคล) กฎ udev ต่อไปนี้ (ต้องอยู่ใน/etc/udev/rules.d/my_removable_disks.rules) สร้างลิงก์สัญลักษณ์ที่มีชื่อที่รู้จักสำหรับดิสก์สองตัวทั้งคู่ระบุโดยคุณสมบัติของระบบไฟล์ในพาร์ติชัน 1:

KERNEL=="sd?", PROGRAM=="/sbin/blkid -o value -s UUID %N1", RESULT=="1234-5678", SYMLINK+="removable/foo"
KERNEL=="sd?", PROGRAM=="/sbin/blkid -o value -s LABEL %N1", RESULT=="Joe's disk", SYMLINK+="removable/joe"

udev รุ่นเก่าอาจต้องการ/udev/lib/vol_id -u %N1(สำหรับ UUID -lสำหรับป้ายกำกับ) แทนการblkidโทร มีอีกหลายสิ่งที่คุณสามารถจับคู่ได้เช่นATTRS{vendor}=="Yoyodine", ATTRS{serial}=="XYZZY12345PDQ97"(แทนPROGRAM==…, RESULT==…) เพื่อจับคู่ผู้ขายอุปกรณ์และหมายเลขซีเรียล

จากนั้นคุณสามารถใช้บรรทัดเช่นนี้ใน/etc/fstab:

/dev/removable/joe  /media/joe  vfat  noauto,user

หากคุณต้องการเมานต์อัตโนมัติคุณสามารถเพิ่มสิ่งที่ชอบ, RUN="mkdir /media/foo && mount /dev/removable/foo /media/foo"ไปยังบรรทัด udev อย่าลืมumount /media/fooก่อนถอดปลั๊ก


ขอบคุณสำหรับทางออกที่ดี ฉันมี LVM บนไดรฟ์ภายนอกบางตัวดังนั้นลำดับการยกย่องอีกต่อไป (รวมถึงการเปิดใช้งาน VG และอื่น ๆ ) ตอนนี้ฉันสามารถเพิ่มสคริปต์สำรองไว้ในนี้ได้ :)
Grzegorz Wierzowiecki

ผู้อ่านที่รัก - หากคุณต้องการทราบเกี่ยวกับ ATTRS ที่มีให้ลองใช้กับอุปกรณ์ของคุณ:udevadm info --name=/dev/DEVICE --attribute-walk
Grzegorz Wierzowiecki

8

คุณสามารถทำได้โดยการเขียนกฎ UDEV ซึ่งจะ "รัน" สคริปต์ทุบตีที่ได้รับคำสั่งทุบตีเดียวกันคุณกล่าวถึง เมื่อใดก็ตามที่คุณเสียบอุปกรณ์ดังกล่าว UDEV จะจดจำสิ่งนี้และเริ่มทำงานตามกฎ

สำหรับการเขียนกฎคุณสามารถทำตามนี้การเชื่อมโยง


โอ้โห ยังไม่ทราบเลย - บุ๊กมาร์กลิงก์และเพิ่มไปยังเพลงของฉัน
Shadur

คุณช่วยอธิบายให้ชัดเจนมากขึ้นได้ไหม? ย่อหน้าใดจากลิงค์ที่เกี่ยวข้องกับฉัน
xralf

ดูเหมือนว่าฉันกำลังมองหา ฉันไม่มีเวลาอ่านมันทุกวัน ฉันจะศึกษาและวางคำตอบที่ถูกต้องลงในความคิดเห็นของคุณในเวลาที่ฉันจะเข้าใจ ขอบคุณ
xralf

4

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

ทั้ง Gnome และ KDE มีตัวเลือกในการเมานต์วอลลุ่มแบบถอดได้โดยอัตโนมัติเมื่อเชื่อมต่อ ทั้งนี้ขึ้นอยู่กับการกระจายที่คุณติดตั้งฟังก์ชั่นนี้อาจเป็นค่าเริ่มต้นที่ 'เปิด'

ใน GNOME ตัวเลือกว่าคุณลักษณะนี้อยู่ภายใต้การ avalaible System -> Preferences -> Removable Media; ฉันไม่เคยมีประสบการณ์กับ KDE มาก่อน


ฉันต้องการทำอย่างอิสระบน Window Management Environement (เช่น KDE, GNOME และอื่น ๆ ) (ราวกับว่า X ไม่ได้เริ่มต้น)
xralf

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