Comment rendre Ubuntu «à l'épreuve des pertes de puissance»?


18

J'aime faire fonctionner un système sans surveillance pour une utilisation quotidienne de «kiosque».

Cependant, le système peut être mis hors tension à tout moment sans que quelqu'un ne procède à un arrêt approprié auparavant. Par défaut, Ubuntu ne devrait pas être arrêté par une coupure de courant. Après le redémarrage après une coupure de courant, fsck peut être exécuté pour vérifier le système de fichiers et fsck peut indiquer au système de redémarrer une fois terminé. Ainsi, même si aucune donnée de configuration n'est corrompue, la machine peut ne pas démarrer correctement après une coupure de courant. J'ai donc testé quelques solutions:

  1. changez la priorité fsck du montage racine en 0(dernier champ de fstabl'entrée racine) qui empêche l'exécution fsckaprès chaque coupure de courant. Cependant, le système peut alors démarrer avec une lecture montée en racine, ce qui n'est pas attendu par de nombreux services et entraîne une invite de connexion à la console à la place de la connexion graphique.

  2. Remplacez errrors=remount-ropar errors=continue. Cela donne une mauvaise impression qu'une perte de données supplémentaire peut se produire par un système de fichiers incohérent. Cependant, avec fsckà nouveau activé, il devrait augmenter la capacité de démarrage du système après une coupure de courant. J'ai donc abandonné 1).

  3. Reconfigurez grub2 pour utiliser un délai d'expiration d'option par défaut normal après un échec de démarrage. Pour cela, j'ai ajouté GRUB_RECORDFAIL_TIMEOUT=0à /etc/default/grub.

Cependant, il est difficile de savoir si ces hacks rendent le système à l'épreuve des pertes de puissance. Des idées? Peut-on faire de plus?


1
Je ne comprends pas vraiment ce que vous essayez de réaliser. Qu'entendez-vous par "preuve de perte de puissance"? Pouvez-vous éclaircir un peu?
André Stannek

Ajout d'une introduction de clarification. J'aime un système qui se relève rapidement à son habitude sans interaction de maintenance après une coupure de courant.
dronus

Réponses:


16

Pour l'application kiosque, le problème est résolu en utilisant une partition racine en lecture seule. De plus, toutes les modifications apportées ou enregistrées par les utilisateurs sont annulées au prochain redémarrage.

Pour fournir une racine accessible en écriture pour la plupart des besoins des applications, overlayfs peut être utilisé pour superposer la partition en lecture seule avec un ram tempfs accessible en écriture.

Il existe un script qui aide à créer une telle configuration au bas de https://help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash . Le script contient les instructions pour configurer ceci:

  • placez le fichier dans / etc / initramfs-tools / scripts / init-bottom / root-ro
  • sudo chmod 0755 root-ro
  • sudo update-initramfs -u

Je suggère d'ajouter GRUB_RECORDFAIL_TIMEOUT=0à /etc/default/grubet exécuter sudo update-grubaussi, sinon le menu de démarrage peut apparaître sans délai.

Après cela, redémarrez. La machine démarre alors en mode lecture seule, qui peut être vérifiée par mount. Tout changement appliqué disparaîtra au prochain redémarrage. Pour apporter des modifications, installer des logiciels et des mises à jour, etc., il vous suffit d'entrer dans le menu GRUB, d'appuyer sur epour modifier les lignes de commande de démarrage et d'ajouter disable-root-ro=trueà la ligne commençant par le noyau. Appuyez sur F10 pour continuer le démarrage. Vous pouvez ensuite utiliser mountpour confirmer que root est monté accessible en écriture comme d'habitude. Apportez vos modifications et redémarrez, le système est à nouveau en lecture seule.


+1, car un système de fichiers racine en lecture seule a également été la première chose qui m'est venue à l'esprit.
Nathan Osman

Cela fonctionne plutôt bien. Cependant, après tout montage en lecture / écriture, le système doit être redémarré proprement pour vérifier que tout est propre. Des choses comme GRUB à sécurité intégrée, un navigateur montrant qu'il n'était pas correctement fermé ou fsck sinon seraient conservées trop longtemps. Si cela se produit, il faut redémarrer la lecture / écriture une autre fois, puis arrêter proprement.
dronus

9

Quelques fois après un redémarrage impur (disons une perte de puissance ou un bouton de réinitialisation enfoncé ou même une panique du noyau), le système ne démarre pas en vous demandant d'appuyer sur "y" pour qu'un fsck répare la partition.

Si vous souhaitez éviter cela, éditez / etc / default / rcS et changez:

FSCKFIX=no

À:

FSCKFIX=yes

Cela garantira que cette réparation est exécutée automatiquement sans vous en informer.

L'inconvénient peut être que vous pouvez perdre des données et que vous souhaitiez peut-être retirer le disque dur et le cloner en premier s'il y a quelque chose de critique sur celui-ci qui n'est pas sauvegardé.

Par exemple, si votre contrôleur de disque dur est défectueux et que fsck a faussement identifié la partition comme étant défectueuse et tente de la réparer, cela peut entraîner une perte de données qui pourrait autrement être évitée. Je n'ai jamais vécu cela moi-même et j'ai traité près d'un millier de serveurs au cours des 7 dernières années, mais c'est quelque chose à garder à l'esprit.


7

À partir d'aujourd'hui, pour une solution en lecture seule de kiosque, on peut également installer le package overlayrooten

sudo apt-get install overlayroot

qui fournira facilement une solution complète comme celle de la réponse approuvée. Il permet également la commande bénéfique

sudo overlay-chroot

qui se connectera à un shell sur lequel l'ancien disque de base en lecture seule sera monté /. Il est alors possible d'apporter des modifications au système protégé comme et par exemple utiliser apt-getpour installer des packages sur l'ancien disque en lecture seule. Cependant, après avoir quitté le shell, un redémarrage est fortement recommandé car les fichiers temporairement écrasés sur la RAM peuvent masquer ceux nouvellement installés.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.