ฉันจะสร้าง Ubuntu "พิสูจน์การสูญเสียพลังงาน" ได้อย่างไร?


18

ฉันชอบที่จะเรียกใช้ระบบแบบอัตโนมัติสำหรับการใช้งาน 'kiosk' ทุกวัน

อย่างไรก็ตามระบบอาจถูกปิดได้ตลอดเวลาโดยไม่ต้องมีคนทำการปิดระบบที่เหมาะสมก่อน ตามค่าเริ่มต้น Ubuntu ไม่คาดว่าจะถูกปิดเนื่องจากการสูญเสียพลังงาน หลังจากรีบูตเครื่องหลังจากไฟดับ fsck อาจถูกเรียกใช้เพื่อตรวจสอบระบบไฟล์และ fsck อาจบอกให้ระบบรีบูตหลังจากเสร็จสิ้น ดังนั้นแม้ว่าจะไม่มีข้อมูลการกำหนดค่าที่เสียหายเครื่องอาจไม่สามารถบู๊ตได้ดีหลังจากการสูญเสียพลังงาน ดังนั้นฉันจึงทดสอบวิธีแก้ปัญหาบางอย่าง:

  1. เปลี่ยนลำดับความสำคัญของรูทเมาท์ fsck เป็น0(ฟิลด์สุดท้ายในfstabรายการรูท) ที่ป้องกันไม่ให้ทำงานfsckหลังจากการสูญเสียพลังงานทุกครั้ง อย่างไรก็ตามระบบอาจบู๊ตด้วยรูทที่เมาท์แบบอ่านอย่างเดียวซึ่งไม่ได้คาดหวังจากบริการจำนวนมากและส่งผลให้มีการแจ้งเตือนการเข้าสู่ระบบคอนโซลแทนการเข้าสู่ระบบแบบกราฟิก

  2. แทนที่โดยerrrors=remount-ro errors=continueสิ่งนี้ทำให้รู้สึกไม่ดีที่การสูญหายของข้อมูลอาจเกิดขึ้นจากระบบไฟล์ที่ไม่คงที่ อย่างไรก็ตามหากfsckเปิดใช้งานอีกครั้งควรเพิ่มความสามารถในการบูตของระบบหลังจากไฟฟ้าดับ ดังนั้นฉันจึงลดลง 1)

  3. ตั้งค่า grub2 ใหม่เพื่อใช้ตัวเลือกการหมดเวลาเริ่มต้นตามปกติหลังจากการบูตล้มเหลว การที่ฉันได้เพิ่มการGRUB_RECORDFAIL_TIMEOUT=0/etc/default/grub

อย่างไรก็ตามเป็นการยากที่จะทราบว่าแฮ็กเหล่านี้ทำให้ระบบสูญเสียพลังงานหรือไม่ ความคิดใด ๆ ผู้ใดสามารถทำได้อีก


1
ฉันไม่ได้รับสิ่งที่คุณพยายามจะทำ คุณหมายถึงอะไรโดย "หลักฐานการสูญเสียพลังงาน"? คุณช่วยเคลียร์ได้ไหม?
André Stannek

เพิ่มคำแนะนำที่ชัดเจน ฉันชอบระบบที่ทำงานอย่างรวดเร็วอีกครั้งตามปกติโดยไม่ต้องมีการบำรุงรักษาหลังจากการสูญเสียพลังงาน
dronus

คำตอบ:


16

สำหรับแอ็พพลิเคชัน kiosk ปัญหาจะถูกแก้ไขโดยใช้พาร์ติชัน root แบบอ่านอย่างเดียว นอกจากนี้การเปลี่ยนแปลงใด ๆ ที่ผู้ใช้ทำหรือบันทึกจะถูกยกเลิกในการรีบูตครั้งถัดไป

เพื่อให้รูทที่สามารถเขียนได้สำหรับความต้องการใช้งานส่วนใหญ่ overlayfs สามารถใช้เพื่อวางพาร์ติชันแบบอ่านอย่างเดียวด้วย ram tempfs ที่เขียนได้

มีสคริปต์ที่ช่วยสร้างการติดตั้งดังกล่าวที่ด้านล่างของเป็นhttps://help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash สคริปต์มีคำแนะนำในการตั้งค่านี้:

  • วางไฟล์ใน / etc / initramfs-tools / สคริปต์ / init-bottom / root-ro
  • sudo chmod 0755 root-ro
  • sudo update-initramfs -u

ฉันขอแนะนำให้เพิ่มGRUB_RECORDFAIL_TIMEOUT=0การ/etc/default/grubและเรียกsudo update-grubเกินไปมิฉะนั้นเมนูการบูตอาจปรากฏขึ้นโดยไม่มีหมดเวลา

