home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / lib / partman / finish.d / 50fstab_removable_media_entries < prev    next >
Encoding:
Text File  |  2006-08-30  |  3.0 KB  |  120 lines

  1. #!/bin/sh
  2.  
  3. [ -f /target/etc/fstab ] || exit 0
  4.  
  5. MEDIA=/media # or MEDIA='' to make directories in /
  6.  
  7. # dev, mountpoint, type, options, dump, pass
  8. addfstab () {
  9.     printf "%-15s %-15s %-7s %-15s %-7s %s\n" "$1" "$2" "$3" "$4" "$5" "$6" >> /target/etc/fstab
  10. }
  11.  
  12. rm_dir_or_link () {
  13.     if [ -L "$1" ]; then
  14.     rm "$1"
  15.     elif [ -d "$1" ]; then
  16.     rmdir "$1"
  17.     fi
  18. }
  19.  
  20. # category, file system, options, main device, other devices ...
  21. populate_media () {
  22.     local category fs options number mount_point
  23.     category=$1
  24.     fs=$2
  25.     options=$3
  26.     shift; shift; shift
  27.     mkdir -p /target$MEDIA
  28.     if [ "$1" ]; then
  29.         rm_dir_or_link /target${MEDIA}/${category}
  30.         ln -s ${category}0 /target${MEDIA}/${category}
  31.     fi
  32.     number=0
  33.     while [ "$1" ]; do
  34.     mount_point="${MEDIA}/${category}$number"
  35.     addfstab $1 $mount_point $fs $options 0 0
  36.     rm_dir_or_link /target$mount_point
  37.     mkdir -p /target$mount_point
  38.     number=$(($number + 1))
  39.     shift
  40.     done
  41. }
  42.  
  43. CDDEV=$(grep /cdrom /proc/mounts | cut -d ' ' -f 1 | grep -v ^/dev/loop)
  44. if [ -n "$CDDEV" ]; then
  45.     MAPCDDEV=$(mapdevfs $CDDEV)
  46. else
  47.     MAPCDDEV=''
  48. fi
  49.  
  50. CDDEVICES=''
  51. for dev in /dev/cdroms/*; do
  52.     [ -b "$dev" ] || continue
  53.     mapdev=$(mapdevfs $dev)
  54.     if [ -n "$mapdev" ] && [ "$mapdev" != "$MAPCDDEV" ]; then
  55.     CDDEVICES="$CDDEVICES $mapdev"
  56.     fi
  57. done
  58. if [ -n "$MAPCDDEV" ]; then
  59.     CDDEVICES="$MAPCDDEV $CDDEVICES" # first the mounted cdrom
  60. fi
  61.  
  62. populate_media cdrom udf,iso9660 user,noauto $CDDEVICES
  63. # Compatability link to keep things working; sarge is not migrated away
  64. # entirely from /cdrom.
  65. if [ -n "$CDDEVICES" ]; then
  66.     rm_dir_or_link /target/cdrom
  67.     ln -s media/cdrom /target/cdrom
  68. fi
  69.  
  70. FDDEVICES=''
  71. for dev in /dev/floppy/?; do
  72.     [ -b "$dev" ] || continue
  73.     mapdev=$(mapdevfs $dev)
  74.     if [ "$mapdev" ]; then
  75.     FDDEVICES="$FDDEVICES $mapdev"
  76.     fi
  77. done
  78.  
  79. populate_media floppy auto rw,user,noauto $FDDEVICES
  80.  
  81. # See if a usb storage device is plugged in right now. If so, assume it is
  82. # removable media unless the disk is already listed in the fstab. 
  83. USBDEVICES=''
  84. HD_MEDIA=$(grep /hd-media /proc/mounts | cut -d ' ' -f 1)
  85. if [ -n "$HD_MEDIA" ]; then
  86.     HD_MEDIA="$(mapdevfs $HD_MEDIA)"
  87. fi
  88. for dir in /proc/scsi/usb-storage-* /proc/scsi/usb-storage; do
  89.     if [ -d "$dir" ]; then
  90.         for ent in $dir/*; do
  91.         if [ -f "$ent" ]; then
  92.             host=$(grep "Host scsi" $ent | sed 's/.*scsi\([0-9]\).*/\1/')
  93.             infstab=""
  94.             for dev in $(find /dev/scsi/host$host/ -type b); do
  95.                 if [ -b "$dev" ]; then
  96.                  if grep -q "^$(mapdevfs $dev) " /target/etc/fstab; then
  97.                 infstab=1
  98.             fi
  99.              fi
  100.             done
  101.         if [ ! "$infstab" ]; then
  102.             dev=$(mapdevfs $(find /dev/scsi/host$host/ -type b | grep /disc))
  103.             if [ -z "$USBDEVICES" ]; then
  104.                 USBDEVICES="$dev"
  105.             else
  106.                 if [ "$dev" != "$HD_MEDIA" ]; then
  107.                     USBDEVICES="$USBDEVICES $dev"
  108.                         else
  109.                 # If installing from usb, list that device first.
  110.                 USBDEVICES="$dev $USBDEVICES"
  111.             fi
  112.             fi
  113.         fi
  114.         fi
  115.         done
  116.     fi
  117. done
  118.  
  119. populate_media usb auto rw,user,noauto $USBDEVICES
  120.