You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.2 KiB
90 lines
2.2 KiB
#!/bin/bash |
|
|
|
# Script for writing a supplied image file to a data storage device (just usb drives for now) |
|
# Zen, 2022 |
|
|
|
# Font decoration for better a e s t h e t i c |
|
RED="\e[0;91m" |
|
GREEN="\e[0;92m" |
|
BLUE="\e[0;94m" |
|
BOLD="\e[1m" |
|
ULINE="\e[4m" |
|
NC="\e[0m" |
|
|
|
# ------------------- Step 1 - Select USB ------------------- |
|
|
|
echo "Looking for USB devices..." |
|
echo "" |
|
echo -e "${ULINE}Found these!${NC}" |
|
lsblk -pdo NAME,MODEL,TRAN | grep usb > usb-list |
|
i=1 |
|
while read -u 11 line; do |
|
echo -e "${BOLD}$i.${NC} $line" |
|
i=$((i+1)) |
|
done 11<usb-list |
|
echo "" |
|
|
|
read -p "Which USB would you like to write to? type a number, or 'c' to cancel: " -n1 dev |
|
echo "" |
|
echo "" |
|
case $dev in |
|
c) |
|
exit |
|
;; |
|
[1-9]) |
|
target=$(sed "${dev}q;d" usb-list | awk '{print $1}') |
|
echo -e "Writing image to: ${GREEN}$target${NC}" |
|
;; |
|
*) |
|
echo "lol what the heck does $dev mean" |
|
exit |
|
;; |
|
esac |
|
|
|
# ------------------- Step 2 - Select Image ------------------- |
|
|
|
ls images > img-list |
|
i=1 |
|
echo "" |
|
echo -e "${ULINE}Images${NC}" |
|
while read -u 11 line; do |
|
echo -e "${BOLD}$i.${NC} $line" |
|
i=$((i+1)) |
|
done 11<img-list |
|
echo "" |
|
read -p "Which image do you want to use? type a number, or 'c' to cancel: " -n1 img |
|
echo "" |
|
echo "" |
|
case $img in |
|
c) |
|
exit |
|
;; |
|
[1-9]) |
|
image=$(sed "${img}q;d" img-list | awk '{print $1}') |
|
echo -e "Okay, we're using ${BLUE}$image${NC} as the image file." |
|
;; |
|
*) |
|
echo "lol what the heck does $img mean" |
|
exit |
|
;; |
|
esac |
|
|
|
# ------------------- Step 3 - Write Image to USB ------------------- |
|
|
|
echo "" |
|
echo -e "Getting ready to write ${GREEN}$image${NC} to ${BLUE}$target${NC}" |
|
echo "" |
|
read -p "Press Enter to continue (ctrl+C to cancel):" |
|
unzip -p "images/$image" | sudo dd of=$target bs=4M conv=fsync status=progress |
|
|
|
# Leaving this line in if I want to debug and not necessarily run dd all the time |
|
# echo "unzip -p \"images/$image\" | sudo dd of=$target bs=4M conv=fsync status=progress" |
|
|
|
|
|
# ------------------- Step 4 - Cleaning Up ------------------- |
|
|
|
rm usb-list |
|
rm img-list |
|
echo "" |
|
echo -e "${BOLD}Congratulations!${NC} Write operation complete." |
|
echo "You probably want to prepare the USB with 'make preparations' before you use it."
|
|
|