On Thu 12 Oct 2017 at 18:08:06 (-0400), Michael Stone wrote:
> On Fri, Oct 13, 2017 at 10:17:39AM +1300, Ben Caradoc-Davies wrote:
> >On 13/10/17 09:43, David Wright wrote:
> >>On Thu 12 Oct 2017 at 16:22:27 (-0400), Gene Heskett wrote:
> >>>There used to be a filename you could "touch" on the root of a disk that
> >>>would force an e2fsck on the next reboot, do you recall it?
> >>That's out of date. Nowadays you add the word   forcefsck
> >>to the linux line in grub.cfg by pressing
> >><any key at boot> to get the Grub menu,
> >><e> to edit an entry,
> >>scroll and add the word,
> >><return> to boot the ephemerally modified entry.
> >
> >Does this work with systemd? Only "fsck.mode=force" is documented.
> 
> Yes, but grudgingly:
> 
> https://sources.debian.net/src/systemd/234-2/src/fsck/fsck.c/
> 
> #ifdef HAVE_SYSV_COMPAT
>        else if (streq(key, "fastboot") && !value) {
>                log_warning("Please pass 'fsck.mode=skip' rather than 
> 'fastboot' on the kernel command line.");
>                arg_skip = true;
> 
>        } else if (streq(key, "forcefsck") && !value) {
>                log_warning("Please pass 'fsck.mode=force' rather than 
> 'forcefsck' on the kernel command line.");
>                arg_force = true;
>        }
> #endif
> 

I'm trying to keep up with the changes, but I have no idea what
the input to fsck.c is, and where variable key gets it from.
OTOH if we look at initramfs-tools-core_0.130_all.deb in
CONTENTS/usr/share/initramfs-tools/init¹ we find this code fragment:

# Parse command line options
for x in $(cat /proc/cmdline); do
    case $x in
[…]
    fastboot|fsck.mode=skip)
        fastboot=y
        ;;
    forcefsck|fsck.mode=force)
        forcefsck=y
        ;;

and in CONTENTS/usr/share/initramfs-tools/scripts/functions¹

    if [ "$forcefsck" = "y" ]
    then
        force="-f"
    else
        force=""
    fi
[…]
        log_begin_msg "Checking $NAME file system"
        logsave -a -s $FSCK_LOGFILE fsck $spinner $force $fix -T -t $TYPE $DEV
        FSCKCODE=$?
        log_end_msg

If forcefsck is an alias for fsck.mode=force, I can see no
reason to eliminate it. It's a lot easier to remember when
you suddenly get a chance to use it (on a server that runs
months at a time, say). This is particularly true while
Grub doesn't automatically add a menu entry for fsck, unlike
for single and (in wheezy/jessie) sysvinit.

¹ which become init and scripts/functions in the initrd.

Cheers,
David.

Reply via email to