Whatsup - לינוקס, תוכנה חופשית וקוד פתוח בעברית

התקנת לינוקס - automount ללא שולחן עבודה

elcuco - 15/05/2018 - 17:17
נושא ההודעה: automount ללא שולחן עבודה
יש לי מחשב שמריץ דביאן, ואני רוצה שהוא יעשה automount להתקני USB-DISK. כאשר מריצים שולחן עבודה זה קורה, אבל כאשר אין X זה מסורבל יותר.

ניסיתי לתפוס את ה udev rules וזה אמור להיות מתאים למחשב שלי:
קוד:

DEVTYPE=="disk", ID_FS_LABEL=="DIEGO", ACTION=="add", RUN+="logger added"
DEVTYPE=="disk", ID_FS_LABEL=="DIEGO", ACTION=="remove",  RUN+="logger remove "


את הערכים שם מצאתי דרך
קוד:
udevadm monitor


ניסיתי לבדוק בעזרת
קוד:

udevadm test /dev/bus/usb/001/001


הקוד שלי לא נקרא.

אשמח לקבל עזרה?
elcuco - 15/05/2018 - 17:21
נושא ההודעה:
ניסיון שני:

יש חבילה בשם https://wiki.debian.org/usbmount שאמורה לעבוד. בתכלס - היא מנסה להפעיל את הפקודה (יש צורך להפעיל לוג בקובץ הגדרה המתאים לחבילה והפלט הוא מתוך /var/log/messages)

קוד:

May 15 17:18:35 raspberrypi usbmount[1276]: executing command: mount -tvfat -osync,noexec,nodev,noatime,nodiratime /dev/sda /media/usb1


בפועל אני לא רואה שה-mount מצליח. הוא מצליח כשזה עובד משורת הפקודה בתור root.

לחלופין - אם למישהו יש פתרון תפור ל-raspberrypi שיאפשר לי להריץ תסריט על עיגון של התקן usb-disk מסויימים - אני אשמח.
mksoft - 15/05/2018 - 18:02
נושא ההודעה:
טענת את החוקים אחרי ששינית אותם?

קוד:
udevadm control --reload-rules

Anonymous - 15/05/2018 - 18:09
נושא ההודעה:
http://www.nongnu.org/halevt/
elcuco - 15/05/2018 - 23:08
נושא ההודעה:
מאיר - כן, כמובן, טענתי את החוקים (אפילו הפעלתי מחדש את המחשב).
לאורח השני - תודה, פרוייקט שאני לא מכיר שעודכן בשנת 2010? לא תודה.
Anonymous - 16/05/2018 - 00:01
נושא ההודעה:
אולי כאן?
http://www.hellonull.com/?p=171
Anonymous - 16/05/2018 - 09:13
נושא ההודעה: Re: automount ללא שולחן עבודה
elcuco :
יש לי מחשב שמריץ דביאן, ואני רוצה שהוא יעשה automount להתקני USB-DISK. כאשר מריצים שולחן עבודה זה קורה, אבל כאשר אין X זה מסורבל יותר.

ניסיתי לתפוס את ה udev rules וזה אמור להיות מתאים למחשב שלי:
קוד:

DEVTYPE=="disk", ID_FS_LABEL=="DIEGO", ACTION=="add", RUN+="logger added"
DEVTYPE=="disk", ID_FS_LABEL=="DIEGO", ACTION=="remove",  RUN+="logger remove "


את הערכים שם מצאתי דרך
קוד:
udevadm monitor


ניסיתי לבדוק בעזרת
קוד:

udevadm test /dev/bus/usb/001/001


הקוד שלי לא נקרא.

אשמח לקבל עזרה?


הפקודה ל run צריכה להיות מסלול מלא
אם אתה יודע על התקנים מדוויקים, אתה יכול להשתמש ב UUID שלהם.

דוגמא למשהוא שעובד למשהוא :

https://www.axllent.org/docs/view/auto-mounting-usb-storage/

עדיף לך autofs שהוא לפחות עובר עידכונים מאשר usbmount
elcuco - 16/05/2018 - 15:46
נושא ההודעה:
Anonymous :
אולי כאן?
http://www.hellonull.com/?p=171


על זה דווקא הסתכלתי. ממנו התחלתי - והוא לא ממש עובד כיום.

עריכה:

התסכלתי שוב. זה התסריטים שאני עובד איתם:
קוד:

root@raspberrypi:~# cat /etc/udev/rules.d/99-disk.rules
# Custom udev rules. Note that udev rules are run in order based
# on the filename. Rules in filenames that start with numbers
# are run before this one.
# This rule detects USB drives that are added to the system so
# that they can be mounted automagically by the script.
# It is based off of the replies to a question on superuser.com.
# http://superuser.com/questions/53978/ubuntu-automatically-mount-external-drives-to-media-label-on-boot-without-a-u

#ENV{ID_FS_USAGE}=="filesystem", SUBSYSTEMS=="usb", ACTION=="add", RUN+="/root/auto-usb.sh mount %k"
#ENV{ID_FS_USAGE}=="filesystem", SUBSYSTEMS=="usb", ACTION=="remove", RUN+="/root/auto-usb.sh cleanup %k"



