Added optional copying to sd_card

This commit is contained in:
Kevin Veen-Birkenbach 2020-04-30 09:29:57 +02:00
parent 7a4f700f0f
commit 30f1d3e021
2 changed files with 66 additions and 54 deletions

View File

@ -19,13 +19,14 @@ To install a Linux distribution manually on a SD card type in:
To pase the configuration to the program use this syntax: To pase the configuration to the program use this syntax:
```bash ```bash
( (
echo "$USER" #The username echo "$USER" # The username
echo "mmcblk1" #The device echo "mmcblk1" # The device
echo "3" #The raspberry pi number echo "3" # The raspberry pi number
echo "arch" #The operation system echo "arch" # The operation system
echo "user_password" #The user password echo "y" # Transfer image
echo "root_password" #The root password echo "user_password" # The user password
echo "y" #Copy wifi configurations to target system echo "root_password" # The root password
echo "y" # Copy wifi configurations to target system
)| sudo bash ./sd_setup.sh )| sudo bash ./sd_setup.sh
``` ```

View File

@ -1,5 +1,6 @@
#!/bin/bash #!/bin/bash
# shellcheck disable=SC2010 # ls | grep allowed # shellcheck disable=SC2010 # ls | grep allowed
# shellcheck disable=SC2143 # Suppress wrong grep -q warning
echo "Setupscript for Raspberry Pi SD's" echo "Setupscript for Raspberry Pi SD's"
echo echo
@ -176,60 +177,70 @@ mount_partitions(){
echo "The following mounts refering this setup exist:" && mount | grep "$working_folder" echo "The following mounts refering this setup exist:" && mount | grep "$working_folder"
} }
echo "Copy data to $sd_card_path..." echo "Should the image be transfered to $sd_card_path?(y/n)"
read -r transfer_image
if [ "$transfer_image" = "y" ]
then
echo "Starting image transfer..."
case "$os" in
"arch")
echo "Execute fdisk..."
( echo "o" #Type o. This will clear out any partitions on the drive.
echo "p" #Type p to list partitions. There should be no partitions left
echo "n" #Type n,
echo "p" #then p for primary,
echo "1" #1 for the first partition on the drive,
echo "" #press ENTER to accept the default first sector,
echo "+100M" #then type +100M for the last sector.
echo "t" #Type t,
echo "c" #then c to set the first partition to type W95 FAT32 (LBA).
echo "n" #Type n,
echo "p" #then p for primary,
echo "2" #2 for the second partition on the drive,
echo "" #and then press ENTER twice to accept the default first and last sector.
echo ""
echo "w" #Write the partition table and exit by typing w.
)| fdisk "$sd_card_path" || error "Creating partitions failed. Try \"sudo dd if=/dev/zero of=$sd_card_path bs=1M\""
case "$os" in echo "Format boot partition..."
"arch") mkfs.vfat "$boot_partition_path" || error "Format boot is not possible."
echo "Execute fdisk..."
( echo "o" #Type o. This will clear out any partitions on the drive.
echo "p" #Type p to list partitions. There should be no partitions left
echo "n" #Type n,
echo "p" #then p for primary,
echo "1" #1 for the first partition on the drive,
echo "" #press ENTER to accept the default first sector,
echo "+100M" #then type +100M for the last sector.
echo "t" #Type t,
echo "c" #then c to set the first partition to type W95 FAT32 (LBA).
echo "n" #Type n,
echo "p" #then p for primary,
echo "2" #2 for the second partition on the drive,
echo "" #and then press ENTER twice to accept the default first and last sector.
echo ""
echo "w" #Write the partition table and exit by typing w.
)| fdisk "$sd_card_path" || error "Creating partitions failed. Try \"sudo dd if=/dev/zero of=$sd_card_path bs=1M\""
echo "Format boot partition..." echo "Format root partition..."
mkfs.vfat "$boot_partition_path" || error "Format boot is not possible." mkfs.ext4 "$root_partition_path" || error "Format root is not possible."
echo "Format root partition..." mount_partitions;
mkfs.ext4 "$root_partition_path" || error "Format root is not possible."
mount_partitions; echo "Root files will be transfered to sd-card..."
bsdtar -xpf "$image_path" -C "$root_mount_path"
sync
echo "Root files will be transfered to sd-card..." echo "Boot files will be transfered to sd-card..."
bsdtar -xpf "$image_path" -C "$root_mount_path" mv -v "$root_mount_path/boot/"* "$boot_mount_path"
sync
echo "Boot files will be transfered to sd-card..." ;;
mv -v "$root_mount_path/boot/"* "$boot_mount_path" "moode")
unzip -p "$image_path" | sudo dd of="$sd_card_path" bs=1M conv=fsync || error "DD to $sd_card_path failed."
sync
;;
"retropie")
gunzip -c "$image_path" | sudo dd of="$sd_card_path" bs=1M conv=fsync
sync
;;
*)
error "Image transfer for operation system \"$os\" is not supported yet!";
;;
esac
else
echo "Skipping image transfer..."
fi
;; echo "Start regular mounting procedure..."
"moode") if [ "$(mount | grep -q "$boot_mount_path")" ] && [ "$(mount | grep -q "$root_mount_path")" ]
unzip -p "$image_path" | sudo dd of="$sd_card_path" bs=1M conv=fsync || error "DD to $sd_card_path failed." then
sync echo "Everything allready mounted. Skipping..."
else
mount_partitions; mount_partitions
;; fi
"retropie")
gunzip -c "$image_path" | sudo dd of="$sd_card_path" bs=1M conv=fsync
sync
mount_partitions;
;;
*)
error "Image transfer for operation system \"$os\" is not supported yet!";
;;
esac
echo "Define target paths..." echo "Define target paths..."
target_home_path="$root_mount_path/home/"; target_home_path="$root_mount_path/home/";