Bug#901289: breaks boot in containers

Dmitry Bogatov KAction at debian.org
Tue Dec 25 13:39:22 GMT 2018


control: severity -1 important

[2018-12-23 22:58] Adam Borowski <kilobyte at angband.pl>
> Uh oh...  looks like the logsave issue suddenly became RCish: it
> prevents lxc containers from booting unattended:
> [...]

I can propose following ad-hoc solution. Objections? Better suggestions?

diff --git a/debian/src/initscripts/etc/init.d/checkfs.sh b/debian/src/initscripts/etc/init.d/checkfs.sh
index 44ac67f3..13a10d10 100755
--- a/debian/src/initscripts/etc/init.d/checkfs.sh
+++ b/debian/src/initscripts/etc/init.d/checkfs.sh
@@ -91,7 +91,7 @@ Continuing with system boot in 5 seconds."
 		if [ "$VERBOSE" = no ]
 		then
 			log_action_begin_msg "Checking file systems"
-			logsave -s $FSCK_LOGFILE fsck $spinner -M -A $fix $force $FSCKTYPES_OPT
+			logsave_best_effort fsck $spinner -M -A $fix $force $FSCKTYPES_OPT
 			FSCKCODE=$?
 
 			if [ "$FSCKCODE" -eq 32 ]
@@ -112,7 +112,7 @@ Continuing with system boot in 5 seconds."
 			else
 				log_action_msg "Will now check all file systems"
 			fi
-			logsave -s $FSCK_LOGFILE fsck $spinner -V -M -A $fix $force $FSCKTYPES_OPT
+			logsave_best_effort fsck $spinner -V -M -A $fix $force $FSCKTYPES_OPT
 			FSCKCODE=$?
 			if [ "$FSCKCODE" -eq 32 ]
 			then
diff --git a/debian/src/initscripts/etc/init.d/checkroot.sh b/debian/src/initscripts/etc/init.d/checkroot.sh
index ba35e439..b29ac72d 100755
--- a/debian/src/initscripts/etc/init.d/checkroot.sh
+++ b/debian/src/initscripts/etc/init.d/checkroot.sh
@@ -231,7 +231,7 @@ Will restart in 5 seconds."
 		if [ "$VERBOSE" = no ]
 		then
 			log_action_begin_msg "Checking root file system"
-			logsave -s $FSCK_LOGFILE fsck $spinner $force $fix -t $roottype $rootdev
+			logsave_best_effort fsck $spinner $force $fix -t $roottype $rootdev
 			FSCKCODE=$?
 			if [ "$FSCKCODE" = 0 ]
 			then
@@ -241,7 +241,7 @@ Will restart in 5 seconds."
 			fi
 		else
 			log_daemon_msg "Will now check root file system"
-			logsave -s $FSCK_LOGFILE fsck $spinner $force $fix -V -t $roottype $rootdev
+			logsave_best_effort fsck $spinner $force $fix -V -t $roottype $rootdev
 			FSCKCODE=$?
 			log_end_msg $FSCKCODE
 		fi
diff --git a/debian/src/initscripts/lib/init/mount-functions.sh b/debian/src/initscripts/lib/init/mount-functions.sh
index e453f6a8..7511761c 100644
--- a/debian/src/initscripts/lib/init/mount-functions.sh
+++ b/debian/src/initscripts/lib/init/mount-functions.sh
@@ -706,3 +706,13 @@ is_fastboot_active() {
 	done
 	return 1
 }
+
+# This function does not actually belong here; it is duct-tape solution
+# for #901289.
+logsave_best_effort () {
+	if [ -x /sbin/logsave ] ; then
+		logsave -s "${FSCK_LOGFILE}" "$@"
+	else
+		"$@"
+	fi
+}




More information about the Debian-init-diversity mailing list