Systemd-fsck failed at boot

I have the following error at boot:

Dec 22 12:36:19 manjaro systemd-fsck[299]: fsck: /usr/bin/fsck.btrfs: execute failed: No such file or directory
Dec 22 12:36:19 manjaro audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=systemd-fsck-root comm="systemd" exe="/init" hostname=? addr=? terminal=? res=success'
Dec 22 12:36:19 manjaro systemd-fsck[297]: fsck failed with exit status 8.
Dec 22 12:36:19 manjaro systemd-fsck[297]: fsck failed with exit status 8.
Dec 22 12:36:19 manjaro systemd-fsck[297]: Ignoring error.

and

pacman -F /usr/bin/fsck.btrfs
usr/bin/fsck.btrfs is owned by core/btrfs-progs 6.0.2-1

// It was installed and the I reinstalled it to check
pacman -Qi btrfs-progs              
Name            : btrfs-progs
Version         : 6.0.2-1
Description     : Btrfs filesystem utilities
Architecture    : x86_64
URL             : https://btrfs.wiki.kernel.org
Licenses        : GPL2
Groups          : None
Provides        : btrfs-progs-unstable
Depends On      : glibc  util-linux-libs  lzo  zlib  zstd  libgcrypt
Optional Deps   : python: libbtrfsutil python bindings [installed]
                  e2fsprogs: btrfs-convert [installed]
                  reiserfsprogs: btrfs-convert [installed]
Required By     : libblockdev
Optional For    : timeshift
Conflicts With  : btrfs-progs-unstable
Replaces        : btrfs-progs-unstable
Installed Size  : 5.14 MiB
Packager        : Tobias Powalowski <tpowa@archlinux.org>
Build Date      : Sat 26 Nov 2022 08:00:40 PM CAT
Install Date    : Thu 22 Dec 2022 12:33:43 PM CAT
Install Reason  : Explicitly installed
Install Script  : Yes
Validated By    : Signature

same error on mkinitcpio:

  -> -k /boot/vmlinuz-5.15-x86_64 -c /etc/mkinitcpio.conf -g /boot/initramfs-5.15-x86_64-fallback.img -S autodetect
==> Starting build: 5.15.85-1-MANJARO
  -> Running build hook: [systemd]
  -> Running build hook: [modconf]
  -> Running build hook: [kms]
==> WARNING: Possibly missing firmware for module: ast
  -> Running build hook: [keyboard]
  -> Running build hook: [block]
==> WARNING: Possibly missing firmware for module: bfa
==> WARNING: Possibly missing firmware for module: qed
==> WARNING: Possibly missing firmware for module: qla1280
==> WARNING: Possibly missing firmware for module: qla2xxx
  -> Running build hook: [fsck]
==> WARNING: Possibly missing '/bin/sh' for script: /usr/bin/fsck.xfs
==> WARNING: Possibly missing '/bin/sh' for script: /usr/bin/fsck.btrfs
==> Generating module dependencies
==> Creating lz4-compressed initcpio image: /boot/initramfs-5.15-x86_64-fallback.img
==> Image generation successful
(5/5) Refreshing PackageKit...

last thing is the /etc/fstab

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a device; this may
# be used with UUID= as a more robust way to name devices that works even if
# disks are added and removed. See fstab(5).
#
# <file system>             <mount point>  <type>  <options>  <dump>  <pass>
UUID=55AA-B60D                            /boot          vfat    umask=0022 0 1
UUID=62fa3c67-883a-4cc0-828a-fd366728813e /              btrfs   subvol=/@,defaults,noauto,x-systemd.automount,noatime,discard=async,compress=no,space_cache=v2,max_inline=256,commit=120 0 0
UUID=62fa3c67-883a-4cc0-828a-fd366728813e /var/cache     btrfs   subvol=/@cache,defaults,noauto,x-systemd.automount,noatime,discard=async,compress=no,space_cache=v2,max_inline=256,commit=120 0 0
UUID=62fa3c67-883a-4cc0-828a-fd366728813e /var/log       btrfs   subvol=/@log,defaults,noauto,x-systemd.automount,noatime,discard=async,compress=no,space_cache=v2,max_inline=256,commit=120 0 0
UUID=fd4fad24-0f44-4554-839a-aefb8ace7574 /home          btrfs   defaults,noauto,x-systemd.automount,noatime,discard=async,compress=no,space_cache=v2,max_inline=256,commit=120 0 0

