Bagaimana cara membuat Ubuntu “bukti kehilangan daya”?

18

Saya suka menjalankan sistem tanpa pengawasan untuk penggunaan 'kios' setiap hari.

Namun, sistem dapat dimatikan kapan saja tanpa seseorang melakukan shutdown yang benar sebelumnya. Secara default, Ubuntu tidak diharapkan dimatikan karena kehilangan daya. Setelah reboot setelah kehilangan daya, fsck dapat dijalankan untuk memeriksa sistem file, dan fsck dapat memberitahu sistem untuk reboot setelah selesai. Jadi, bahkan jika tidak ada data konfigurasi yang rusak, mesin mungkin tidak bisa boot setelah kehilangan daya. Jadi saya menguji beberapa solusi:

  1. ubah prioritas root mount fsck ke 0(bidang terakhir pada fstabentri root) yang mencegah berjalan fscksetelah setiap kehilangan daya. Namun, sistem dapat boot dengan root-mount read-only, yang tidak diharapkan oleh banyak layanan dan menghasilkan prompt login konsol sebagai gantinya login grafis.

  2. Ganti errrors=remount-rooleh errors=continue. Ini memberikan firasat buruk bahwa kehilangan data lebih lanjut dapat terjadi oleh sistem file yang tidak konsisten. Namun, dengan fsckdiaktifkan kembali, itu harus meningkatkan kemungkinan boot sistem setelah kehilangan daya. Jadi saya turun 1).

  3. Konfigurasikan ulang grub2 untuk menggunakan batas waktu opsi default normal setelah boot gagal. Untuk itu, saya telah menambahkan GRUB_RECORDFAIL_TIMEOUT=0ke /etc/default/grub.

Namun, sulit untuk mengetahui apakah peretasan ini membuat sistem kehilangan bukti daya. Ada ide? Ada lagi yang bisa dilakukan?

dronus
sumber
1
Saya tidak benar-benar mendapatkan apa yang ingin Anda capai. Apa yang Anda maksud dengan "bukti kehilangan daya"? Bisakah Anda menjernihkannya sedikit?
André Stannek
Menambahkan pengantar klarifikasi. Saya suka sistem yang bangun cepat lagi seperti biasanya tanpa interaksi perawatan setelah kehilangan daya.
dronus

Jawaban:

16

Untuk aplikasi kios, masalah diselesaikan dengan menggunakan partisi root hanya baca. Selain itu, setiap perubahan yang dibuat atau disimpan pengguna dibatalkan pada saat reboot berikutnya.

Untuk menyediakan root yang dapat ditulisi untuk sebagian besar kebutuhan aplikasi, overlayfs dapat digunakan untuk overlay partisi readonly dengan tempfs ram yang dapat ditulis.

Ada skrip yang membantu membuat pengaturan seperti itu di bagian bawah https://help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash . Script berisi instruksi untuk mengatur ini:

  • letakkan file di / etc / initramfs-tools / scripts / init-bottom / root-ro
  • sudo chmod 0755 root-ro
  • sudo update-initramfs -u

Saya sarankan untuk menambahkan GRUB_RECORDFAIL_TIMEOUT=0ke /etc/default/grubdan menjalankan sudo update-grubjuga, jika menu boot mungkin muncul tanpa batas waktu.

Setelah itu, reboot. Mesin kemudian mulai dalam mode hanya baca, yang dapat diperiksa oleh mount. Setiap perubahan yang diterapkan akan hilang pada reboot berikutnya. Untuk melakukan perubahan, instal perangkat lunak dan pembaruan, dll. Anda hanya perlu masuk ke menu GRUB, tekan euntuk mengubah baris perintah boot, dan menambahkan disable-root-ro=truebaris yang dimulai dengan kernel. Tekan F10 untuk melanjutkan booting. Anda kemudian dapat menggunakan mountuntuk mengkonfirmasi bahwa root telah dipasang dapat ditulis seperti biasa. Lakukan perubahan dan reboot, sistem hanya dapat dibaca lagi.

dronus
sumber
+1 karena sistem file root read-only adalah hal pertama yang terlintas di pikiran saya juga.
Nathan Osman
Ini sebenarnya bekerja cukup baik. Namun, setelah pemasangan baca / tulis, sistem harus di-boot ulang secara bersih lagi untuk memeriksa apakah ada yang bersih. Hal-hal seperti GRUB failafe, browser yang menunjukkan bahwa itu tidak ditutup dengan rapi atau fsck jika tidak akan dilestarikan selamanya. Jika itu terjadi, seseorang harus me-reboot baca / tulis di lain waktu, dan matikan lagi.
dronus
9

Beberapa kali setelah reboot yang tidak bersih (mis. Kehilangan daya atau tombol reset ditekan atau bahkan panik kernel), sistem tidak mau boot meminta Anda untuk menekan "y" agar fsck memperbaiki partisi.

Jika Anda ingin menghindari ini, edit / etc / default / rcS dan ubah:

FSCKFIX=no

Untuk:

FSCKFIX=yes

Ini akan memastikan perbaikan ini dijalankan secara otomatis tanpa disuruh Anda.

Kelemahannya adalah Anda dapat kehilangan data dan Anda mungkin ingin mengeluarkan hard drive dan mengkloningnya terlebih dahulu jika ada sesuatu yang penting yang tidak didukung.

Sebagai contoh jika hard drive controller Anda memiliki kesalahan dan fsck salah mengidentifikasi partisi sebagai rusak dan mencoba memperbaikinya, yang dapat menyebabkan kehilangan data yang dapat dihindari. Saya belum pernah mengalami ini sendiri dan telah berurusan dengan hampir seribu server selama 7 tahun terakhir - tetapi ini masih sesuatu yang perlu diingat.

Roman Gaufman
sumber
7

Pada hari ini, untuk solusi read-only kios, Anda juga dapat menginstal paket overlayrootdengan

sudo apt-get install overlayroot

yang akan dengan mudah memberikan solusi lengkap seperti salah satu jawaban yang disetujui. Ini juga memungkinkan untuk perintah yang bermanfaat

sudo overlay-chroot

yang akan masuk ke dalam shell yang memiliki basis disk read-only terpasang /. Maka dimungkinkan untuk membuat perubahan ke sistem yang dilindungi seperti dan misalnya digunakan apt-getuntuk menginstal paket ke disk yang sebelumnya hanya baca. Namun, setelah keluar dari shell, reboot sangat disarankan karena file yang ditimpa sementara pada RAM dapat mengaburkan yang baru diinstal.

dronus
sumber