fsck'i önyükleme sırasında etkileşimli olmayan bir şekilde nasıl çalıştırabilirim?

19

1500 mil uzaktaki bir veri merkezinde başsız bir Ubuntu 12.04 sunucum var. Şimdi yeniden iki kez sistem fsck zorunda karar verdi. Ne yazık ki Ubuntu, etkileşimli modda fsck'i çalıştırdı, bu yüzden veri merkezimdeki birisinin gözden geçirmesi, bir konsolu takması ve Y tuşuna basması istendi. Nasıl fsck önyükleme modunda -y veya -p (aka -a ) bayrağı ile önyükleme modunda çalışacak şekilde nasıl ayarlayabilirim?

Ubuntu'nun önyükleme sürecini doğru bir şekilde anlarsam, init, sırayla çağrılan mountall çağırır. fsck. Ancak, fsck'in nasıl çağrıldığını yapılandırmanın herhangi bir yolunu görmüyorum. Bu mümkün mü?

(Bir öneriden kaçınmak için, tune2fs -i 0 -c 0 'yi periyodik fsckleri önlemek için kullanabileceğimin farkındayım. Bu biraz yardımcı olabilir ama fsck için gerçek bir sebebi olsa bile geri gelmeyi denemek için sisteme ihtiyacım var. , bir elektrik kesintisinden sonra.)

Takip eden sorulara yanıt olarak, / etc / fstab'ımın ilgili ayrıntıları. Ubuntu'nun buraya koyduğu şeyden bunu düzenlediğime inanmıyorum.

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
    
sordu Nelson 15.06.2012 01:44

3 cevap

27

Aradığım ayar / etc / default / rcS ’dir. FSCKFIX=yes . Bu, "önyükleme sırasında tutarsızlıkları olan dosya sistemlerini otomatik olarak onar" anlamına gelir ve fsck dosyasının -y bayrağıyla çalışmasına neden olur. Ubuntu sistemlerimin her ikisinde no olarak ayarlandı.

no değerine ayarlandığında bile, açılış zamanı fsck hala biraz etkileşimsizdir. mountall, -a ile eşanlamlı olan -p ile fsck çalıştırır; bu, "insan müdahalesi olmadan güvenli bir şekilde sabitlenebilen dosya sistemi sorunlarını otomatik olarak düzelt" anlamına gelir. Görünürde -p yapılacak güvenli olmayan düzeltmeler varsa etkileşimli moda düşer. Tam otomatik olarak çalışması için, -y veya FSCKFIX=yes .sa ihtiyacınız var.

İşte mountall.c'deki ilgili kod bitidir

if (fsck_fix || mnt->fsck_fix) {
  NIH_MUST (nih_str_array_add (&args, NULL, &args_len, "-y"));
} else {
  NIH_MUST (nih_str_array_add (&args, NULL, &args_len, "-a"));
}
    
verilen cevap Nelson 16.06.2012 16:42
1

Fstab’ta buna neden olabilecek herhangi bir işaretiniz olmadığından emin olun ve init komut dosyalarınızı kontrol edin. (Nerede kullanıldığını bulmak için 'fsck' için init betikleri grep'ing deneyin) Benim sistem fsck non-interaktif çalışır, bu yüzden burada karşılaştırmak için benim fstab ve / etc / init / mountall komutumun bir kopyasıdır / p>

$ cat /etc/fstab
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
UUID=acbe3514-33a3-4170-b1be-df7b8460a49a /               ext4    errors=remount-ro 0       1
UUID=d361f696-7abc-11e1-9043-5711de71ade6 /home           ext4    defaults        0       2
UUID=213e032c-fce9-4e1b-9d64-0779f0db4208 none            swap    sw              0       0

/ etc / init / mountall

parçasından snippet
script
    . /etc/default/rcS
    [ -f /forcefsck ] && force_fsck="--force-fsck"
    [ "$FSCKFIX" = "yes" ] && fsck_fix="--fsck-fix"

    # set $LANG so that messages appearing in plymouth are translated
    if [ -r /etc/default/locale ]; then
        . /etc/default/locale
        export LANG LANGUAGE LC_MESSAGES LC_ALL
    fi

    exec mountall --daemon $force_fsck $fsck_fix
end script
    
verilen cevap Sepero 15.06.2012 03:05
0

Ubuntu 15,16,17+ için FSCKFIX değer ayarı lib / init / vars.sh dizinindedir.

Bunu yapmak için grep -r FSCKFIX * 2>/dev/null komutunu kullanabilir.

    
verilen cevap setec 04.02.2018 17:14

Etiketlerdeki diğer soruları oku