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?
Asked
Active
Viewed 7,086 times
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 01 '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 02 '11 at 02:21
2 Answers
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.
![](../../users/profiles/984.webp)
Zoredache
- 128,755
- 40
- 271
- 413
-
It is debian based. This will cause it to happen before mounting each time? – Jonathan Henson Dec 01 '11 at 17:49
-
-
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 01 '11 at 17:53
-
-
will this clear orphaned nodes and fix datetime errors? fsck -y always does. – Jonathan Henson Dec 01 '11 at 18:01
-
I don't believe fsck is being called each time because the boot screen is still hanging on a corrupted disk that could easily be fixed with fsck /dev/sda1 -y – Jonathan Henson Dec 02 '11 at 16:34
-
Nevermind, this is because I had everything on the same partition. – Jonathan Henson Dec 07 '11 at 17:15
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.
![](../../users/profiles/77281.webp)
Nils
- 7,657
- 3
- 31
- 71
-
+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 01 '11 at 21:33
-
-
@Nils I will try this, because Zoredache's solution still didn't work. – Jonathan Henson Dec 02 '11 at 00:25
-
Will this perform the check and fix all errors without user interaction? – Jonathan Henson Dec 02 '11 at 00: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 02 '11 at 11:18