summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@vyos.io>2023-04-03 08:04:19 +0100
committerGitHub <noreply@github.com>2023-04-03 08:04:19 +0100
commit2ec876ba9034c4e35538860d3128c6c13e185825 (patch)
tree246f8d3b118249f8e7a635cc959cc49e693c101a
parente06078916c59b15a318447400d27d8158f4f70fd (diff)
parent36f08f78b806639827c9ae3a81275e057309bb1d (diff)
downloadvyatta-cfg-system-1.3.3.tar.gz
vyatta-cfg-system-1.3.3.zip
Merge pull request #199 from vyos/T5136-backport1.3.51.3.41.3.3
T5136: properly unmount filesystems after installation
-rwxr-xr-xscripts/install/install-functions24
-rwxr-xr-xscripts/install/install-image-existing8
2 files changed, 30 insertions, 2 deletions
diff --git a/scripts/install/install-functions b/scripts/install/install-functions
index b3ec42c1..feeeb489 100755
--- a/scripts/install/install-functions
+++ b/scripts/install/install-functions
@@ -86,10 +86,10 @@ tolower () {
}
# Validates a user response. Returns the response if valid.
-# Returns the default is the user just hits enter.
+# Returns the default is the user just hits enter.
# Returns nothing if not valid. Default parameter is $1.
# Options are in $2. If options are defined return must be a member
-# of the enum.
+# of the enum.
get_response () {
local ldefault=$(tolower "$1")
local loptions=$(tolower "$2")
@@ -370,6 +370,26 @@ EOF
return 1
}
+# try to unmount. log any errors and return the appropriate status.
+# $1: arguments for umount
+try_unmount ()
+{
+ args="$*"
+ output=$(eval "umount $args 2>&1")
+ status=$?
+ if [ $status == 0 ]; then
+ return 0
+ fi
+ # error
+ cat <<EOF
+Error trying to unmount a partition/directory.
+Please see $INSTALL_LOG for details.
+EOF
+ lecho 'Error trying to unmount a partition/directory.'
+ lecho "umount $args\n$output"
+ return 1
+}
+
# Find 2 drives of the same size.
get_size_raid ()
{
diff --git a/scripts/install/install-image-existing b/scripts/install/install-image-existing
index d00d7735..feba6683 100755
--- a/scripts/install/install-image-existing
+++ b/scripts/install/install-image-existing
@@ -278,6 +278,14 @@ if [ -e "$DEF_GRUB" ]; then
fi
fi
+# unmount filesystems
+if ! try_unmount "--read-only $INST_ROOT $READ_ROOT"; then
+ failure_exit 'Failed to unmount new squashfs image.'
+fi
+
+# sync underlaying filesystems
+sync
+
logger -p local3.warning -t "SystemImage" "System Image $NEWNAME has been added and made the default boot image"
echo 'Done.'