diff --git a/README.md b/README.md new file mode 100644 index 0000000..6ce6c1d --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# flash-it + +Flash-it is a Bash script that flashes Sailfish OS images onto an SD card for the PineTab, PinePhone or the PinePhone devkit. diff --git a/flash-it.sh b/flash-it.sh index 8236cbc..e9f93bc 100755 --- a/flash-it.sh +++ b/flash-it.sh @@ -10,6 +10,8 @@ ROOTFS_DEVKIT_JOB=devkit-rootfs ROOTFS_PINEPHONE_DIR=pinephone ROOTFS_PINETAB_DIR=pinetab ROOTFS_DEVKIT_DIR=devkit +MOUNT_DATA=./data +MOUNT_BOOT=./boot # Header echo -e "\e[1m\e[91mSailfish OS Pine64 device flasher V$VERSION\e[0m" @@ -33,6 +35,7 @@ wget -O "${ROOTFS_JOB}.zip" "https://gitlab.com/sailfishos-porters-ci/dont_be_ev # Select flash target echo -e "\e[1mWhich SD card do you want to flash?\e[0m" +lsblk read -p "Device node (/dev/sdX): " DEVICE_NODE echo "Flashing image to: $DEVICE_NODE" echo "WARNING: All data will be erased! You have been warned!" @@ -40,10 +43,16 @@ echo "Some commands require root permissions, you might be asked to enter your s # Creating EXT4 file system echo -e "\e[1mCreating EXT4 file system...\e[0m" -sudo umount "/dev/sdd1" -sudo umount "/dev/sdd2" -sudo /sbin/parted $DEVICE_NODE mklabel gpt --script -sudo mkfs.ext4 $DEVICE_NODE +for PARTITION in $(ls ${DEVICE_NODE}*) +do + echo "Unmounting $PARTITION" + sudo umount $PARTITION +done +sudo /sbin/parted $DEVICE_NODE mklabel msdos --script +sudo /sbin/parted $DEVICE_NODE mkpart primary ext4 1MB 250MB --script +sudo /sbin/parted $DEVICE_NODE mkpart primary ext4 250MB 100% --script +sudo mkfs.ext4 -F -L boot "${DEVICE_NODE}1" # 1st partition = boot +sudo mkfs.ext4 -F -L data "${DEVICE_NODE}2" # 2nd partition = data # Flashing u-boot echo -e "\e[1mFlashing U-boot...\e[0m" @@ -56,15 +65,29 @@ echo -e "\e[1mFlashing rootFS...\e[0m" unzip "${ROOTFS_JOB}.zip" TEMP=`ls $ROOTFS_DIR/*/*.tar.bz2` echo "$TEMP" -sudo bsdtar -xpf "$TEMP" -C "$DEVICE_NODE" +mkdir "$MOUNT_DATA" +sudo mount "${DEVICE_NODE}2" "$MOUNT_DATA" # Mount data partition +sudo bsdtar -xpf "$TEMP" -C "$MOUNT_DATA" +sync + +# Copying kernel to boot partition +echo -e "\e[1mCopying kernel to boot partition...\e[0m" +cp "$MOUNT_DATA/boot/*" "$MOUNT_BOOT" sync # Clean up files echo -e "\e[1mCleaning up!\e[0m" +for PARTITION in $(ls ${DEVICE_NODE}*) +do + echo "Unmounting $PARTITION" + sudo umount $PARTITION +done rm "${UBOOT_JOB}.zip" rm -r "$UBOOT_DIR" rm "${ROOTFS_JOB}.zip" rm -r "$ROOTFS_DIR" +rm -rf "$MOUNT_DATA" +rm -rf "$MOUNT_BOOT" # Done :) echo -e "\e[1mFlashing $DEVICE_NODE OK!\e[0m"