[arch-projects] [initscripts] [PATCH] Add fastboot support
Dave Reisner
d at falconindy.com
Sun Jan 29 15:32:53 EST 2012
On Sun, Jan 29, 2012 at 04:22:22AM +0100, Lukas Fleischer wrote:
> This one adds support for the "/fastboot" file, as well as the
> "fastboot" kernel command line parameter. If either of them is
> specified, file system checks are skipped. The only exception is the
> existence of "/forcefsck" or the "forcefsck" kernel parameter which have
> precedence over fastboot.
>
> Implements FS#26154.
>
> Reported-by: Mark <mark at voidzero.net>
> Signed-off-by: Lukas Fleischer <archlinux at cryptocrack.de>
> ---
> I ran into this today (wanted to skip file system checks for a couple of
> reboots), discovered FS#26154 and decided to write a patch...
>
> A couple of things that I'd like to mention/ask:
>
> * I decided that forcefsck always has precedence over fastboot, even if
> forcefsck was enabled by `shutdown -F` ("/forcefsck") and "fastboot"
> was specified on the kernel command line. I'm not sure whether this is
> the right thing to do here, but this is what systemd does and it seems
> quite reasonable to me. Tom, let me know if there are any reasons to
> do this differently (e.g. skip checks if "/forcefsck" exists and
> "fastboot" is specified on the kernel command line).
>
> * I didn't implement the "fsck.mode" kernel parameter that Tom mentioned
> in FS#26154 yet. I can implement this in a follow-up patch if you
> want, though. Is "fsck.mode" intended to be an alternative for
> "forcefsck" and "fastboot" or should we drop them in favor of that new
> option?
>
> * The "sysinit_prefsck" and "sysinit_postfsck" hooks won't be run if
> file system checks are skipped. Will that cause any problems?
This all sounds good to me. I had previously added 'skipfsck' to
mkinitcpio, but it was never documented anywhere. I'll change this to
'fastboot'.
> rc.sysinit | 27 +++++++++++++++------------
> tmpfiles.conf | 1 +
> 2 files changed, 16 insertions(+), 12 deletions(-)
>
> diff --git a/rc.sysinit b/rc.sysinit
> index b70ceaa..6661d0e 100755
> --- a/rc.sysinit
> +++ b/rc.sysinit
> @@ -175,19 +175,22 @@ fi
> # Check filesystems
> [[ -f /forcefsck ]] || in_array forcefsck $(< /proc/cmdline) && FORCEFSCK="-- -f"
> declare -r FORCEFSCK
> -run_hook sysinit_prefsck
> -if [[ -x $(type -P fsck) ]]; then
> - stat_busy "Checking Filesystems"
> - fsck_all >|"${FSCK_OUT:-/dev/stdout}" 2>|"${FSCK_ERR:-/dev/stdout}"
> - declare -r fsckret=$?
> - (( fsckret <= 1 )) && stat_done || stat_fail
> -else
> - declare -r fsckret=0
> -fi
> -run_hook sysinit_postfsck
>
> -# Single-user login and/or automatic reboot if needed
> -fsck_reboot $fsckret
> +if [[ -n $FORCEFSCK ]] || ([[ ! -f /fastboot ]] && ! in_array fastboot $(< /proc/cmdline)); then
command grouping here please, not a subshell.
{ [[ ! -f /fastboot ]] && ! in_array fastboot $(< /proc/cmdline); }
> + run_hook sysinit_prefsck
> + if [[ -x $(type -P fsck) ]]; then
> + stat_busy "Checking Filesystems"
> + fsck_all >|"${FSCK_OUT:-/dev/stdout}" 2>|"${FSCK_ERR:-/dev/stdout}"
> + declare -r fsckret=$?
> + (( fsckret <= 1 )) && stat_done || stat_fail
> + else
> + declare -r fsckret=0
> + fi
> + run_hook sysinit_postfsck
> +
> + # Single-user login and/or automatic reboot if needed
> + fsck_reboot $fsckret
> +fi
>
> status "Remounting Root" \
> mount -o remount /
> diff --git a/tmpfiles.conf b/tmpfiles.conf
> index 8668116..a63ca07 100644
> --- a/tmpfiles.conf
> +++ b/tmpfiles.conf
> @@ -17,4 +17,5 @@ r /tmp/.X[0-9]-lock
> r /etc/nologin
> r /etc/shutdownpid
> r /forcefsck
> +r /fastboot
>
> --
> 1.7.8.4
>
More information about the arch-projects
mailing list