Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mitchellkrogza/bf2f21df9c230aabca5fa5255e0a2c7a to your computer and use it in GitHub Desktop.
Save mitchellkrogza/bf2f21df9c230aabca5fa5255e0a2c7a to your computer and use it in GitHub Desktop.
Raspberry Pi 3: Arch Linux ARM 64bit to SDcard Script. This is for the Rapsberry Pi 3. For the RPi 2 (or the 3 32bit), see https://gist.github.com/pklaus/9dd4a7bf040788cda501 . For the RPi 1, see https://gist.github.com/pklaus/b92dfc72136d1509c2ed .
#!/bin/bash
# <https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-3>
set -x
echo -e "\n\nArch Linux ARM to SD Card\n"
echo -e "for the Raspberry Pi 3\n\n"
echo -e "\nAll drives on this computer:\n"
ls -1 /dev/sd?
echo -e "\nLast messages in syslog:\n"
dmesg | tail
echo -e "\nChoose sd card (like /dev/sdX):\n"
read SDCARD
echo -e "\nYou chose $SDCARD\nAre you sure to continue? Press Ctrl-C to abort!"
read
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi
#cd /tmp
echo -e "\nDownloading the Arch Linux ARM root filesystem (if needed):\n"
#URL=http://de7.mirror.archlinuxarm.org/os/ArchLinuxARM-rpi-3-latest.tar.gz
# usually this mirror (^) is much faster than the main download server:
URL=http://archlinuxarm.org/os/ArchLinuxARM-rpi-3-latest.tar.gz
FNAME=$(basename "$URL")
FSIZE=$(curl --head --location --silent "$URL" --write-out '%{http_code} %{size_download} \n' | tac | grep -m1 Content-Length | cut -f 2 -d' ' | tr -d '\r')
if [ -n "$FNAME" ]
then
CURSIZE=$(wc -c <"$FNAME")
if [ $CURSIZE -ne $FSIZE ]; then
rm "$FNAME"
echo "Removing any downloaded and leftover Arch Linux ARM image"
fi
fi
curl --location --remote-name --time-cond "$FNAME" "$URL"
if [ $? -ne 0 ]; then
echo "Could not download the image file, please check the mirror"
exit 1
fi
echo -e "\nUnmounting partitions found on ${SDCARD}\n"
for MOUNT in ${SDCARD}?
do
echo $MOUNT
umount $MOUNT
done
parted -s $SDCARD unit s print
parted -s $SDCARD mktable msdos
parted -s $SDCARD mkpart primary fat32 8192s 128MiB
parted -s $SDCARD mkpart primary 128MiB 100%
parted -s $SDCARD unit s print
mkfs.vfat ${SDCARD}1
mkfs.ext4 ${SDCARD}2
rm -rf boot
rm -rf root
mkdir boot
mkdir root
mount ${SDCARD}1 boot
mount ${SDCARD}2 root
echo -e "\nExtracting the root filesystem\n"
bsdtar -xpf ArchLinuxARM-rpi-3-latest.tar.gz -C root
sync
echo -e "\nMoving boot files to the first partition\n"
mv root/boot/* boot
echo -e "\nUnmounting the two partitions\n"
umount boot root
rmdir boot root
echo "Insert the SD card into the Raspberry Pi 2, connect ethernet, and apply 5V power."
echo "Use the serial console or SSH to the IP address given to the board by your router. The username/password combination is alarm/alarm. The default root password is 'root'."
#cd -
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment