diff --git a/seqs/raspberry.sh b/seqs/raspberry.sh index 205b488..6183d2c 100755 --- a/seqs/raspberry.sh +++ b/seqs/raspberry.sh @@ -31,13 +31,16 @@ step_config() { SDDEV= SDBOOT= +SDBOOTPUUID= SDROOT= SDROOTPUUID= HDDEV= HDROOT= HDROOTPUUID= +HDSWAP= +HDSWAPPUUID= -step_1_info() { echo "Download latest raspbian lite image from" +step_1_info() { echo "Download latest Raspberry Pi OS lite image from" echoinfo "$downUrl"; } step_1_alias() { ALIAS="setup"; } step_1() { @@ -49,16 +52,16 @@ step_1() { downImgName="${downDir}/$(zipinfo -1 "$downLoc")" if [ ! -f "$downImgName" ] ; then exe unzip "$downLoc" -d "$downDir" - endReturn -o $? "Unzip raspbian image failed" + endReturn -o $? "Unzip raspios image failed" fi } -downUrl="https://downloads.raspberrypi.org/raspbian_lite_latest" +downUrl="https://downloads.raspberrypi.org/raspios_lite_armhf_latest" downImgName="" downDay=$(date +%Y%m%d) downDir="/tmp" -downLoc="${downDir}/raspbian_$downDay.zip" +downLoc="${downDir}/raspios_$downDay.zip" -step_2_info() { echo -n "Write raspbian image to SD card " +step_2_info() { echo -n "Write Raspberry Pi OS image to SD card " if [ -z $2 ] ; then echo "[SD CARD DEVICE]"; else echo "$2"; fi echoinfo "This operation will delete all data previously on the SD card!" } @@ -69,7 +72,7 @@ step_2() { step setup fi if [ ! -f "$downImgName" ] ; then - echoerr " [E] No raspian image found" + echoerr " [E] No raspios image found" return 1 fi @@ -153,18 +156,34 @@ step_4() { read_sd_dev "$2" endReturn -o $? "SD detection error $?" echo " [I] SD: $SDDEV" - echo " $SDBOOT" - echo " $SDROOT" - echo " $SDROOTPUUID" + echo " $SDBOOT [$SDBOOTPUUID]" + echo " $SDROOT [$SDROOTPUUID]" read_hd_dev "$3" endReturn -o $? "HD detection error" echo " [I] HD: $HDDEV" - echo " $HDROOT" - echo " $HDROOTPUUID" + echo " $HDROOT [$HDROOTPUUID]" + echo " $HDSWAP [$HDSWAPPUUID]" echo + echo " [I] modify PARTUUID of $SDBOOT/cmdline.txt" - echo " root=PARTUUID=******00-01" + if [ -z $HDROOTPUUID ] ; then + echo " root=PARTUUID=******00-01" + else + echo " root=PARTUUID=$HDROOTPUUID" + fi + echo " remove \"init=/usr/lib/raspi-config/init_resize.sh\"" + echo + echo " [I] Clone SD root to HD root:" + echo " rsync -avxHAX --numeric-ids --info=stats2 $SDROOT/ $HDROOT/" + echo + echo " [I] modify $HDROOT/etc/fstab" + echo " PARTUUID=$SDBOOTPUUID /boot vfat ro,defaults 0 2" + echo " PARTUUID=$SDROOTPUUID /backup ext4 ro,defaults,noatime 0 2" + echo " PARTUUID=$HDROOTPUUID / ext4 defaults,noatime 0 1" + echo " PARTUUID=$HDSWAPPUUID none swap sw 0 0" + echo + echo " [I] modify $HDROOT/etc/dhcpcd.conf for static IPs" } step_20_info() { echo "Disable swap file and remove it"; } @@ -240,11 +259,13 @@ read_sd_dev() { SDBOOT= SDROOT= SDROOTPUUID= + SDBOOTPUUID= SDDEV="$1" elif [ -z $SDDEV ] || [ ! -b "$SDDEV" ] ; then SDDEV= SDBOOT= SDROOT= + SDBOOTPUUID= SDROOTPUUID= echo " [I] Available devices:" echo @@ -254,33 +275,42 @@ read_sd_dev() { fi if [ ! -b "$SDDEV" ] ; then + echoerr " [I] $SDDEV not a block device" SDDEV= return 1 fi - if [ "$osName" == "Raspbian" ] ; then + if [[ "$SDDEV" =~ .*blk.* ]] ; then partExt="p" fi if [ -z $SDBOOT ] ; then SDBOOT=$(findmnt -no TARGET "${SDDEV}${partExt}1") fi + if [ -z $SDBOOTPUUID ] ; then + IFS=\" read -r _ vPARTUUID _ < <(blkid "${SDDEV}${partExt}1" -s PARTUUID) + SDBOOTPUUID=$vPARTUUID + fi if [ -z $SDROOT ] ; then SDROOT=$(findmnt -no TARGET "${SDDEV}${partExt}2") fi if [ -z $SDROOTPUUID ] ; then SDROOTPUUID=$(findmnt -no PARTUUID "${SDDEV}${partExt}2") fi + + return 0 } read_hd_dev() { if [ ! -z "$1" ] ; then HDROOT= HDROOTPUUID= + HDSWAPPUUID= HDDEV="$1" elif [ -z $HDDEV ] || [ ! -b "$HDDEV" ] ; then HDROOT= HDROOTPUUID= + HDSWAPPUUID= echo " [I] Available devices:" echo exe lsblk -p @@ -297,8 +327,16 @@ read_hd_dev() { HDROOT=$(findmnt -no TARGET "${HDDEV}1") fi if [ -z $HDROOTPUUID ] ; then - HDROOTPUUID=$(findmnt -no PARTUUID "${HDDEV}1") + IFS=\" read -r _ vPARTUUID _ < <(blkid "${HDDEV}1" -s PARTUUID) + HDROOTPUUID=$vPARTUUID fi + if [ -z $HDSWAPPUUID ] ; then + IFS=\" read -r _ vPARTUUID _ < <(blkid "${HDDEV}2" -s PARTUUID) + HDSWAPPUUID=$vPARTUUID + HDSWAP="${HDDEV}2" + fi + + return 0 } VERSION_SEQREV=9