pokedisks 640 B

1234567891011121314151617181920212223
  1. #!/bin/sh
  2. #
  3. # Workaround for certain power management misfeatures of some harddisks
  4. # Copyright (c) 2012-2020 Michael Buesch <m@bues.ch>
  5. # Licensed for any use.
  6. #
  7. # Regular expression of affected harddisk models
  8. # This regex matches on /sys/block/DISK/device/model
  9. models='(^EZRX)|(^HDS5C)|(^DT01ACA)|(2CX188)'
  10. block="$(hexdump -n 2 -e '/2 "%u"' /dev/urandom)"
  11. for disk in /dev/hd? /dev/sd?; do
  12. [ -b "$disk" ] || continue
  13. base="$(basename "$disk")"
  14. grep -qEe "$models" "/sys/block/$base/device/model" || continue
  15. # echo "Poking $disk block $block"
  16. dd if="$disk" of=/dev/null bs=512 count=1 skip="$block" >/dev/null 2>&1
  17. done
  18. exit 0