home *** CD-ROM | disk | FTP | other *** search
/ Enter 2006 October / Enter 10 2006.iso / boot / isolinux / initrd / in / usr / lib / setup / scanpartitions < prev    next >
Encoding:
Text File  |  2006-04-06  |  1.8 KB  |  75 lines

  1. #!/bin/sh
  2. # (C) Klaus Knopper Nov 2002
  3. # Reads /proc/partitions, returns table of the form
  4. # basename(devicefile) mountpoint filesystemtype
  5. # Useful for automatic generation of /etc/fstab entries (you
  6. # still may have to add noauto 0 0).
  7.  
  8. # Modified by maestromae for KateOS
  9.  
  10. T_PX=/mnt
  11.  
  12. [ ! -e /proc/partitions ] && { echo "$0: /proc not mounted, exiting" >&2; exit 1; }
  13.  
  14. ###
  15.  
  16. list_cdrom_devices()
  17. {
  18.    if [ -r /proc/sys/dev/cdrom/info ] ; then
  19.    for CDDEVICE in `cat /proc/sys/dev/cdrom/info | head -n 3 | tail -n 1 | cut -d ":" -f 2`; do
  20.       echo "/dev/$CDDEVICE"
  21.    done
  22.    fi        
  23. }
  24.  
  25.  
  26. if [ -z "$1" ]; then
  27. partitions=""
  28. disks=""
  29. disksize=0
  30. blocksum=0
  31. pold="none"
  32. while read major minor blocks partition relax; do
  33. partition="${partition#/dev/}"
  34. [ -z "$partition" -o ! -e "/dev/$partition" ] && continue
  35. [ "$blocks" -lt 2 ] 2>/dev/null && continue
  36. case "$partition" in
  37. ?d?|ub?|ataraid/d?|rd/c?d?) disks="$disks $partition"; disksize="$blocks"; blocksum=0;;
  38. ram*|cloop*|loop*) ;; # Kernel 2.6 bug?
  39. *) blocksum="$(($blocksum + $blocks))"; [ "$blocksum" -gt "$disksize" ] >/dev/null 2>&1 || partitions="$partitions /dev/$partition";;
  40. esac
  41. done <<EOT
  42. $(awk 'BEGIN{old="__start"}{if($0==old){exit}else{old=$0;if($4&&$4!="name"){print $0}}}' /proc/partitions)
  43. EOT
  44.  
  45. # Add disks without partition table (probably ZIP drives)
  46. for d in $disks; do
  47. case "$partitions" in */dev/$d*) continue;; esac
  48. partitions="$partitions /dev/$d"
  49. done
  50. else
  51. partitions="$*"
  52. fi
  53.  
  54. for p in $partitions; do
  55. fs="auto"
  56. # fstype is an external script
  57. scanfs="$(fstype $p)"
  58. [ -n "$scanfs" ] && fs="$scanfs"
  59. mountpoint="/mnt/${p##*/}"
  60. if [ "$fs" = "swap" ] ; then 
  61. true
  62. else
  63. echo "${p}" "${mountpoint}" "${fs}"
  64. fi
  65. done
  66.  
  67.  
  68. #list_cdrom_devices | while read DEVICE; do
  69. #      MOUNTDIR="/mnt/`basename $DEVICE`_cdrom"
  70. #      echo "$DEVICE $MOUNTDIR  iso9660     noauto,owner,ro  0   0" 
  71. #done
  72.  
  73.  
  74. exit 0
  75.