วิธีบังคับ fsck ในทุกการบู๊ต - ระบบไฟล์ทั้งหมด (ที่เกี่ยวข้อง)?


14

ฉันทำงานกับ fanless PC (อันที่จริงแล้วเป็นร้อย) ที่มี debian 6 และ 3 พาร์ติชัน (FAT และ 2x ext2) ระบบไม่มีปุ่มเปิดปิดดังนั้นคนส่วนใหญ่มักจะดึงปลั๊กเพื่อ 'ปิดมัน' แทน init 0 (หรือเทียบเท่า) ผลก็คือระบบไฟล์สร้างข้อผิดพลาดขึ้นอย่างรวดเร็ว

ฉันได้ลองใช้ 'shutdown -rF' เพื่อบังคับ fsck แต่ดูเหมือนจะไม่ทำงาน ฉันสงสัยว่ามีวิธีบอกให้ระบบตรวจสอบจุดเมานท์ / FS แต่ละจุดก่อนที่จะทำการติดตั้งหรือไม่

ฉันได้ลองตั้งค่า fsck param ใน / etc / fstab โดยทั่วไปแล้วสิ่งนี้ทำให้ฉัน 'พบข้อผิดพลาด เรียกใช้ข้อความ fsck ด้วยตนเอง

มีตัวเลือกอื่นให้ลองหรือไม่


1
A) ใครคือผู้ใช้ของคุณ? B) คุณสามารถเพิ่มปุ่ม "ปิดเครื่อง" ที่เด่นชัดซึ่งปรากฏบนหน้าจอได้หรือไม่ C) อีกวิธีหนึ่งคุณสามารถให้ความรู้แก่ผู้ใช้ของคุณหรือไม่? D) ทำไมเครื่องถึงไม่มีปุ่มเปิดปิดที่ด้านหน้า
ลืมไปข้างหน้าโมนิ

คำถามนี้เป็นคำถามที่ใกล้เคียงกับunix.stackexchange.com/questions/180488/…โดยผู้ใช้รายเดียวกัน
ลืมไปข้างหน้า

คำตอบ:


16

ใน/etc/init.d/checkfs.shคือบรรทัดif [ -f /forcefsck ] || grep -s -w -i "forcefsck" /proc/cmdlineดังนั้นการให้บริการforcefsckบนบรรทัดคำสั่งเคอร์เนลหรือการสร้าง/forcefsckไฟล์เมื่อปิดเครื่องควรทำให้ fsck ในการรีบูตครั้งถัดไป

เพื่อป้องกันการเรียกใช้ fsck ด้วยตนเองขอfsckให้พยายามแก้ไขข้อผิดพลาดโดยอัตโนมัติด้วย-yตัวเลือกโดยไม่ใส่เครื่องหมายข้อคิดเห็นและเปลี่ยน no เป็นyesในรายการ / etc / default / rcS ต่อไปนี้หลังจากการแก้ไขควรมีลักษณะดังนี้:

# automatically repair filesystems with inconsistencies during boot
FSCKFIX=yes

ตัวเลือกหนึ่ง (forcefsck หรือ FSCKFIX) ไม่ได้หมายความถึงตัวเลือกอื่น


สิ่งนี้จะจัดการกับเงื่อนไข 'เรียกใช้ fsck ด้วยตนเอง' หรือไม่
ethrbunny

แน่นอนฉันอ่านเร็วเกินไปอัปเดตคำตอบของฉัน
สีเทาสีเขียว จำกัด

ฉันได้ตั้งทั้ง FSCKFIX = yes checkfs.shและความคุ้มค่าใน ไม่ว่าในกรณีใด fsck จะทำงานเมื่อฉันรีบูท (ผ่าน init 6) ฉันต้องคิดถึงบางสิ่งที่นี่
ethrbunny

อย่าเปลี่ยนแปลงสิ่งใด ๆcheckfs.shเพียงแก้ไข / etc / defaults / rcS และเรียกใช้touch /forcefsckก่อนรีบูต คำสั่งสุดท้ายจะต้องรันก่อนทุกครั้งที่รีสตาร์ทหรือหลังจากที่คุณบู๊ตแล้ว แต่สคริปต์ init fsck เสร็จแล้ว
จำกัด เกรย์กรีน

อืม .. ไม่มีโชค ฉันยังคงเห็นข้อความ 'การติดตั้งระบบไฟล์ที่ไม่ถูกตรวจสอบ' ตามด้วยข้อผิดพลาด 'อ้างอิง inode ที่อ้างอิง' ข้อผิดพลาดจำนวนมาก จนถึงตอนนี้การเปลี่ยนแปลง / etc / fstab เป็นสิ่งเดียวที่มีผลกระทบใด ๆ ไม่แน่ใจว่าฉันกำลังทำอะไรอยู่
ethrbunny

8

เพิ่มfsck.mode=forceพารามิเตอร์เคอร์เนลใน bootloader ของคุณ ผนวกตัวเลือกนี้ไปภายในตัวแปรGRUB_CMDLINE_LINUX_DEFAULT= /etc/default/grubในฐานะ root ให้สร้างไฟล์การกำหนดค่าด้วงใหม่:

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

พารามิเตอร์นี้มีผลเหมือนกับการสร้างforcefsckไฟล์ภายในรูทของจุดเมานท์

วิธีแก้ปัญหาของการใช้checkfs.shสคริปต์จะดีกว่า Debian แต่ไม่ควรทำงานกับ distros อื่น ๆ


7

ฉันกำลังแก้ไขคำตอบของฉัน:

คำสั่งคือ:

sudo tune2fs -c 1 /dev/sdX

ตาม manpages -c อาร์กิวเมนต์สำหรับ tune2fs นับจำนวนอินสแตนซ์ของการเมาท์สำหรับพาร์ติชัน ดังนั้น 1 บังคับให้ตรวจสอบ fs หลังจากทุกอินสแตนซ์การติดตั้ง

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


2
เฉพาะคำสั่งไม่เพียงพอในกรณีส่วนใหญ่เขียนอย่างน้อยคำอธิบายน้อยเกินไป
peterh - Reinstate Monica
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.