Skip to content

Instantly share code, notes, and snippets.

@crowz-fx

crowz-fx/burn_arch.sh

Last active Apr 13, 2020
Embed
What would you like to do?
a shell script to be run on a linux box that burns a raspberry Pi flavour Arch Linux install to an SD card (or other media)
#!/bin/sh
###################
# Author: Lui Crowie (crowz-fx // crowzfx.co.uk)
#
# Requirements;
# 1. sudo apt-get install bsdtar // tar should work fine, just modify line 98
# 2. You know how to use lsblk to get your device identifier i.e. /dev/sdb
# #################
###################
# Pre-reqs and checks
###################
printUsage() {
echo "Usage: burn_arch.sh {drive identifier i.e. b} {raspberry pi version i.e. 4}"
echo ""
echo "Example:"
echo " burn_arch.sh b 3"
echo ""
}
if [ -z "$1" ]; then
printUsage
exit 1
fi
if [ -z "$2" ]; then
printUsage
exit 1
fi
echo "PRE-REQ; Ignore if the following two lines fails..."
sudo umount /dev/sd${1}1
sudo umount /dev/sd${1}2
echo "PRE-REQ; Wiping disk..."
sudo sfdisk --delete /dev/sd${1}
partprobe
sleep 3
partprobe
sync
echo "PRE-REQ; Disk passed in has been erased!"
# setup folders
folder_to_use="/tmp/arch_install"
sudo rm -rf ${folder_to_use}
mkdir -p ${folder_to_use}
cd ${folder_to_use}
echo "PRE-REQ; In folder --> ${folder_to_use}"
echo "### Pre-reqs done!"
###################
# Information print out of system and script
###################
echo ""
echo " Date Executed: ["$(date)"]"
echo ""
echo ""
echo " Burning Arch Linux to SD CARD: [/dev/sd${1}]..."
echo ""
echo " PI board architecture version: [${2}]..."
echo ""
echo ""
###################
# Burn partions to the device
###################
echo "start= 2048, size= 204800, type=c" | sudo sfdisk /dev/sd${1}
partprobe
sleep 3
partprobe
sync
# no size denoted here as want to use the maximum the disk allows
# also -a is to append and not wipe out the above partion we just created
echo "start= 206848, type=83" | sudo sfdisk -a /dev/sd${1}
partprobe
sleep 3
partprobe
sync
echo "### Created partions!"
###################
# Mount volumes and explode tar into it
###################
sudo mkfs.vfat /dev/sd${1}1
mkdir boot
sudo mount /dev/sd${1}1 boot
echo "### boot volume mounted!"
yes | sudo mkfs.ext4 /dev/sd${1}2
mkdir root
sudo mount /dev/sd${1}2 root
echo "### root volume mounted!"
wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-${2}-latest.tar.gz
sudo bsdtar -xpf ArchLinuxARM-rpi-${2}-latest.tar.gz -C root
echo "### Exploded the tar archive "
sync
sudo mv root/boot/* boot
sudo umount boot root
echo "### Final boot files moved, synced and unmounted!"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.