# the mount options are different depending on the file system type
ENV{ID_FS_USAGE}=="filesystem", ENV{ID_FS_TYPE}=="vfat", SUBSYSTEMS=="usb", ACTION=="add", ENV{MOUNT_OPTIONS}="-o gid=plugdev,dmask=007,fmask=117", RUN+="/root/auto-usb.sh mount %k"
ENV{ID_FS_USAGE}=="filesystem", ENV{ID_FS_TYPE}=="vfat", SUBSYSTEMS=="usb", ACTION=="remove", ENV{MOUNT_OPTIONS}="-o gid=plugdev,dmask=007,fmask=117", RUN+="/root/auto-usb.sh cleanup %k"
root@raspberrypi:~# cat /root/auto-usb.sh
#! /bin/bash

logger $0 $1 $2 $3 $4 $5 $6 $7

set -x
set -e

MOUNT_POINT=/media

#
# This script is called by a udev rule whenever a usb drive is
# plugged into the system or removed from the system.
# Usage:
# auto-usb.sh MODE DEVICE
# where MODE is either mount or cleanup
# and DEVICE is the device basename, i.e. /dev/DEVICE

if [ "$1" = "mount" ]; then
    # The ID_FS_LABEL enviroment variable is only available
    # When this script is caleld by udev
    mkdir -p "$MOUNT_POINT/$ID_FS_LABEL" || logger "Could not create $MOUNT_POINT/$ID_FS_LABEL"
    $(mount | grep -q "/media/$ID_FS_LABEL") || mount $MOUNT_OPTIONS /dev/$2 "$MOUNT_POINT/$ID_FS_LABEL"
    logger " ---- mount $MOUNT_OPTIONS /dev/$2 $MOUNT_POINT/$ID_FS_LABEL"
elif [ "$1" = "cleanup" ]; then
    umount /dev/$2
    rmdir "$MOUNT_POINT/$ID_FS_LABEL"
else
    echo "ERROR: Mode $1 should be 'mount' or 'cleanup'."
fi


המקום שבו זה נכשל, הוא הכי אידיוטי: mkdir / rmdir לא עובדים.

התסריט מורץ על ידי udev תחת משתמש root. המשתמש הזה, מה-cli (טוב ssh לא להתקטנן) מסוגל ליצור או למחוק את הנתיב הזה. ניסיתי סתם בשביל הספורט לעשות mount אל /tmp/. כל זה נכשל.

מה אני מפספס פה..??!
elcuco - 16/05/2018 - 15:48
נושא ההודעה: Re: automount ללא שולחן עבודה
Anonymous :

עדיף לך autofs שהוא לפחות עובר עידכונים מאשר usbmount

https://wiki.debian.org/AutoFs

לפי הדף הזה, הפרוייקט הקודם עדיף. למרות שהוא לא מתחזוק ולא עובד אצלי.
Anonymous - 16/05/2018 - 21:02
נושא ההודעה:
elcuco :
Anonymous :
אולי כאן?
http://www.hellonull.com/?p=171


על זה דווקא הסתכלתי. ממנו התחלתי - והוא לא ממש עובד כיום.

עריכה:

התסכלתי שוב. זה התסריטים שאני עובד איתם:
קוד:

    rmdir "$MOUNT_POINT/$ID_FS_LABEL"
else
    echo "ERROR: Mode $1 should be 'mount' or 'cleanup'."
fi


המקום שבו זה נכשל, הוא הכי אידיוטי: mkdir / rmdir לא עובדים.

התסריט מורץ על ידי udev תחת משתמש root. המשתמש הזה, מה-cli (טוב ssh לא להתקטנן) מסוגל ליצור או למחוק את הנתיב הזה. ניסיתי סתם בשביל הספורט לעשות mount אל /tmp/. כל זה נכשל.

מה אני מפספס פה..??!


יש לך שני סוגי גרשיים - זה באמת או שזה טעות בהעתקה ?
elcuco - 16/05/2018 - 23:51
נושא ההודעה:
Anonymous :
elcuco :
Anonymous :
אולי כאן?
http://www.hellonull.com/?p=171


על זה דווקא הסתכלתי. ממנו התחלתי - והוא לא ממש עובד כיום.

עריכה:

התסכלתי שוב. זה התסריטים שאני עובד איתם:
קוד:

    rmdir "$MOUNT_POINT/$ID_FS_LABEL"
else
    echo "ERROR: Mode $1 should be 'mount' or 'cleanup'."
fi

אין שום בעייה עם שני הסוגריים (תפעיל את השורה במסוף שלך ותבין מה זה עושה).

הבעייה הייתה ש-mkdir היא לא פקודה מובנית ב-bash ולאחר ששמתי נתיב מלא - הכל מתקתק.

תודה לכל העוזרים!

המקום שבו זה נכשל, הוא הכי אידיוטי: mkdir / rmdir לא עובדים.

התסריט מורץ על ידי udev תחת משתמש root. המשתמש הזה, מה-cli (טוב ssh לא להתקטנן) מסוגל ליצור או למחוק את הנתיב הזה. ניסיתי סתם בשביל הספורט לעשות mount אל /tmp/. כל זה נכשל.

מה אני מפספס פה..??!


יש לך שני סוגי גרשיים - זה באמת או שזה טעות בהעתקה ?


זה בסדר, תדביק את הפדוקה במסוף ותראה מה היא עושה.

הבעייה שהייתה לי ב-mkdir הייתה שהיא לא פקודה מבנית ב-bash ולכן מצריכה נתיב מלא. אחרי הוספה של נתיב הכל עובד יפה.

תודה לכל העוזרים!
כל הזמנים הם GMT + 2 שעות