From d6f2eef5c1cc5d5e177f066297744f4af92a3594 Mon Sep 17 00:00:00 2001 From: John Klug Date: Tue, 22 Jun 2021 08:40:47 -0500 Subject: rev 1 initrdscripts --- .../files/init-readonly-rootfs-overlay-boot.sh | 24 +++++++++++++++++++--- .../initramfs-readonly-rootfs-overlay_1.0.bb | 2 ++ .../initscripts-readonly-rootfs-overlay_1.0.bb | 2 ++ 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/recipes-core/initrdscripts/files/init-readonly-rootfs-overlay-boot.sh b/recipes-core/initrdscripts/files/init-readonly-rootfs-overlay-boot.sh index 199fc17..ac79429 100755 --- a/recipes-core/initrdscripts/files/init-readonly-rootfs-overlay-boot.sh +++ b/recipes-core/initrdscripts/files/init-readonly-rootfs-overlay-boot.sh @@ -69,6 +69,7 @@ ROOT_RWDEVICE="" ROOT_ROMOUNT="/run/media/rfs/ro" ROOT_RWMOUNT="/run/media/rfs/rw" ROOT_RWRESET="no" +DO_ERASE_USERDATA_FILE="$ROOT_RWMOUNT/.persistent/mts_do_erase_userdata" ROOT_ROFSTYPE="" ROOT_ROMOUNTOPTIONS="bind" @@ -240,7 +241,7 @@ mount_and_boot() { log "Detected user_data partition with ${BASH_REMATCH[1]} file system" else log "Create new user_data partition ext4 file system" - mkfs.ext4 -O 64bit $userdata + mkfs.ext4 -L user_data -O 64bit $userdata fi ROOT_RWDEVICE="$userdata" fi # Found user_data GPT partition @@ -271,14 +272,31 @@ mount_and_boot() { log "user_data: $MOUNT $ROOT_RWMOUNTPARAMS $ROOT_RWMOUNT" # Mount read-write file system into initram root file system if ! $MOUNT $ROOT_RWMOUNTPARAMS $ROOT_RWMOUNT ; then - fatal "Could not mount read-write rootfs" + if [ -n "${ROOT_RWDEVICE}" ]; then + # fsck didn't help. Reformat the partition + log "Could not mount user_data partition. Erasing ${ROOT_RWDEVICE}." + mkfs.ext4 -L user_data -O 64bit ${ROOT_RWDEVICE} + log "mounting user_data: $MOUNT $ROOT_RWMOUNTPARAMS $ROOT_RWMOUNT" + if ! $MOUNT $ROOT_RWMOUNTPARAMS $ROOT_RWMOUNT ; then + fatal "Could not mount read-write rootfs." + fi + log "${ROOT_RWDEVICE} partition has been erased and mounted successfully." + else + fatal "Could not mount user_data partition." + fi fi # Reset read-write file system if specified log "ROOT_RWRESET=$ROOT_RWRESET ROOT_RWMOUNT=$ROOT_RWMOUNT" if [ "yes" == "$ROOT_RWRESET" -a -n "${ROOT_RWMOUNT}" ]; then # JAK - log "Removing user_data files" + log "Removing user_data files" rm -rf $ROOT_RWMOUNT/* + if [ -f $DO_ERASE_USERDATA_FILE ]; then + log "Removing persistent user_data files" + shopt -s dotglob + rm -rf $ROOT_RWMOUNT/* + shopt -u dotglob + fi log "Completed removal of user_data files" fi diff --git a/recipes-core/initrdscripts/initramfs-readonly-rootfs-overlay_1.0.bb b/recipes-core/initrdscripts/initramfs-readonly-rootfs-overlay_1.0.bb index 164d394..b068950 100644 --- a/recipes-core/initrdscripts/initramfs-readonly-rootfs-overlay_1.0.bb +++ b/recipes-core/initrdscripts/initramfs-readonly-rootfs-overlay_1.0.bb @@ -6,3 +6,5 @@ do_install_append() { } FILES_${PN} += "/dev" + +PR= "r1" diff --git a/recipes-core/initrdscripts/initscripts-readonly-rootfs-overlay_1.0.bb b/recipes-core/initrdscripts/initscripts-readonly-rootfs-overlay_1.0.bb index 9428356..3a958a1 100644 --- a/recipes-core/initrdscripts/initscripts-readonly-rootfs-overlay_1.0.bb +++ b/recipes-core/initrdscripts/initscripts-readonly-rootfs-overlay_1.0.bb @@ -1 +1,3 @@ require readonly-rootfs-overlay-init-script.inc + +PR= "r1" -- cgit v1.2.3