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?

link|improve this question

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 '11 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. – Jonathan Henson Dec 2 '11 at 2:21
feedback

2 Answers

up vote 3 down vote accepted

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.

link|improve this answer
It is debian based. This will cause it to happen before mounting each time? – Jonathan Henson Dec 1 '11 at 17:49
Also, will this pass -y to fsck? – Jonathan Henson Dec 1 '11 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 '11 at 17:53
thanks, I'll give this a try and let you know how it goes. – Jonathan Henson Dec 1 '11 at 17:54
will this clear orphaned nodes and fix datetime errors? fsck -y always does. – Jonathan Henson Dec 1 '11 at 18:01
show 2 more comments
feedback

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.

link|improve this answer
+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. – Avery Payne Dec 1 '11 at 21:33
But does this work for non ext2/3/4 filesystems? – 84104 Dec 2 '11 at 0:15
@Nils I will try this, because Zoredache's solution still didn't work. – Jonathan Henson Dec 2 '11 at 0:25
Will this perform the check and fix all errors without user interaction? – Jonathan Henson Dec 2 '11 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 '11 at 11:18
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.