summaryrefslogtreecommitdiff
path: root/recipes-core/initrdscripts/files/init-readonly-rootfs-overlay-boot.sh
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-core/initrdscripts/files/init-readonly-rootfs-overlay-boot.sh')
-rwxr-xr-xrecipes-core/initrdscripts/files/init-readonly-rootfs-overlay-boot.sh24
1 files changed, 21 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