#! /bin/bash set -u set -e if [ -z "$1" ] || [ ! -f "$1" ]; then echo "Argument must be the path to a binary to splice into a bootsector" exit 1 fi INSIZE=$(stat -c%s $1) if [ $INSIZE -ge 510 ]; then echo "Input file is greater than bootsector max size (510 bytes)" exit 1 fi OUTFILE="bootable.img" echo -n "[*] Creating bootsector template... " dd if=/dev/zero bs=510 count=1 of="$OUTFILE" >/dev/null 2>&1 echo -ne "\x55\xaa" >> "$OUTFILE" dd if=/dev/zero bs=512 count=255 ibs=512 seek=1 of="$OUTFILE" >/dev/null 2>&1 echo " OK!" echo -n "[*] Inserting bootsector... " dd if="$1" of="$OUTFILE" conv=notrunc >/dev/null 2>&1 echo " OK!" echo -n "[*] Inserting kernel... " dd if="bin/src._kernel._main.bin" of="$OUTFILE" conv=notrunc ibs=512 seek=1 >/dev/null 2>&1 echo " OK!" echo "Done. File at:" echo "$OUTFILE"