Bug#1106830: initscripts: checkroot.sh returns error and does not attempt to save logs if logfile does not exist
Bartos-Elekes Zsolt
muszi at kite.hu
Fri May 30 08:41:29 BST 2025
Package: initscripts
Version: 3.14-4
Dear maintainer,
checkroot.sh returns error and does not even attempt to save logs if logfile does not exist - for example, when /var/log
is on a different partition, which is not yet mounted.
[root at debian13 ~]# ls -l /var/log/fsck
ls: cannot access '/var/log/fsck': No such file or directory
[root at debian13 ~]# /etc/init.d/checkroot.sh start
Will now check root file system:Cannot persist the following output on disc ... failed!
[/sbin/fsck.ext4 (1) -- /] fsck.ext4 -a -C0 /dev/sda1
/dev/sda1: clean, 28655/524288 files, 374797/2096896 blocks
The culprit is the logsave_best_effort function in mount-functions.sh, which only runs logsave if the logfile exists,
defeating the very purpose of logsave.
I suggest the following patch:
--- old/mount-functions.sh
+++ new/mount-functions.sh
@@ -727,7 +727,7 @@
# This function does not actually belong here; it is duct-tape solution
# for #901289.
logsave_best_effort() {
- if [ -x /sbin/logsave ] && [ -e "${FSCK_LOGFILE}" ]; then
+ if [ -x /sbin/logsave ]; then
logsave -s "${FSCK_LOGFILE}" "$@"
else
log_failure_msg "Cannot persist the following output on disc"
And maybe we should change the log severity to warning - the important part is actually running the command (in our
case: fsck), not saving the log; and perhaps changing "disc" to "disk" in the error message (AFAIK "disc" refers to
optical media).
--- old/mount-functions.sh
+++ new/mount-functions.sh
@@ -730,7 +730,7 @@
if [ -x /sbin/logsave ]; then
logsave -s "${FSCK_LOGFILE}" "$@"
else
- log_failure_msg "Cannot persist the following output on disc"
+ log_warning_msg "Cannot persist the following output on disk"
"$@"
fi
}
With my patch(es):
[root at debian13 ~]# ls -l /var/log/fsck
ls: cannot access '/var/log/fsck': No such file or directory
[root at debian13 ~]# /etc/init.d/checkroot.sh start
Will now check root file system:[/sbin/fsck.ext4 (1) -- /] fsck.ext4 -a -C0 /dev/sda1
/dev/sda1: clean, 28657/524288 files, 374807/2096896 blocks
.
[root at debian13 ~]# pidof logsave
2309
[root at debian13 ~]# mount /var/log
[root at debian13 ~]# pidof logsave
[root at debian13 ~]# ls -l /var/log/fsck/checkroot
-rw-r--r-- 1 root root 227 May 30 09:34 /var/log/fsck/checkroot
--
Best regards,
Zsolt Bartos-Elekes
More information about the Debian-init-diversity
mailing list