Αποσπωμενος Δισκος /flash δισκος

djemos dijemos at yahoo.gr
Sat Jan 28 16:06:47 EET 2006


O/H basil έγραψε:
> Ενα θεμα που τιθεται αν εχεις 2 αποσπωμενα mass storage devices (π.χ. 
> "φλασακι" και σκληρο δισκο , σε usb και τα 2) ειναι οτι καθε φορα που τα 
> συνδεεις παιρνουν το πρωτο διαθεσιμο ονομα (/dev/sda , sdb κλπ). Αυτο τα 
> κανει δυσχρηστα για καταχωρησεις στο fstab. 
> Αν καποιος εχει αντιμετωπισει το προβλημα , ειτε με τον τροπο του να γινεται 
> παντα η καταχωρηση μιας συσκευης σε συγκεκριμενο device, ειτε δυναμικα 
> τροποιοντας το fstab να δειχνει στο device  ας το πει......
> 


Στο slackel-1.0 livecd που δημιούργησα η αναγνώριση των usb devices 
γίνεται αυτόματα με ένα script to /usr/bin/mntall που δουλεύει σαν 
δαίμονας και από το οποίο καλείται ενα άλλο το /usr/bin/fstab-create που 
    ενημερώνει δυναμικά το fstab. Ετσι στο kde εμφανίζεται το εικονίδιο 
του usb και κάνοντας κλίκ βλέπεις τα περιεχόμενα. Με δεξί κλικ 
επιλέγοντας ασφαλής αφαίρεση και βγάζοντας το εξαφανίζεται το εικονίδιο. 
Εννοείται οτι με τα  προσαρτώνται και όλοι οι δίσκοι αυτόματα που 
υπάρχουν στο σύστημα. Εννοείται οτι το mntall θα φορτώνεται κατα την 
εκκίνηση του συστήματος ως εξής
# make sure all devices are in fstab
echo "Mounting all disk partitions in /mnt/ ..."
/usr/bin/fstab-create -m
ls -1 /mnt/* | grep -v live | xargs -r -n 1 mount 2>/dev/null

# start the daemon to recreate fstab if a device is plugged.
# I know that it's not the best idea to use bash script for this,
# but it's better then nothing for now
/usr/bin/mntall &


Αυτό είναι το mntall

#!/bin/bash

if [ "`cat /proc/cmdline | grep nohd`" != "" -o "`cat /proc/cmdline | 
grep nohotplug`" !
    exit 0
fi

echo "Starting $0 daemon, which will update fstab automatically ..."
while [ 1 ]; do
    PARTS="$(< /proc/partitions)"
    if [ "$OLDPARTS" != "$PARTS" ]; then
       /usr/bin/fstab-create -m
       OLDPARTS="$PARTS"
    fi
    sleep 1
done

και αυτό το fstab-create
#!/bin/bash
# recreate fstab entries in /etc/fstab
# (and make /mnt directories if $1 = -m)
#
# Author: Tomas M <http://slax.linux-live.org/>
# Modified: by Dimitris Tzemos <djemos at tetradio.gr>
if [ "`cat /proc/cmdline | grep nohd`" != "" -o "`cat /proc/cmdline | 
grep nohotplug`" != "" ]; then
    exit 0;
fi

if grep el_GR /proc/cmdline 1> /dev/null 2> /dev/null ; then
      GRFS=""
else
      GRFS=",utf8"
fi

FSTAB=/etc/fstab

echo "tmpfs            /                tmpfs       defaults         0   0
devpts           /dev/pts         devpts      gid=5,mode=620   0   0
proc             /proc            proc        defaults         0   0
/dev/fd0         /mnt/floppy      vfat,msdos 
noauto,users,suid,dev,exec,codepage=737,iocharset=iso8859-7$GRFS,rw 0 0" 
 >$FSTAB~

cat /proc/partitions | grep -v loop | egrep -o "[a-z]+[0-9]+" | while 
read PART; do
    DEV=/dev/$PART
    MNT=/mnt/$PART

    DEV0="`echo $PART | egrep -o \"[a-z]+\"`"
    if [ "0`cat /sys/block/$DEV0/removable 2>/dev/null`" -ne 0 ]; then
       MNT=$MNT"_removable"
       MNTRV="removable"
    fi

    FS="`blkid -s TYPE $DEV | cut -d = -f 2 | tr -d \" \\\"\"`"
    if [ "$FS" = "msdos" ]; then FS="vfat,msdos"; fi
    if [ "$FS" != "" ]; then
       if [ "$FS" = "swap" ]; then echo "$DEV $FS $FS $FS 0 0" >>$FSTAB~
       elif [ "$FS" = "vfat,msdos" ]; then
          echo "$DEV $MNT $FS 
umask=000,auto,users,suid,dev,exec,codepage=737,iocharset=iso8859-7$GRFS,rw 
0 0" >>$FSTAB~
       elif [ "$FS" = "vfat" ]; then
          echo "$DEV $MNT $FS 
umask=000,auto,users,suid,dev,exec,codepage=737,iocharset=iso8859-7$GRFS,rw 
0 0" >>$FSTAB~
       elif [ "$FS" = "ntfs" ]; then
          echo "$DEV $MNT $FS 
umask=000,auto,users,suid,dev,exec,iocharset=utf8,rw 0 0" >>$FSTAB~
       else echo "$DEV $MNT $FS auto,users,suid,dev,exec 0 0" >>$FSTAB~
       fi
    fi
done

for DEV in `cat /proc/sys/dev/cdrom/info | head -n 3 | tail -n 1 | cut 
-d ":" -f 2`; do
     echo "/dev/$DEV /mnt/$DEV""_cdrom auto 
noauto,users,exec,iocharset=utf8 0 0" >>$FSTAB~
done

mv $FSTAB~ $FSTAB

if [ "$1" = "-m" ]; then
    cat $FSTAB | egrep -o "/mnt/[a-z0-9_]+" | xargs -r mkdir -p
fi

Ελπίζω να σε βοηθήσουν αυτά να βγάλεις άκρη. Η κατέβασε το slackel-1.0 
απο το www.ellak.gr για να το δοκιμάσεις

Φιλικά Δημήτρης Τζέμος
djemos at tetradio.gr



More information about the Linux-greek-users mailing list