Jak wymusić fsck przy każdym uruchomieniu - wszystkich (odpowiednich) systemach plików?

14

Pracuję z komputerem bez wentylatora (w rzeczywistości setki), który ma partycje debian 6 i 3 (FAT i 2x ext2). System nie ma przycisku zasilania jako takiego, więc większość ludzi szarpa wtyczkę, aby ją „zamknąć”, zamiast inicjować 0 (lub równoważny). W rezultacie systemy plików dość szybko gromadzą błędy.

Próbowałem użyć polecenia „shutdown -rF”, aby wymusić użycie fsck, ale wydaje się, że to nie działa. Zastanawiam się, czy istnieje jakiś sposób, aby powiedzieć systemowi, aby sprawdził każdy punkt montowania / FS przed ich zamontowaniem.

Próbowałem ustawić parametr fsck w / etc / fstab. Zazwyczaj daje mi to „Znaleziono błędy. Uruchom komunikat fsck ręcznie ”.

Czy są inne opcje do wypróbowania?

etrbunny
źródło
1
A) Kim byli Twoi użytkownicy? B) Czy mógłbyś dodać widoczny przycisk „Zamknij”, który był zawsze widoczny na ekranie? C) Alternatywnie, czy mógłbyś edukować swoich użytkowników? D) Dlaczego maszyny nie miały przycisków zasilania z przodu?
unforgettableidSupportsMonica
To pytanie jest prawie duplikatem unix.stackexchange.com/questions/180488/... tego samego użytkownika.
unforgettableidSupportsMonica

Odpowiedzi:

16

In /etc/init.d/checkfs.shjest wierszem if [ -f /forcefsck ] || grep -s -w -i "forcefsck" /proc/cmdline, więc podanie forcefsckw wierszu poleceń jądra lub wygenerowanie /forcefsckpliku przy zamykaniu powinno spowodować fsck przy następnym restarcie.

Aby zapobiec ręcznemu uruchamianiu fsck, poproś fscko próbę automatycznego naprawienia błędów za pomocą -yopcji, odznaczając komentarz i zmieniając opcję no yesna następujący wpis / etc / default / rcS, po edycji powinien on wyglądać następująco:

# automatically repair filesystems with inconsistencies during boot
FSCKFIX=yes

Jedna opcja (forcefsck lub FSCKFIX) nie implikuje drugiej.

skończony szarozielony
źródło
Czy poradzi sobie ze stanem „Uruchom fsck ręcznie”?
ethrbunny,
Rzeczywiście, przeczytałem zbyt szybko, zaktualizowałem swoją odpowiedź.
skończony szarozielony
Ustawiłem zarówno FSCKFIX = tak, jak i wartość w checkfs.sh. W żadnym przypadku fsck nie uruchomił się po ponownym uruchomieniu (przez init 6). Coś mi tu brakuje.
ethrbunny,
Nie zmieniaj niczego checkfs.sh, edytuj / etc / defaults / rcS i uruchamiaj touch /forcefsckprzed ponownym uruchomieniem. Ostatnie polecenie należy uruchomić przed każdym ponownym uruchomieniem lub tuż po uruchomieniu, ale skrypt inicjujący fsck jest gotowy.
skończony szarozielony
Hmm .. nie ma szczęścia. Nadal widzę komunikat „Montowanie niesprawdzonego systemu plików”, a po nim wiele błędów „Usuń odwołanie do i-węzła”. Jak dotąd zmiana / etc / fstab była jedyną rzeczą, która przyniosła jakikolwiek efekt. Nie jestem pewien, co robię, aby Twoje sugestie nie działały.
ethrbunny,
8

Dodaj fsck.mode=forceparametr jądra do bootloadera. Dodaj tę opcję do GRUB_CMDLINE_LINUX_DEFAULT=zmiennej wewnątrz /etc/default/grub. Jako root wygeneruj nowy plik konfiguracyjny grub:

[root@host]# grub-mkconfig -o /boot/grub/grub.cfg

Ten parametr ma taki sam efekt jak tworzenie forcefsckpliku w katalogu głównym punktu montowania.

Rozwiązanie polegające na użyciu checkfs.shskryptu lepiej pasuje do Debiana, ale nie powinno działać na innych dystrybucjach


źródło
7

Edytuję swoją odpowiedź:

Polecenie to:

sudo tune2fs -c 1 /dev/sdX

zgodnie z argumentem manpages -c dla tune2fs zlicza liczbę instancji podłączeń dla partycji. Dlatego 1 wymusza sprawdzenie fs po każdym wystąpieniu montażu.

( http://man7.org/linux/man-pages/man8/tune2fs.8.html )

Xitij
źródło
2
W większości przypadków nie wystarczy tylko polecenie, napisz co najmniej minimalne wyjaśnienie.
Peter - Przywróć Monikę