Saya memiliki server Ubuntu 12,04 tanpa kepala di pusat data 1500 mil jauhnya. Dua kali sekarang saat reboot sistem memutuskan untuk fsck. Sayangnya Ubuntu menjalankan fsck dalam mode interaktif, jadi saya harus meminta seseorang di pusat data saya untuk pergi, tancapkan konsol, dan tekan tombol Y. Bagaimana cara mengaturnya agar fsck berjalan dalam mode non-interaktif saat boot dengan flag -y
atau -p
(alias -a
)?
Jika saya mengerti proses boot Ubuntu dengan benar, init memanggil mountall yang pada gilirannya memanggil fsck. Namun saya tidak melihat cara untuk mengkonfigurasi bagaimana fsck dipanggil. Apakah ini mungkin?
(Untuk menghindari satu saran; Saya sadar saya dapat menggunakan tune2fs -i 0 -c 0
untuk mencegah fsck berkala. Itu mungkin sedikit membantu tetapi saya membutuhkan sistem untuk mencoba bangkit kembali bahkan jika itu memiliki alasan nyata untuk fsck, katakan setelah kegagalan daya .)
Menanggapi pertanyaan tindak lanjut, inilah detail terkait dari / etc / fstab saya. Saya tidak percaya saya sudah mengedit ini sama sekali dari apa yang dimasukkan Ubuntu di sana.
UUID=3515461e-d425-4525-a07d-da986d2d7e04 / ext4 errors=remount-ro 0 1
UUID=90908358-b147-42e2-8235-38c8119f15a6 /boot ext4 defaults 0 2
UUID=01f67147-9117-4229-9b98-e97fa526bfc0 none swap sw 0 0
/etc/default/rcS
tidak benar-benar valid pada tahun 2019, dengan Ubuntu 16 dan Ubuntu 18 sekarang menggunakan systemd. Saya tidak tahu cerita lengkap untuk systemd tetapi opsifsck.repair
konfigurasi / kernel command line sepertinya relevan. Dokumen saat ini mengatakan standarnya adalahpreen
, yang berarti-p
. Ini juga dapat diaturyes
untuk-y
./etc/default/grub
mungkin tempat untuk mengatur ini. Saya akan berterima kasih jika seseorang yang lebih berpengetahuan akan memberikan jawaban systemd modern.Jawaban:
Pengaturan saya cari adalah di / etc / default / RCS ,
FSCKFIX=yes
. Ini berarti "secara otomatis memperbaiki sistem file dengan ketidakkonsistenan saat boot" dan menyebabkan fsck berjalan dengan-y
flag. Itu diatur keno
dalam kedua sistem Ubuntu saya.Bahkan ketika diatur ke
no
, fsck waktu boot masih agak tidak aktif. mountall menjalankan fsck with-a
, sebuah sinonim untuk-p
, yang berarti "secara otomatis memperbaiki masalah sistem file yang dapat diperbaiki dengan aman tanpa campur tangan manusia". Tampaknya-p
turun ke mode interaktif jika ada perbaikan yang tidak aman untuk dilakukan. Untuk menjalankan sepenuhnya secara otomatis, Anda perlu-y
atauFSCKFIX=yes
.Inilah sedikit kode yang relevan dari mountall.c
sumber
fsck.repair=yes
paramGRUB_CMDLINE_LINUX_DEFAULT
di/etc/default/grub
Untuk Ubuntu 15,16,17+ pengaturan nilai FSCKFIX terletak di lib / init / vars.sh
Dapat menggunakan perintah
grep -r FSCKFIX * 2>/dev/null
untuk sirip itu.sumber
/etc/default/rcS
./lib/init/vars.sh
memiliki default untukFSCKFIX
tetapi kemudian sumber/etc/default/rcS
yang dapat menimpanya. OTOH sistem Ubuntu 18 yang baru diinstal tidak memilikircS
file sama sekali.Pastikan Anda tidak memiliki flag yang mungkin menyebabkan hal ini di fstab, dan periksa skrip init Anda. (Coba ambil skrip init Anda untuk 'fsck' untuk menemukan di mana ia digunakan) Sistem saya menjalankan fsck non-interaktif, jadi di sini adalah salinan fstab saya dan bagian dari skrip saya / etc / init / mountall untuk Anda bandingkan
Cuplikan dari / etc / init / mountall
sumber
grep FSCKFIX /etc/default/rcS
tertulis di sistem Anda?