Wie mache ich Ubuntu "Power Loss Proof"?


18

Ich betreibe gerne ein unbeaufsichtigtes System für den täglichen Gebrauch am Kiosk.

Das System kann jedoch jederzeit ausgeschaltet werden, ohne dass zuvor ein ordnungsgemäßes Herunterfahren durchgeführt wurde. Es wird nicht erwartet, dass Ubuntu durch einen Stromausfall heruntergefahren wird. Nach einem Neustart nach einem Stromausfall wird möglicherweise fsck ausgeführt, um das Dateisystem zu überprüfen, und fsck weist das System an, nach Abschluss des Neustarts neu zu starten. Selbst wenn keine Konfigurationsdaten beschädigt werden, kann es vorkommen, dass der Computer nach einem Stromausfall nicht mehr startet. Also habe ich einige Workarounds getestet:

  1. Ändern Sie die fsck-Priorität für das Root-Mount in 0(letztes Feld im fstabRoot-Eintrag), um die Ausführung fscknach jedem Stromausfall zu verhindern . Das System bootet dann jedoch möglicherweise schreibgeschützt mit root, was von vielen Diensten nicht erwartet wird und zu einer Eingabeaufforderung für die Konsolenanmeldung anstelle der grafischen Anmeldung führt.

  2. Ersetzen errrors=remount-rodurch errors=continue. Dies gibt ein schlechtes Gefühl, dass ein inkosistentes Dateisystem weiteren Datenverlust verursachen kann. Bei fsckerneuter Aktivierung sollte jedoch die Boot-Wahrscheinlichkeit des Systems nach einem Stromausfall erhöht werden. Also ließ ich 1) fallen.

  3. Konfigurieren Sie grub2 so, dass nach einem fehlgeschlagenen Start ein normales Zeitlimit für Standardoptionen verwendet wird. Dafür habe ich hinzugefügt GRUB_RECORDFAIL_TIMEOUT=0zu /etc/default/grub.

Es ist jedoch schwer zu erkennen, ob diese Hacks den Systemverlust beweisen. Irgendwelche Ideen? Kann man noch mehr tun?


1
Ich verstehe nicht wirklich, was Sie erreichen wollen. Was meinen Sie mit "Power Loss Proof"? Können Sie es ein wenig aufklären?
André Stannek

Eine klärende Einführung wurde hinzugefügt. Ich mag ein System, das nach einem Stromausfall wie gewohnt ohne Wartungsinteraktion schnell wieder aufsteht.
Dronus

Antworten:


16

Für Kioskanwendungen wird das Problem mithilfe einer schreibgeschützten Root-Partition gelöst. Darüber hinaus werden alle Änderungen, die Benutzer vornehmen oder speichern, beim nächsten Neustart rückgängig gemacht.

Um ein beschreibbares Stammverzeichnis für die meisten Anwendungsanforderungen bereitzustellen, können Overlays verwendet werden, um die schreibgeschützte Partition mit schreibgeschützten RAM-Empfängern zu überlagern.

Unter https://help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash finden Sie ein Skript, mit dessen Hilfe Sie ein solches Setup erstellen können . Das Skript enthält die Anweisungen zum Einrichten:

  • Legen Sie die Datei in / etc / initramfs-tools / scripts / init-bottom / root-ro ab
  • sudo chmod 0755 root-ro
  • sudo update-initramfs -u

Ich schlage vor , hinzuzufügen , GRUB_RECORDFAIL_TIMEOUT=0zu /etc/default/grubund führte sudo update-grubauch sonst das Boot - Menü ohne Timeout angezeigt.

Starten Sie danach neu. Die Maschine startet dann im Readonly-Modus, der von überprüft werden kann mount. Jede vorgenommene Änderung verschwindet beim nächsten Neustart. Um Änderungen vorzunehmen, Software und Updates zu installieren usw. müssen Sie nur das GRUB-Menü aufrufen, drücken e, um die Startbefehlszeilen zu ändern, und disable-root-ro=truean die Zeile anhängen , die mit dem Kernel beginnt. Drücken Sie F10, um den Startvorgang fortzusetzen. Anschließend können Sie mountbestätigen, dass root wie gewohnt beschreibbar ist. Nehmen Sie Ihre Änderungen vor und führen Sie einen Neustart durch. Das System ist wieder schreibgeschützt.


+1, weil mir als erstes auch ein schreibgeschütztes Root-Dateisystem in den Sinn kam.
Nathan Osman

Das funktioniert eigentlich ganz gut. Nach einem Lese- / Schreib-Mount sollte das System jedoch neu gestartet werden, um sicherzustellen, dass alles sauber ist. Dinge wie GRUB-Failsafe, ein Browser, der anzeigt, dass er nicht sauber geschlossen wurde, oder fsck andernfalls, würden zu für immer erhalten bleiben. In diesem Fall muss man Read / Write ein weiteres Mal neu starten und dann wieder ordnungsgemäß herunterfahren.
Dronus

9

Einige Male nach einem unsauberen Neustart (z. B. Stromausfall oder Reset-Knopf gedrückt oder sogar eine Kernel-Panik), wird das System nicht hochfahren und Sie auffordern, "y" zu drücken, damit ein fsck die Partition repariert.

Wenn Sie dies vermeiden möchten, bearbeiten Sie / etc / default / rcS und ändern Sie Folgendes:

FSCKFIX=no

Zu:

FSCKFIX=yes

Dadurch wird sichergestellt, dass diese Reparatur automatisch ausgeführt wird, ohne dass Sie dazu aufgefordert werden.

Der Nachteil kann sein, dass Sie Daten verlieren können und die Festplatte zuerst herausnehmen und klonen möchten, wenn sich etwas Kritisches auf der Festplatte befindet, das nicht gesichert ist.

Wenn beispielsweise Ihr Festplattencontroller einen Fehler aufweist und fsck die Partition fälschlicherweise als defekt identifiziert und versucht, sie zu reparieren, kann dies zu Datenverlusten führen, die ansonsten vermieden werden können. Ich habe das noch nie selbst erlebt und habe in den letzten 7 Jahren mit fast tausend Servern zu tun gehabt - aber das ist immer noch etwas, an das ich denken muss.


7

Ab heute kann man für eine Kiosk-Read-Only-Lösung das Paket auch overlayrootper installieren

sudo apt-get install overlayroot

Dadurch erhalten Sie auf einfache Weise eine vollständige Lösung wie in der genehmigten Antwort. Es ermöglicht auch den nützlichen Befehl

sudo overlay-chroot

Die Anmeldung erfolgt in einer Shell, auf der die vorherige schreibgeschützte Basisfestplatte installiert ist /. Es ist dann möglich, Änderungen an dem geschützten System vorzunehmen und beispielsweise apt-getPakete auf der früheren schreibgeschützten Festplatte zu installieren. Nach dem Beenden der Shell wird jedoch ein Neustart dringend empfohlen, da vorübergehend überschriebene Dateien im RAM möglicherweise neu installierte verdecken.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.