| #!/bin/sh |
| |
| OPT=$(getopt -n "$0" -o er -l i-really-mean-it,erase-backups -- "$@") |
| if [ $? != 0 ]; then |
| echo "getopt failed" |
| exit 1 |
| fi |
| eval set -- "$OPT" |
| |
| ireallymeanit=0 |
| erasebackups=0 |
| while true; do |
| case "$1" in |
| -r|--i-really-mean-it ) ireallymeanit=1 ;; |
| -e|--erase-backups ) erasebackups=1 ;; |
| -- ) shift; break ;; |
| * ) echo "***Illegal option: $1" >&2; exit 1 ;; |
| esac |
| shift |
| done |
| |
| if [ $ireallymeanit -eq 0 ]; then |
| echo |
| echo " * * *" |
| echo "THIS PROGRAM WILL WIPE ALL DATA IN THE FLASH PARTITIONS!" |
| echo " * * *" |
| echo |
| echo -n "Are you sure (y/n)? " |
| read yesno |
| [ "$yesno" = "y" ] || exit 1 |
| echo |
| ireallymeanit=1 |
| fi |
| |
| # copied from S08volcheck |
| check_mmc() |
| { |
| sgdisk -p /dev/mmcblk0 | |
| while read number start end size unit code name; do |
| if [ "$name" = "$1" ]; then |
| echo $number |
| fi |
| done |
| } |
| |
| leds 0 15 0 15 0 15 # noisy leds as we wipe things |
| |
| # try to umount what we can |
| pkill -9 -f miniclient |
| pkill -9 -f siege |
| pkill -9 -f dir-monitor |
| pkill -9 -f app_gtv |
| pkill -9 -f apptvg |
| pkill -9 -f bsa |
| sleep 5 |
| ( |
| lsof | grep /user |
| lsof | grep /config |
| ) | sed -e 's/^/BUSY: /' |
| umount -f /config |
| umount -f /user |
| |
| for mtdname in "data+ubi"; do |
| mtd=$(whichmtd "$mtdname") |
| if [ -n "$mtd" ]; then |
| echo "Wiping $mtdname ($mtd)..." |
| ubiformat --force -y "$mtd" |
| fi |
| done |
| |
| for mtdname in "data+ext4" "userdata"; do |
| mtd=$(check_mmc "$mtdname") |
| if [ -n "$mtd" ]; then |
| echo "Wiping $mtdname ($mtd)..." |
| dd if=/dev/zero of=/dev/mmcblk0p$mtd bs=65536 count=200 |
| fi |
| done |
| |
| if [ $erasebackups -ne 0 ]; then |
| echo "Erasing backup files..." |
| rm -f /var/media/Wiz.bak /var/media/ManufacturingBurnin.mov |
| fi |
| |
| leds 0 # done |
| |
| echo "Rebooting in 10 seconds..." |
| sleep 10 |
| reboot |