diff --git a/packages/sysutils/busybox/scripts/fs-resize b/packages/sysutils/busybox/scripts/fs-resize index e56c86190..a6d6b4c3b 100755 --- a/packages/sysutils/busybox/scripts/fs-resize +++ b/packages/sysutils/busybox/scripts/fs-resize @@ -2,62 +2,70 @@ # SPDX-License-Identifier: GPL-2.0-or-later # Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv) -# Copyright (C) 2018-present Team CoreELEC (https://coreelec.org) -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +StartProgressLog() { + if [ "$1" = "spinner" ]; then + echo "*** $3" >>$LOG + fi + StartProgress "$@" +} if [ -e /storage/.please_resize_me ] ; then . /usr/lib/rocknix/functions hidecursor + mount -o remount,rw /flash + LOG=/flash/fs-resize.log + date -Iseconds >>$LOG + # this sh** was never intended to be used # on already installed and runing system - if [ -d /storage/.kodi -o -d /storage/.config -o -d /storage/.cache ] ; then + if [ -d /storage/.config -o -d /storage/.cache ] ; then rm -f /storage/.please_resize_me sync - echo "Resizing is not permitted - the system has already been initialised." - StartProgress countdown "Rebooting in 15s... " 15 "NOW" - reboot + echo "Resizing is not permitted - the system has already been initialised." | tee -a $LOG + mount -o remount,ro /flash + StartProgress countdown "Rebooting in 5s... " 5 "NOW" + reboot -f fi # get the disk. /storage on 2nd partition - PART=$(blkid | awk 'BEGIN {FS=":"} /'$(cat /proc/cmdline | sed -e 's#^.*disk=UUID=##g' -e 's#\ .*$##g')'/ {print $1}') - if [ "$(echo ${PART} | awk '/mmcblk/ || /nvme/ {print $1}')" ] - then - DISK=$(echo ${PART} | sed s/p[0-9]//g) - PARTNUM=$(echo ${PART} | sed "s#^.*[0-9]p##g") - else - DISK=$(echo ${PART} | sed s/[0-9]//g) - PARTNUM=$(echo ${PART} | sed "s#^.*sd[a-z]##g") - fi + echo $(grep "/storage " /proc/mounts) >>$LOG + PART=$(grep "/storage " /proc/mounts | cut -d" " -f1 | grep '2$') + + # get disk: /dev/sdx2 -> /dev/sdx, /dev/mmcblkxp2 -> /dev/mmcblkx + case $PART in + "/dev/mmcblk"*|"/dev/nvme"*) + DISK=$(echo $PART | sed s/p2$//g) + ;; + *) + DISK=$(echo $PART | sed s/2$//g) + ;; + esac + rm -f /storage/.please_resize_me sync - # just in case - if [ ! -z "${DISK}" -a ! -z "${PART}" ] ; then - umount ${PART} + echo "DISK: $DISK PART: $PART" >>$LOG + + # just in case + if [ ! -z "$DISK" -a ! -z "$PART" ] ; then + umount $PART - clear >/dev/console echo "PARTITION RESIZING IN PROGRESS" echo "" echo "Please do not reboot or turn off your @DISTRONAME@ device!" echo "" - # identify the partition scheme, and if gpt fix minor issues such as gpt header not at end of disk - SCHEME=$(blkid -s PTTYPE -o value ${DISK}) - if [ "$SCHEME" = "gpt" ]; then - StartProgress spinner "Checking layout... " "parted -fs ${DISK} print &>/dev/null" - fi - - StartProgress spinner "Resizing storage partition... " "parted -s -a optimal -m ${DISK} resizepart ${PARTNUM} 100% &>/dev/null" - StartProgress spinner "Checking storage file system... " "e2fsck -f -p ${PART} &>/dev/null" - StartProgress spinner "Resizing storage file system... " "resize2fs ${PART} &>/dev/null" - StartProgress spinner "Checking storage file system... " "e2fsck -f -p ${PART} &>/dev/null" - + StartProgressLog spinner "Resizing partition... " "parted -s -f -m $DISK resizepart 2 100% >>$LOG 2>&1" + StartProgressLog spinner "Checking file system... " "e2fsck -f -p $PART >>$LOG 2>&1" + StartProgressLog spinner "Resizing file system... " "resize2fs $PART >>$LOG 2>&1" StartProgress countdown "Rebooting in 5s... " 5 "NOW" + else + echo "Partition was not detected - resizing aborted." + StartProgress countdown "Rebooting in 5s... " 5 "NOW" fi + mount -o remount,ro /flash fi -sync &>/dev/null -sync &>/dev/null -sync &>/dev/null -reboot &>/dev/null +reboot -f &>/dev/null diff --git a/projects/Amlogic/bootloader/boot.ini b/projects/Amlogic/bootloader/boot.ini index 70e20a8d3..0acd95c7c 100644 --- a/projects/Amlogic/bootloader/boot.ini +++ b/projects/Amlogic/bootloader/boot.ini @@ -3,7 +3,7 @@ ROCKNIX-UBOOT-CONFIG setenv dtb_loadaddr "0x10000000" setenv loadaddr "0x1B00000" -setenv bootargs "boot=UUID=@UUID_SYSTEM@ disk=UUID=@UUID_STORAGE@ @EXTRA_CMDLINE@" +setenv bootargs "boot=LABEL=@DISTRO_BOOTLABEL@ disk=LABEL=@DISTRO_DISKLABEL@ @EXTRA_CMDLINE@" load mmc ${devno}:1 ${loadaddr} KERNEL load mmc ${devno}:1 ${dtb_loadaddr} ${fdtfile} diff --git a/projects/Amlogic/bootloader/extlinux/extlinux.conf b/projects/Amlogic/bootloader/extlinux/extlinux.conf index dcfac3fac..6c075c65f 100644 --- a/projects/Amlogic/bootloader/extlinux/extlinux.conf +++ b/projects/Amlogic/bootloader/extlinux/extlinux.conf @@ -1,4 +1,4 @@ LABEL ROCKNIX LINUX /KERNEL FDTDIR / - APPEND boot=UUID=@UUID_SYSTEM@ disk=UUID=@UUID_STORAGE@ @EXTRA_CMDLINE@ + APPEND boot=LABEL=@DISTRO_BOOTLABEL@ disk=LABEL=@DISTRO_DISKLABEL@ @EXTRA_CMDLINE@ diff --git a/projects/Amlogic/bootloader/mkimage b/projects/Amlogic/bootloader/mkimage index 2f74be8f6..c4fa6186f 100644 --- a/projects/Amlogic/bootloader/mkimage +++ b/projects/Amlogic/bootloader/mkimage @@ -11,8 +11,8 @@ fi mkimage_bootini() { echo "image: copying boot.ini..." cp -p "${RELEASE_DIR}/3rdparty/bootloader/boot.ini" "${LE_TMP}/boot.ini" - sed -e "s/@UUID_SYSTEM@/${UUID_SYSTEM}/" \ - -e "s/@UUID_STORAGE@/${UUID_STORAGE}/" \ + sed -e "s/@DISTRO_BOOTLABEL@/${DISTRO_BOOTLABEL}/" \ + -e "s/@DISTRO_DISKLABEL@/${DISTRO_DISKLABEL}/" \ -e "s/@EXTRA_CMDLINE@/${EXTRA_CMDLINE}/" \ -i "${LE_TMP}/boot.ini" mcopy "${LE_TMP}/boot.ini" :: @@ -22,8 +22,8 @@ mkimage_extlinux() { echo "image: copying exlinux.conf..." mkdir -p "${LE_TMP}/extlinux" cp -p "${RELEASE_DIR}/3rdparty/bootloader/extlinux/extlinux.conf" "${LE_TMP}/extlinux/extlinux.conf" - sed -e "s/@UUID_SYSTEM@/${UUID_SYSTEM}/" \ - -e "s/@UUID_STORAGE@/${UUID_STORAGE}/" \ + sed -e "s/@DISTRO_BOOTLABEL@/${DISTRO_BOOTLABEL}/" \ + -e "s/@DISTRO_DISKLABEL@/${DISTRO_DISKLABEL}/" \ -e "s/@EXTRA_CMDLINE@/${EXTRA_CMDLINE}/" \ -i "${LE_TMP}/extlinux/extlinux.conf" mcopy "${LE_TMP}/extlinux" :: diff --git a/projects/Amlogic/bootloader/update.sh b/projects/Amlogic/bootloader/update.sh index 0837349ca..b7458e99a 100755 --- a/projects/Amlogic/bootloader/update.sh +++ b/projects/Amlogic/bootloader/update.sh @@ -3,65 +3,22 @@ # Copyright (C) 2017-2021 Team LibreELEC (https://libreelec.tv) # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) -if [ -z "${1}" ] -then - [ -z "$SYSTEM_ROOT" ] && SYSTEM_ROOT="" - [ -z "$BOOT_ROOT" ] && BOOT_ROOT="/flash" - [ -z "$BOOT_PART" ] && BOOT_PART=$(df "$BOOT_ROOT" | tail -1 | awk {' print $1 '}) - if [ -z "$BOOT_DISK" ]; then - case $BOOT_PART in - /dev/sd[a-z][0-9]*) - BOOT_DISK=$(echo $BOOT_PART | sed -e "s,[0-9]*,,g") - ;; - /dev/mmcblk*) - BOOT_DISK=$(echo $BOOT_PART | sed -e "s,p[0-9]*,,g") - ;; - esac - fi +[ -z "$SYSTEM_ROOT" ] && SYSTEM_ROOT="" +[ -z "$BOOT_ROOT" ] && BOOT_ROOT="/flash" +[ -z "$BOOT_PART" ] && BOOT_PART=$(df "$BOOT_ROOT" | tail -1 | awk {' print $1 '}) - # mount $BOOT_ROOT r/w - mount -o remount,rw $BOOT_ROOT - - - for arg in $(cat /proc/cmdline); do - case $arg in - boot=*) - boot="${arg#*=}" - case $boot in - /dev/mmc*) - UUID_SYSTEM="$(blkid $boot | sed 's/.* UUID="//;s/".*//g')" - ;; - UUID=*|LABEL=*) - UUID_SYSTEM="$(blkid | sed 's/"//g' | grep -m 1 -i " $boot " | sed 's/.* UUID=//;s/ .*//g')" - ;; - FOLDER=*) - UUID_SYSTEM="$(blkid ${boot#*=} | sed 's/.* UUID="//;s/".*//g')" - ;; - esac +# identify the boot device +if [ -z "$BOOT_DISK" ]; then + case $BOOT_PART in + /dev/mmcblk*) + BOOT_DISK=$(echo $BOOT_PART | sed -e "s,p[0-9]*,,g") ;; - disk=*) - disk="${arg#*=}" - case $disk in - /dev/mmc*) - UUID_STORAGE="$(blkid $disk | sed 's/.* UUID="//;s/".*//g')" - ;; - UUID=*|LABEL=*) - UUID_STORAGE="$(blkid | sed 's/"//g' | grep -m 1 -i " $disk " | sed 's/.* UUID=//;s/ .*//g')" - ;; - FOLDER=*) - UUID_STORAGE="$(blkid ${disk#*=} | sed 's/.* UUID="//;s/".*//g')" - ;; - esac - ;; - esac - done -else - BOOT_DISK="${1}" - BOOT_ROOT="${2}" - UUID_SYSTEM="${3}" - UUID_STORAGE="${4}" + esac fi +# mount $BOOT_ROOT rw +mount -o remount,rw $BOOT_ROOT + DT_ID=$($SYSTEM_ROOT/usr/bin/dtname) if [ -n "$DT_ID" ]; then @@ -86,27 +43,17 @@ for all_dtb in $BOOT_ROOT/*.dtb; do fi done -if [ -f $BOOT_ROOT/extlinux/extlinux.conf ] || [ -n "${1}" ]; then +if [ -f $BOOT_ROOT/extlinux/extlinux.conf ]; then if [ -f $SYSTEM_ROOT/usr/share/bootloader/extlinux/extlinux.conf ]; then echo "Updating extlinux.conf..." - if [ ! -d "${BOOT_ROOT}/extlinux" ] - then - mkdir "${BOOT_ROOT}/extlinux" - fi cp -p $SYSTEM_ROOT/usr/share/bootloader/extlinux/extlinux.conf $BOOT_ROOT/extlinux - sed -e "s/@UUID_SYSTEM@/$UUID_SYSTEM/" \ - -e "s/@UUID_STORAGE@/$UUID_STORAGE/" \ - -i $BOOT_ROOT/extlinux/extlinux.conf fi fi -if [ -f $BOOT_ROOT/boot.ini ] || [ -n "${1}" ]; then +if [ -f $BOOT_ROOT/boot.ini ]; then if [ -f /usr/share/bootloader/boot.ini ]; then echo "Updating boot.ini" cp -p /usr/share/bootloader/boot.ini $BOOT_ROOT/boot.ini - sed -e "s/@UUID_SYSTEM@/$UUID_SYSTEM/" \ - -e "s/@UUID_STORAGE@/$UUID_STORAGE/" \ - -i $BOOT_ROOT/boot.ini fi fi @@ -129,6 +76,8 @@ if [ -d $BOOT_ROOT/res ]; then fi fi -mount -o ro,remount $BOOT_ROOT +# mount $BOOT_ROOT ro +sync +mount -o remount,ro $BOOT_ROOT echo "UPDATE" > /storage/.boot.hint diff --git a/projects/Amlogic/packages/u-boot/package.mk b/projects/Amlogic/packages/u-boot/package.mk index 0457a5583..e8793bf3a 100644 --- a/projects/Amlogic/packages/u-boot/package.mk +++ b/projects/Amlogic/packages/u-boot/package.mk @@ -29,13 +29,17 @@ makeinstall_target() { if find_file_path bootloader/boot.ini; then cp -av ${FOUND_PATH} $INSTALL/usr/share/bootloader - sed -e "s/@EXTRA_CMDLINE@/${EXTRA_CMDLINE}/" \ + sed -e "s/@DISTRO_BOOTLABEL@/${DISTRO_BOOTLABEL}/" \ + -e "s/@DISTRO_DISKLABEL@/${DISTRO_DISKLABEL}/" \ + -e "s/@EXTRA_CMDLINE@/${EXTRA_CMDLINE}/" \ -i "${INSTALL}/usr/share/bootloader/boot.ini" fi if find_dir_path bootloader/extlinux; then cp -av ${FOUND_PATH} $INSTALL/usr/share/bootloader - sed -e "s/@EXTRA_CMDLINE@/${EXTRA_CMDLINE}/" \ + sed -e "s/@DISTRO_BOOTLABEL@/${DISTRO_BOOTLABEL}/" \ + -e "s/@DISTRO_DISKLABEL@/${DISTRO_DISKLABEL}/" \ + -e "s/@EXTRA_CMDLINE@/${EXTRA_CMDLINE}/" \ -i "${INSTALL}/usr/share/bootloader/extlinux/extlinux.conf" fi