also

pacman -Qi systemd | grep -E Version 
Version         : 252.4-2
  1. Remove fsck from HOOK in /etc/mkinitcpio.conf

  2. Run $ sudo mkinitcpio -P

1 Like

I did remove it, and the error is gone. but I want to know its source, why this error happening?

Check to run $ /bin/sh in any terminal, if it works?

/bin/sh
sh-5.1$

No issues.

Check to run $ /usr/bin/fsck.btrfs in any terminal. What is the output?

/usr/bin/fsck.btrfs
If you wish to check the consistency of a BTRFS filesystem or
repair a damaged filesystem, see btrfs(8) subcommand 'check'.

Normal output.

@Yochanan your opinion is needed here, should I just report it upstream?
(also sorry for the ping).

btrfs uses its own integrity checks upon mounting, and therefore it must not be checked by anything else at boot time. The [fsck] hook is however added to /etc/mkinitcpio.conf by default in Manjaro (and possibly Arch) because the default filesystem is ext4.

Also, the error about a potentially missing /bin/sh does not pertain to your running system, but to the cpio archive that gets unpacked onto a ramfs when the system boots.

In my personal opinion, the default HOOKS line is outdated. It still relies on udev. Using systemd instead is much better, as it will set up your initramfs with everything you need and nothing you don’t need, and it boots a little faster too — not a whole lot, though.

[systemd] also automatically detects whether you have /usr on a separate filesystem, which the [udev] hook does not — with a separate /usr and the [udev]hook, you need to manually add a [usr] hook.

Mind you, you cannot just throw the [udev] hook out of there and substitute it for [systemd]. There need to be other substitutions as well. Below is my HOOKS line. :arrow_down:

HOOKS=(base systemd autodetect modconf block keyboard sd-vconsole filesystems)

mkinitcpio at the Arch Wiki

2 Likes

I read the wiki, there was a suggestion to replace both base and udev with the systemd hook, which I did, here are my hooks right now:

HOOKS=(systemd autodetect modconf kms keyboard block)

removed filesystem and add btrfs and vfat into MODULES section. Anyhow I went and reported to github.com/systemd/systemd/issues/25833#issue-1507754586

Sorry but I didn’t understand this part, care to elaborate?

No [sd-vconsole]?


The initramfs contains a tentative root filesystem, packaged as a cpio archive. Upon booting, it unpacks this archive onto a ramfs, from which it will then do everything needed for setting up the system — e.g. loading drivers, firmware, et al.

This RAM-based root filesystem uses busybox as a toolbox and as a preliminary init system before systemd itself is started. busybox provides its own /bin/sh.

2 Likes

I guessed it’s not needed since no encryption on my disks here, or any need for fonts (other than default) on console, are they necessary?

What about your keyboard layout? Unless you are using a US keyboard, you’ll need it.

I use US keyboard

locale                               
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_US.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=

This points to base is also needed despite

Base : Sets up all initial directories and installs base utilities and libraries. Always keep this hook as the first hook unless you know what you are doing, as it provides critical busybox init when not using systemd hook.
Optional when using the systemd hook as it only provides a busybox recovery shell.

Do you know how systemd hook replaces base entirely.

It doesn’t replace it entirely — you still need [base]if you want to have an emergency shell available, e.g. for manually repairing a damaged filesystem from within the initramfs.

As for the rest, the [systemd]hook uses your running system as the template from which to gather which modules are going to be needed in the initramfs when you run the mkinitcpio command.

1 Like

thank you this solved it, also thanks to @Zesko for the reply on Github , I mentioned the “Optional” part being suggested on the Arch WIKI, from reading, it felt like it can be removed safely, no reference of being a necessary for fsck functionality. my bad for rushing and reporting because of my bad configurations.

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.