Advertisement
s243a

/initrd/sbin/probepart_init (tahrpup)

Jan 14th, 2018
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.62 KB | None | 0 0
  1. #!/bin/sh
  2. #Barry Kauler www.puppylinux.com
  3. #LGPL 2007 Puppy Linux www.puppylinux.com
  4. #v3.97 handle /dev/hd also for retro kernels.
  5. #v4.01 19may2008 BK: bugfix for 2.6.25.4, ram entries in /proc/partitions.
  6. #100912 no longer supporting /proc/ide.
  7. #101127 debug output.
  8. #110125,110126 brought back /proc/ide /dev/hd* support.
  9. #120602 kernel 3.2.18 major deviance from earlier kernels, /proc/partitions (and /sys/block) now shows /dev/sr0 when no disk.
  10. #       new situation, getting duplicate /dev/sr0 so need 'sort -u'.
  11. #130127 related to 120602, also screen sr0-9 out of /proc/partitions -- this may fix some problems, see main 'probepart'.
  12. #130128 support 'udf' f.s. also see main 'probepart'.
  13.  
  14. #***this one runs in initrd, very slightly different from the main one.***
  15.  
  16. SUNITS="$1" #allowed params are '-k' or '-m'.
  17. OUTPUT=""
  18.  
  19. ##devices that have partitions...
  20. #([^k] is to eliminate mmcblk0 device -- allow mmcblk0p1 etc) v4.01 bugfix eliminate ram... 110126
  21. #130127 [^kr][0-9] screens out sr0-9... (note, unfortunately will also screen out sdr0-9)
  22. PARTITIONS="`grep -E '^ .*[^kr][0-9]$' /proc/partitions | tr -s ' ' | cut -f 4-5 -d ' ' | grep -vE ' loop| ram'`"
  23. echo "PARTITIONS=${PARTITIONS}" > /tmp/probepart.log #101127
  24. PARTNAMES="`echo "$PARTITIONS" | cut -f 2 -d ' '`" #120602
  25.  
  26. #101127 for comparison, log this... 110125 restore hd...
  27. SYSBLOCKSUB="`ls -1 /sys/block/*/ | grep -E '^hd|^scd|^sd|^mmc|^sr' | tr '\n' ' '`"
  28. echo "SYSBLOCKSUB=${SYSBLOCKSUB}" >> /tmp/probepart.log #101127
  29.  
  30. #all disk devices...
  31. ALLDRVS="`ls -1 /sys/block | grep -E '^scd|^sd|^mmc|^sr'`"
  32. [ -e /proc/ide ] && ALLDRVS="${ALLDRVS}
  33. `ls -1 /proc/ide | grep '^hd'`" #110125 120602
  34. echo "ALLDRVS=${ALLDRVS}" >> /tmp/probepart.log #101127 for debugging.
  35.  
  36. #all drives and partitions... 120602 sort... crap busybox sort does not support -V
  37. ALLDEVS="`echo "${PARTNAMES}
  38. ${ALLDRVS}" | sort -u | tr '\n' ' '`"
  39.  
  40. for ONEDEV in $ALLDEVS
  41. do
  42.  MEDIATYPE="" #130128
  43.  FSTYPE="unknown"
  44.  SIZE=`echo "$PARTITIONS" | grep " ${ONEDEV}$" | cut -f 1 -d ' '`
  45.  DEVICE="`echo "$PARTITIONS" | grep " ${ONEDEV}$" | cut -f 2 -d ' '`"
  46.  echo "ONEDEV=${ONEDEV} SIZE=${SIZE} DEVICE=${DEVICE}" >> /tmp/probepart.log #101127 for debugging.
  47.  if [ ! $SIZE ];then
  48.   [ "`echo "$PARTITIONS" | grep "$ONEDEV"`" != "" ] && continue
  49.   #must be a device without partitions...
  50.   SIZE=0
  51.   DEVICE="$ONEDEV"
  52.   case $DEVICE in
  53.    hd*) [ "`cat /proc/ide/$DEVICE/media`" = "cdrom" ] && MEDIATYPE="optical" ;; #130128
  54.    scd*|sr*) MEDIATYPE="optical" ;; #130128 #usb,sata,scsi cd/dvd drive.
  55.   esac
  56.   if [ "$MEDIATYPE" != "optical" ];then #130128
  57.    #for hd* or sd* superfloppy, determine size...
  58.    BSIZE=`fdisk -l /dev/$DEVICE | grep "^Disk " | tr s ' ' | cut -f 7 -d ' '`
  59.    [ $BSIZE ] && SIZE=$(($BSIZE/1024)) #KB
  60.   fi
  61.  fi
  62.  FSTYPE="`blkid /dev/$DEVICE 2>/dev/null | grep -o ' TYPE=".*"' | cut -f 2 -d '"'`" #'geany 130526
  63.  [ ! "$FSTYPE" ] && FSTYPE="unknown"
  64.  echo "  SIZE=${SIZE} FSTYPE=${FSTYPE}" >> /tmp/probepart.log #101127 for debugging.
  65.  
  66.  #(using makebootfat to setup a USB-FLOPPY/-HDD/-ZIP combined bootable FAT drive).
  67.  xFSTYPE=''
  68.  if [ "$FSTYPE" = "unknown" ];then
  69.   xDEVICE="`echo -n "$DEVICE" | sed 's|[0-9]*$||'`" #remove partition number.
  70.   xFSTYPE="`fdisk -l /dev/$xDEVICE 2>/dev/null | grep "^/dev/$DEVICE " | head -n 1 | grep -o -E 'FAT12$|FAT16$|FAT32$'`"
  71.   [ "$xFSTYPE" != "" ] && FSTYPE='vfat'
  72.  fi
  73.  
  74.  [ "$FSTYPE" = "unknown" ] && FSTYPE="none"
  75.  
  76.  [ "$SUNITS" = "" ] && SIZE=$(($SIZE*2)) #512 byte blocks.
  77.  [ "$SUNITS" = '-m' ] && SIZE=$(($SIZE/1024)) #MB
  78.  
  79.  echo "/dev/$DEVICE|$FSTYPE|$SIZE"
  80.  echo "  /dev/$DEVICE|$FSTYPE|$SIZE" >> /tmp/probepart.log #101127
  81. done
  82.  
  83. ###END###
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement