2

I have an embedded linux system. I use grub2 for the boot loader. I would like to run an fsck -y /dev/sda on /dev/sda every time it boots--even when the system had a power loss and the reboot command was not used. How can I do this?

2
  • Have you considered using a different boot medium like a flash device with jffs2 or ubi (if you could mod the hardware)?
    – ott--
    Dec 1, 2011 at 21:29
  • It is a transcend industrial 44pin flash module. I have the journaling setup and have the write caching turned off. I still get orphaned nodes sometimes though. Dec 2, 2011 at 2:21

2 Answers 2

5

Are you using a particular distribution? On Debian based distributions it would be as simple as adjusting /etc/default/rcS and set FSCKFIX to yes.

If you want to force a full fsck after every boot, then you could simply write create an empty file named /forcefsck. Though I do not suggest you actually do this.

7
  • It is debian based. This will cause it to happen before mounting each time? Dec 1, 2011 at 17:49
  • Also, will this pass -y to fsck? Dec 1, 2011 at 17:50
  • fsck is ran at every boot already, if the filesystem was unmounted correctly it runs very quickly. This change simply makes it so that the system will auto-repair anything that can be auto-repaired. Look at /etc/init.d/(checkfs.sh|checkroot.sh) to see the full details.
    – Zoredache
    Dec 1, 2011 at 17:53
  • thanks, I'll give this a try and let you know how it goes. Dec 1, 2011 at 17:54
  • will this clear orphaned nodes and fix datetime errors? fsck -y always does. Dec 1, 2011 at 18:01
4

If there had been a power loss fsck will run anyway since the filesystem will not be marked as "clean". You can use tune2fs -c 1 /dev/sda to set the check-interval for ext2/3 to one. IMHO that should force an fsck on every boot.

5
  • +1, this is the correct way to do it. The system will be forced into a fsck on every restart, but that's pretty much what you're asking for. Dec 1, 2011 at 21:33
  • But does this work for non ext2/3/4 filesystems?
    – 84104
    Dec 2, 2011 at 0:15
  • @Nils I will try this, because Zoredache's solution still didn't work. Dec 2, 2011 at 0:25
  • Will this perform the check and fix all errors without user interaction? Dec 2, 2011 at 0:26
  • Normally not. in most distributions there are possibilities to pass extra options to fsck. For this you have to find the place where to put these. In CentOS/RH5 the script responsible for running fsck at boot is located at /etc/rc.sysinit - there are a number of hooks one could use there - but this is proably dependent on the distribution. My best bet is to do grep -Iw fsck /etc to find the script responsible for running fsck. If you found that, please post the script in your question.
    – Nils
    Dec 2, 2011 at 11:18

You must log in to answer this question.

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