หลังจากนั้นให้รีบูท mountเครื่องแล้วเริ่มทำงานในโหมดอ่านได้อย่างเดียวซึ่งสามารถตรวจสอบได้โดย การเปลี่ยนแปลงใด ๆ ที่นำไปใช้จะหายไปในการรีบูตครั้งถัดไป หากต้องการทำการเปลี่ยนแปลงใด ๆ ให้ติดตั้งซอฟต์แวร์และการอัพเดทเป็นต้นคุณเพียงแค่ต้องเข้าสู่เมนู GRUB กดeเพื่อเปลี่ยนบรรทัดคำสั่งการบู๊ตและผนวกdisable-root-ro=trueเข้ากับบรรทัดที่ขึ้นต้นด้วยเคอร์เนล กด F10 เพื่อทำการบูทต่อไป จากนั้นคุณสามารถใช้mountเพื่อยืนยันว่ารูทถูกเมาท์เขียนได้ตามปกติ ทำการเปลี่ยนแปลงและรีบูตระบบจะอ่านอีกครั้งเท่านั้น


+1 เนื่องจากระบบไฟล์รูทแบบอ่านอย่างเดียวเป็นสิ่งแรกที่ฉันนึกถึงเช่นกัน
นาธานออสมัน

มันใช้งานได้ดีทีเดียว อย่างไรก็ตามหลังจากการเมาต์เพื่ออ่าน / เขียนระบบควรจะรีบูตใหม่ทั้งหมดอีกครั้งเพื่อตรวจสอบว่ามีอะไรใหม่ สิ่งต่างๆเช่น GRUB ไม่ปลอดภัยเบราว์เซอร์ที่แสดงว่ามันไม่ได้ปิดอย่างสมบูรณ์หรือ fsck ไม่เช่นนั้นจะถูกสงวนไว้ตลอดไป หากสิ่งนั้นเกิดขึ้นเราต้องรีบูตเครื่องอ่าน / เขียนอีกครั้งและปิดเครื่องใหม่ทั้งหมด
dronus

9

บางครั้งหลังจากรีบูตที่ไม่สะอาด (พูดถึงการสูญเสียพลังงานหรือปุ่มรีเซ็ตหรือแม้แต่ความตื่นตระหนกเคอร์เนล) ระบบจะไม่บูตขอให้คุณกด "y" เพื่อหา fsck เพื่อซ่อมแซมพาร์ติชัน

หากคุณต้องการหลีกเลี่ยงปัญหานี้ให้แก้ไข / etc / default / rcS และเปลี่ยนแปลง:

FSCKFIX=no

ถึง:

FSCKFIX=yes

สิ่งนี้จะช่วยให้มั่นใจว่าการซ่อมแซมนี้จะทำงานโดยอัตโนมัติโดยไม่ต้องแจ้งให้คุณทราบ

ข้อเสียคือคุณอาจสูญเสียข้อมูลและคุณอาจต้องการที่จะนำฮาร์ดไดรฟ์ออกมาและทำการโคลนก่อนหากมีสิ่งใดที่สำคัญกับข้อมูลที่ไม่ได้สำรองไว้

ตัวอย่างเช่นหากตัวควบคุมฮาร์ดไดรฟ์ของคุณมีข้อผิดพลาดและ fsck ระบุพาร์ติชันที่ผิดพลาดและพยายามที่จะซ่อมแซมซึ่งอาจนำไปสู่การสูญเสียข้อมูลที่สามารถหลีกเลี่ยงได้ ฉันไม่เคยมีประสบการณ์นี้มาก่อนและจัดการกับเซิร์ฟเวอร์เกือบพันเครื่องในช่วง 7 ปีที่ผ่านมา - แต่ก็ยังเป็นสิ่งที่ควรคำนึงถึง


7

ณ วันนี้สำหรับโซลูชันแบบอ่านอย่างเดียวของ kiosk หนึ่งสามารถติดตั้งแพคเกจoverlayrootโดย

sudo apt-get install overlayroot

ซึ่งจะให้โซลูชันที่สมบูรณ์เช่นเดียวกับหนึ่งในคำตอบที่ได้รับการอนุมัติ นอกจากนี้ยังช่วยให้คำสั่งที่เป็นประโยชน์

sudo overlay-chroot

/ซึ่งจะเข้าสู่เปลือกมีดิสก์ฐานอ่านอย่างเดียวอดีตติดตั้งอยู่บน จากนั้นเป็นไปได้ที่จะทำการเปลี่ยนแปลงใด ๆ กับระบบที่ได้รับการป้องกันเช่นเดียวกับตัวอย่างการใช้apt-getเพื่อติดตั้งแพ็กเกจไปยังดิสก์แบบอ่านอย่างเดียวในอดีต อย่างไรก็ตามหลังจากออกจากเชลล์ขอแนะนำให้รีบูตเป็นอย่างยิ่งเนื่องจากไฟล์ที่ถูกเขียนทับชั่วคราวใน RAM อาจบดบังไฟล์ที่เพิ่งติดตั้งใหม่

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