Come posso rendere Ubuntu "a prova di perdita di potenza"?


18

Mi piace eseguire un sistema incustodito per l'uso quotidiano del 'chiosco'.

Tuttavia, il sistema può essere spento in qualsiasi momento senza che qualcuno abbia effettuato uno spegnimento corretto prima. Di default, Ubuntu non dovrebbe essere chiuso per mancanza di corrente. Dopo il riavvio dopo un'interruzione dell'alimentazione, è possibile eseguire fsck per controllare il file system e fsck potrebbe indicare al sistema di riavviarsi al termine. Quindi, anche se nessun dato di configurazione viene danneggiato, la macchina potrebbe non avviarsi bene dopo l'interruzione dell'alimentazione. Quindi ho testato alcune soluzioni alternative:

  1. cambiare la priorità fsck di root mount in 0(ultimo campo nella fstabvoce root) che impedisce l'esecuzione fsckdopo ogni interruzione di corrente. Tuttavia, il sistema potrebbe avviarsi con root montato in sola lettura, il che non è previsto da molti servizi e genera un prompt di accesso alla console anziché l'accesso grafico.

  2. Sostituisci errrors=remount-rocon errors=continue. Questo dà la brutta sensazione che un'ulteriore perdita di dati possa verificarsi in un file system non coerente. Tuttavia, con fscknuovamente abilitato, dovrebbe aumentare la propibilità di avvio del sistema dopo l'interruzione dell'alimentazione. Quindi ho lasciato cadere 1).

  3. Riconfigurare grub2 per utilizzare un normale timeout di opzione predefinito dopo un avvio non riuscito. Per questo, ho aggiunto GRUB_RECORDFAIL_TIMEOUT=0a /etc/default/grub.

Tuttavia, è difficile sapere se questi hack rendono il sistema a prova di perdita di potenza. Qualche idea? Qualcuno può fare di più?


1
Non capisco davvero cosa stai cercando di ottenere. Cosa intendi con "prova di perdita di potenza"? Puoi chiarire un po '?
André Stannek,

Aggiunta un'introduzione chiarificatrice. Mi piace un sistema che si alza velocemente di nuovo al solito senza interazione di manutenzione dopo la perdita di potenza.
dronus,

Risposte:


16

Per l'applicazione kiosk, il problema viene risolto utilizzando una partizione root di sola lettura. Inoltre, tutte le modifiche apportate o salvate dagli utenti vengono annullate al successivo riavvio.

Per fornire una radice scrivibile per la maggior parte delle esigenze delle applicazioni, è possibile utilizzare overlayfs per sovrapporre la partizione di sola lettura con un ram tempfs scrivibile.

C'è uno script che aiuta a creare una tale configurazione nella parte inferiore di https://help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash . Lo script contiene le istruzioni per configurarlo:

  • metti il ​​file in / etc / initramfs-tools / scripts / init-bottom / root-ro
  • sudo chmod 0755 root-ro
  • sudo update-initramfs -u

Suggerisco di aggiungere GRUB_RECORDFAIL_TIMEOUT=0al /etc/default/grube correre sudo update-grubtroppo, altrimenti il menu di avvio potrebbe apparire senza timeout.

Successivamente, riavvia. La macchina si avvia quindi in modalità sola lettura, che può essere verificata da mount. Qualsiasi modifica applicata scomparirà al prossimo riavvio. Per apportare modifiche, installare software e aggiornamenti, ecc. È sufficiente accedere al menu di GRUB, premere eper modificare le righe di comando di avvio e aggiungere disable-root-ro=truealla riga che inizia con il kernel. Premere F10 per continuare l'avvio. È quindi possibile utilizzare mountper confermare che root è montato scrivibile come al solito. Apporta le modifiche e riavvia, il sistema è di nuovo di sola lettura.


+1 perché un filesystem di root di sola lettura è stata la prima cosa che mi è venuta in mente.
Nathan Osman,

In realtà funziona abbastanza bene. Tuttavia, dopo qualsiasi montaggio in lettura / scrittura, il sistema deve essere riavviato in modo pulito per verificare che tutto sia pulito. Cose come GRUB fail-safe, un browser che mostra che non era chiuso in modo pulito o che altrimenti sarebbe stato conservato troppo per sempre. In tal caso, è necessario riavviare la lettura / scrittura un'altra volta e arrestare nuovamente in modo pulito.
dronus,

9

Alcune volte dopo un riavvio impuro (ad esempio quando si preme il pulsante di perdita di potenza o di ripristino o addirittura il panico del kernel), il sistema non si avvia chiedendo di premere "y" per un fsck per riparare la partizione.

Se vuoi evitare questo, modifica / etc / default / rcS e cambia:

FSCKFIX=no

Per:

FSCKFIX=yes

Ciò garantirà che questa riparazione venga eseguita automaticamente senza che venga richiesto.

Il rovescio della medaglia potrebbe essere che potresti perdere dati e potresti voler estrarre il disco rigido e clonarlo prima se c'è qualcosa di critico su cui non è stato eseguito il backup.

Ad esempio, se il controller del disco rigido presenta un errore e fsck ha identificato erroneamente la partizione come rotta e tenta di ripararla, ciò può portare alla perdita di dati che altrimenti potrebbe essere evitata. Non l'ho mai sperimentato da solo e mi sono occupato di quasi un migliaio di server negli ultimi 7 anni o giù di lì, ma è ancora qualcosa da tenere a mente.


7

A partire da oggi, per un chiosco lettura unica soluzione si può anche installare il pacchetto overlayrootda

sudo apt-get install overlayroot

che fornirà facilmente una soluzione completa come quella della risposta approvata. Inoltre consente il comando benefico

sudo overlay-chroot

che accederà a una shell con il precedente disco di base di sola lettura montato /. È quindi possibile apportare modifiche simili al sistema protetto e, ad esempio, utilizzare apt-getper installare i pacchetti sul precedente disco di sola lettura. Tuttavia, dopo essere usciti dalla shell, si consiglia vivamente di riavviare il sistema poiché i file sovrascritti temporaneamente sulla RAM possono oscurare quelli appena installati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.