123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- #!/bin/sh
- #BLACKLIST_DEVICES="/dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde"
- BLACKLIST_DEVICES="/dev/sda"
- # 1MB blocksize
- BLOCKSIZE=1048576
- function usage() {
- echo "Usage: $(basename $0) IMAGE DEVICE"
- }
- function image_details() {
- IMG=$1
- echo "Image details"
- echo "============="
- echo " image: $(stat --printf '%N\n' $IMG)"
- echo " size: $(stat -L --printf '%s bytes\n' $IMG)"
- echo " modified: $(stat -L --printf '%y\n' $IMG)"
- echo " type: $(file -L -b $IMG)"
- echo ""
- }
- function device_details() {
- DEV=$1
- BLOCK_SIZE=512
- echo "Device details"
- echo "=============="
- echo " device: $DEVICE"
- if [ -f "/sys/class/block/$DEV/device/vendor" ]; then
- echo " vendor: $(cat /sys/class/block/$DEV/device/vendor)"
- else
- echo " vendor: UNKOWN"
- fi
- if [ -f "/sys/class/block/$DEV/device/model" ]; then
- echo " model: $(cat /sys/class/block/$DEV/device/model)"
- else
- echo " model: UNKNOWN"
- fi
- if [ -f "/sys/class/block/$DEV/size" ]; then
- echo " size: $[$(cat /sys/class/block/$DEV/size)*BLOCK_SIZE] bytes"
- else
- echo " size: UNKNOWN"
- fi
- echo ""
- }
- if [ $# -ne 2 ]; then
- usage
- exit 1
- fi
- IMAGE=$1
- DEVICE=$2
- if [ ! -e "$IMAGE" ]; then
- echo "ERROR: Image $IMAGE does not exist"
- usage
- exit 1
- fi
- if [ "${BLACKLIST_DEVICES/${DEVICE}/ERROR}" != "$BLACKLIST_DEVICES" ]; then
- echo "ERROR: Device $DEVICE is blacklisted"
- exit 1
- fi
- if [ ! -w "$DEVICE" ]; then
- echo "ERROR: Device $DEVICE does not exist or is not writable"
- usage
- exit 1
- fi
- image_details $IMAGE
- device_details $(basename $DEVICE)
- printf "Write $IMAGE to $DEVICE [y/N]? "
- read RESPONSE
- if [ "$RESPONSE" != "y" ]; then
- echo "Write aborted"
- exit 0
- fi
- echo "Writing image..."
- dd if="$IMAGE" of="$DEVICE" bs="$BLOCKSIZE"
- sync
|