summaryrefslogtreecommitdiff
path: root/ironic_python_agent/shell/write_image.sh
diff options
context:
space:
mode:
authorJosh Gachnang <josh@pcsforeducation.com>2014-03-19 15:50:43 -0700
committerJosh Gachnang <josh@pcsforeducation.com>2014-03-19 15:50:43 -0700
commitb30d345c2e8ec77935558f75080f734daa3ca4f0 (patch)
tree55439a0e95da702820e58176f8cd9c5c243a5e19 /ironic_python_agent/shell/write_image.sh
parent6e366520bbcdb1e4540d550a2017d5440b16938b (diff)
downloadironic-python-agent-b30d345c2e8ec77935558f75080f734daa3ca4f0.tar.gz
Renaming to IPA
Diffstat (limited to 'ironic_python_agent/shell/write_image.sh')
-rwxr-xr-xironic_python_agent/shell/write_image.sh40
1 files changed, 40 insertions, 0 deletions
diff --git a/ironic_python_agent/shell/write_image.sh b/ironic_python_agent/shell/write_image.sh
new file mode 100755
index 00000000..ad68298b
--- /dev/null
+++ b/ironic_python_agent/shell/write_image.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+#
+# This should work with almost any image that uses MBR partitioning and doesn't already
+# have 3 or more partitions.
+
+set -e
+
+log() {
+ echo "`basename $0`: $@"
+}
+
+usage() {
+ [[ -z "$1" ]] || echo -e "USAGE ERROR: $@\n"
+ echo "`basename $0`: IMAGEFILE DEVICE"
+ echo " - This script images DEVICE with IMAGEFILE"
+ exit 1
+}
+
+IMAGEFILE="$1"
+DEVICE="$2"
+
+[[ -f $IMAGEFILE ]] || usage "$IMAGEFILE (IMAGEFILE) is not a file"
+[[ -b $DEVICE ]] || usage "$DEVICE (DEVICE) is not a block device"
+
+# In production this will be replaced with secure erasing the drives
+# For now we need to ensure there aren't any old (GPT) partitions on the drive
+log "Erasing existing mbr from ${DEVICE}"
+dd if=/dev/zero of=$DEVICE bs=512 count=10
+
+## Doing two steps allows us to use dd, which allows us to tweak things like
+## blocksize and allows use of direct io
+# Converts image to raw
+log "Imaging $IMAGEFILE to RAW format"
+qemu-img convert -O raw $IMAGEFILE /tmp/image.raw
+
+# Write image onto device
+log "Imaging $DEVICE"
+dd if=/tmp/image.raw of=$DEVICE bs=64K oflag=direct
+
+log "${DEVICE} imaged successfully!"