mirror of
https://github.com/cimryan/teslausb.git
synced 2026-03-01 04:30:33 +00:00
50 lines
2.1 KiB
Bash
50 lines
2.1 KiB
Bash
#!/bin/bash -eu
|
|
|
|
function setup_progress () {
|
|
SETUP_LOGFILE=/boot/teslausb-headless-setup.log
|
|
if [ $HEADLESS_SETUP = "true" ]
|
|
then
|
|
echo "$( date ) : $1" >> "$SETUP_LOGFILE"
|
|
fi
|
|
echo $1
|
|
}
|
|
|
|
BACKINGFILES_MOUNTPOINT="$1"
|
|
MUTABLE_MOUNTPOINT="$2"
|
|
|
|
setup_progress "Checking existing partitions..."
|
|
PARTITION_TABLE=$(parted -m /dev/mmcblk0 unit B print)
|
|
DISK_LINE=$(echo "$PARTITION_TABLE" | grep -e "^/dev/mmcblk0:")
|
|
DISK_SIZE=$(echo "$DISK_LINE" | cut -d ":" -f 2 | sed 's/B//' )
|
|
|
|
ROOT_PARTITION_LINE=$(echo "$PARTITION_TABLE" | grep -e "^2:")
|
|
LAST_ROOT_PARTITION_BYTE=$(echo "$ROOT_PARTITION_LINE" | sed 's/B//g' | cut -d ":" -f 3)
|
|
|
|
FIRST_BACKINGFILES_PARTITION_BYTE="$(( $LAST_ROOT_PARTITION_BYTE + 1 ))"
|
|
LAST_BACKINGFILES_PARTITION_DESIRED_BYTE="$(( $DISK_SIZE - (100 * (2 ** 20)) - 1))"
|
|
|
|
ORIGINAL_DISK_IDENTIFIER=$( fdisk -l /dev/mmcblk0 | grep -e "^Disk identifier" | sed "s/Disk identifier: 0x//" )
|
|
|
|
setup_progress "Modifying partition table for backing files..."
|
|
BACKINGFILES_PARTITION_END_SPEC="$(( $LAST_BACKINGFILES_PARTITION_DESIRED_BYTE / 1000000 ))M"
|
|
parted -s -a optimal -m /dev/mmcblk0 unit B mkpart primary ext4 "$FIRST_BACKINGFILES_PARTITION_BYTE" "$BACKINGFILES_PARTITION_END_SPEC"
|
|
|
|
LAST_BACKINGFILES_PARTITION_BYTE=$(parted -m /dev/mmcblk0 unit B print | grep -e "^3:" | cut -d ":" -f 3 | sed 's/B//g' )
|
|
|
|
setup_progress "Modifying mutable (writable) partition for script usage..."
|
|
MUTABLE_PARTITION_START_SPEC="$(( $LAST_BACKINGFILES_PARTITION_BYTE / 1000000 ))M"
|
|
parted -s -a optimal -m /dev/mmcblk0 unit B mkpart primary ext4 "$MUTABLE_PARTITION_START_SPEC" 100%
|
|
|
|
NEW_DISK_IDENTIFIER=$( fdisk -l /dev/mmcblk0 | grep -e "^Disk identifier" | sed "s/Disk identifier: 0x//" )
|
|
|
|
setup_progress "Writing updated partitions to fstab and /boot/cmdline.txt"
|
|
sed -i "s/${ORIGINAL_DISK_IDENTIFIER}/${NEW_DISK_IDENTIFIER}/g" /etc/fstab
|
|
sed -i "s/${ORIGINAL_DISK_IDENTIFIER}/${NEW_DISK_IDENTIFIER}/" /boot/cmdline.txt
|
|
|
|
setup_progress "Formatting new partitions..."
|
|
mkfs.ext4 -F /dev/mmcblk0p3
|
|
mkfs.ext4 -F /dev/mmcblk0p4
|
|
|
|
echo "/dev/mmcblk0p3 $BACKINGFILES_MOUNTPOINT ext4 auto,rw,noatime 0 2" >> /etc/fstab
|
|
echo "/dev/mmcblk0p4 $MUTABLE_MOUNTPOINT ext4 auto,rw 0 2" >> /etc/fstab
|