Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- set -e
- set -u
- usage() {
- echo "Usage: $0 DEVICE IMAGE HOSTNAME"
- echo "Example: $0 /dev/mmcblkX ArchLinuxARM-rpi-2-latest.tar.gz myrpi"
- exit 1
- }
- [ $# -ne 3 ] && { usage; }
- DEVICE="$1"
- IMAGE="$2"
- HOSTNAME="$3"
- if [ ! -e "$DEVICE" ]; then
- echo "Device $DEVICE not found!"
- echo "Give a valid device (e.g. /dev/sdX)"
- exit 2
- fi
- echo "Flashing device $DEVICE and setting hostname to $HOSTNAME"
- TMP_DIR=$(mktemp -d)
- echo "Temp directory: $TMP_DIR"
- cd "$TMP_DIR"
- cleanup() {
- echo "Cleaning up $TMP_DIR"
- rm -rf "$TMP_DIR"
- }
- trap cleanup 0
- echo "Creating partitions"
- echo "o
- p
- n
- p
- 1
- +100M
- p
- t
- c
- n
- p
- 2
- p
- w
- w
- " | fdisk "$DEVICE"
- echo "Creating boot filesystem"
- mkfs.vfat "$DEVICE"p1
- mkdir boot
- mount "$DEVICE"p1 boot
- echo "Creating root filesystem"
- mkfs.ext4 "$DEVICE"p2
- mkdir root
- mount "$DEVICE"p2 root
- echo "Copying base image"
- tar -xf "$IMAGE" -C root
- sync
- echo "Copying boot files to boot partition"
- mv root/boot/* boot
- echo "Setting hostname to $HOSTNAME"
- echo "$HOSTNAME" > root/etc/hostname
- echo "Unmounting partitions"
- sync
- umount boot root
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement