Bagaimana cara memaksa fsck di setiap boot - semua filesystem (relevan)?

14

Saya bekerja dengan PC tanpa kipas (ratusan dari mereka, sebenarnya) yang memiliki partisi debian 6 dan 3 (FAT dan 2x ext2). Sistem tidak memiliki tombol power sehingga kebanyakan orang cenderung menarik steker untuk 'mematikannya' daripada init 0 (atau setara). Sebagai hasilnya, sistem file membangun kesalahan dengan cukup cepat.

Saya sudah mencoba menggunakan 'shutdown -rF' untuk memaksa fsck tetapi ini sepertinya tidak berhasil. Saya bertanya-tanya apakah ada cara untuk memberitahu sistem untuk memeriksa setiap titik mount / FS sebelum dipasang.

Saya sudah mencoba mengatur param fsck di / etc / fstab. Ini biasanya memberi saya 'Kesalahan ditemukan. Jalankan pesan fsck secara manual.

Apakah ada opsi lain untuk dicoba?

ethrbunny
sumber
1
A) Siapa pengguna Anda? B) Bisakah Anda menambahkan tombol "Shut Down" yang menonjol yang selalu terlihat di layar? C) Atau, dapatkah Anda mendidik pengguna Anda? D) Mengapa mesin tidak memiliki tombol power di bagian depan?
tak terlupakanMendukungMonika
Pertanyaan ini hampir duplikat dari unix.stackexchange.com/questions/180488/… oleh pengguna yang sama.
tak terlupakanMendukungMonika

Jawaban:

16

In /etc/init.d/checkfs.shadalah barisnya if [ -f /forcefsck ] || grep -s -w -i "forcefsck" /proc/cmdline, jadi menyediakan forcefsckpada baris perintah kernel atau membuat /forcefsckfile pada saat shutdown akan menyebabkan fsck pada reboot berikutnya.

Untuk mencegah berjalannya fsck manual, minta fsckuntuk mencoba memperbaiki kesalahan secara otomatis dengan -yopsi dengan membatalkan komentar dan mengubah no menjadi yespada entri / etc / default / rcS berikut, setelah diedit akan terlihat seperti:

# automatically repair filesystems with inconsistencies during boot
FSCKFIX=yes

Satu opsi (forcefsck atau FSCKFIX) tidak menyiratkan yang lain.

grey green terbatas
sumber
Apakah ini menangani kondisi 'Jalankan fsck secara manual'?
ethrbunny
Memang, saya membaca terlalu cepat, memperbarui jawaban saya.
grey green terbatas
Saya telah menetapkan FSCKFIX = ya dan nilainya dalam checkfs.sh. Dalam kedua kasus fsck tidak berjalan ketika saya reboot (via init 6). Saya pasti kehilangan sesuatu di sini.
ethrbunny
Jangan mengubah apa pun checkfs.sh, hanya edit / etc / defaults / rcS dan jalankan touch /forcefscksebelum reboot. Perintah terakhir perlu dijalankan sebelum setiap restart atau hanya setelah Anda boot tetapi skrip init fsck selesai.
grey green terbatas
Hmm .. tidak berhasil. Saya masih melihat pesan 'mount filesystem tidak dicentang' diikuti oleh banyak kesalahan 'hapus inode yang dirujuk'. Sejauh ini perubahan / etc / fstab telah menjadi satu-satunya hal yang berpengaruh. Tidak yakin apa yang saya lakukan sehingga saran Anda tidak berfungsi.
ethrbunny
7

Saya mengedit jawaban saya:

Perintahnya adalah:

sudo tune2fs -c 1 /dev/sdX

menurut manpages -c argumen untuk tune2fs menghitung jumlah instance mounts untuk partisi. Oleh karena itu, 1 memaksa untuk memeriksa fs setelah setiap instance pemasangan.

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

xitij
sumber
2
Hanya perintah yang tidak cukup dalam banyak kasus, tuliskan setidaknya penjelasan minimal juga.
peterh
7

Tambahkan fsck.mode=forceparameter Kernel pada bootloader Anda. Tambahkan opsi ini ke GRUB_CMDLINE_LINUX_DEFAULT=variabel di dalamnya /etc/default/grub. Sebagai root, buat file konfigurasi grub baru:

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

Parameter ini memiliki efek yang sama dengan membuat forcefsckfile di dalam root dari titik mount.

Solusi menggunakan checkfs.shskrip akan lebih sesuai dengan Debian, tetapi tidak boleh bekerja pada distro lain


sumber