3

How does one determine whether fsck operations were performed at bootup. I understand the default fsck config and behaviour, but is there a report or status that shows whether any fsck issues were found or repair operations were performed?

My system console does show a "clean" message but dmesg does not:

...
[  OK  ] Started Create Static Device Nodes in /dev.
         Starting udev Kernel Device Manager...
[  OK  ] Started udev Kernel Device Manager.
         Starting Copy rules generated while the root was ro...
[  OK  ] Started Copy rules generated while the root was ro.
[    6.346472] systemd-fsck[171]: ROOTFS-A: clean, 26178/78240 files, 107613/312576 blocks
...

Perhaps there a standard API to query fsck operations and status, rather than looking at log files?

2
  • Hi! I love this question. It seems the answer depends a bit e.g. on what initramfs generator you use (on whether the initramfs uses systemd or not). Since you have given a specific example in your question, could you please specify exactly what OS and version it comes from. Preferably also the version number of your systemd package. And, while I am asking, are you using a specific initramfs generator, or just using the default initramfs that your distribution installed?
    – sourcejedi
    Commented Jan 12, 2019 at 15:27
  • 2
    watch out, the log of fsck might not show up in journalctl under some circumstances. In Ubuntu 16.04 the log of the root partition fsck is in the initrd log in /run/initramfs/fsck.log.
    – xealits
    Commented Sep 1, 2020 at 20:06

2 Answers 2

7

You are looking for the systemd journal. man journalctl can be your entry point. To review the logs for systemd-fsck you can look at:

journalctl -u systemd-fsck*

As you'll see in man journalctl, there are are also machine-friendly output options like JSON. That's as close as you are going to come to an API to query fsck status, besides the other systemd tool for querying service status:

systemctl status systemd-fsck*

As you'll see in man systemctl, it also offers machine-friendly output formats as well.

I'm aware of no way to query fsck status without systemd.

9
  • I did try journalctl but realized that it was deconfigured NOT to log from syslog. However, syslog does show the console "clean" message.
    – awoz
    Commented Apr 6, 2018 at 17:55
  • Regarding systemctl, it only shows the the status of the systemd-fsck service, and its exit code.
    – awoz
    Commented Apr 6, 2018 at 17:57
  • Github for systemd-fsck also indicates that all fsck "progress" goes to /dev/console, with several unique exits codes.
    – awoz
    Commented Apr 6, 2018 at 18:00
  • 4
    @awoz - fsck at boot time is run from initramfs so there's no filesystem to write to, though some distros work around that and save the output to /run/initramfs/* or /var/log/fsck/* Commented Apr 6, 2018 at 18:28
  • 1
    @don_crissti a lot of distros work around it by saving the output in a ring buffer in /run/systemd/journal (and hoping they have enough space to keep all the output), which is then saved to the persistent journal if/when it becomes available. :-P. At least if they use dracut initramfs.
    – sourcejedi
    Commented Jan 12, 2019 at 15:09
1

I can confirm don_crissti response above.

For my Beaglebone running Debian 8.3 (Jessie), the result is in /run/initramfs/fsck.log

I have fsck.mode=force and fsck.repair=yes set in /boot/uEnv.txt for Kernel command line options

root@beaglebone:~# more /run/initramfs/fsck.log
Log of fsck -C -f -y -V -t ext4 /dev/mmcblk0p1
Thu Jun 28 13:52:24 2018
fsck from util-linux 2.25.2
[/sbin/fsck.ext4 (1) -- /dev/mmcblk0p1] 
fsck.ext4 -f -y -C0 /dev/mmcblk0p1
e2fsck 1.42.12 (29-Aug-2014)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
BOOT: 38273/240000 files (0.1% non-contiguous), 284298/958208 blocks

root@beaglebone:~# cat /etc/dogtag
BeagleBoard.org Debian Image 2016-02-15

root@beaglebone:~# more /etc/debian_version
8.3

root@beaglebone:~# uname -a
Linux beaglebone 4.1.17-ti-rt-r48 #1 SMP PREEMPT RT Fri Feb 12 23:46:00 UTC 2016 armv7l GNU/Linux

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .