Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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?

share|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
add comment

2 Answers

up vote 5 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.

share|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

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.

share|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
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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