Как сделать Ubuntu & ldquo; доказательство потери мощности & rdquo ;?

Мне нравится запускать систему без присмотра для ежедневного использования в киоске.

Тем не менее, система может быть отключена в любое время, если кто-либо не произвел надлежащего отключения. По умолчанию Ubuntu не отключается из-за потери питания. После перезагрузки после отключения питания можно запустить fsck для проверки файловой системы, а fsck может дать команду системе перезагрузиться после ее завершения. Таким образом, даже если никакие данные конфигурации не будут повреждены, машина может не загрузиться после потери питания. Поэтому я протестировал некоторые обходные пути:

  1. измените приоритет fsck монтирования root на 0 (последнее поле в корневой записи fstab), что предотвращает запуск fsck после каждой потери питания. Тем не менее, система может загрузиться с монтируемым root-доступом только для чтения, что не ожидается многими службами и приводит к появлению приглашения на консоль вместо графического входа в систему.

  2. Заменить errrors=remount-ro на errors=continue. Это создает плохое предчувствие, что дальнейшая потеря данных может произойти из-за незавершенной файловой системы. Тем не менее, с включенным fsck снова, это должно увеличить пригодность системы к загрузке после потери питания. Поэтому я упал 1).

  3. Переконфигурируйте grub2 для использования обычного тайм-аута опции по умолчанию после неудачной загрузки. Для этого я добавил GRUB_RECORDFAIL_TIMEOUT=0 в /etc/default/grub.

Тем не менее, трудно понять, являются ли эти взломы доказательством потери мощности системы. Есть идеи? Можно еще что-нибудь сделать?

18
задан 11 September 2015 в 20:41

3 ответа

Для приложения киоска проблема решена при помощи корневого раздела только для чтения. Кроме того, любые пользователи изменений делают, или сохранение отменены в следующей перезагрузке.

Для обеспечения перезаписываемого корня для большинства потребностей приложений overlayfs может использоваться для накладывания раздела только для чтения с перезаписываемым поршнем tempfs.

Существует сценарий, который помогает созданию такой установки у основания https://help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash. Сценарий содержит инструкции настроить это:

  • вставьте файл/etc/initramfs-tools/scripts/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 подтвердить корень смонтировано перезаписываемое, как обычно. Внесите свои изменения и перезагрузку, система только для чтения снова.

16
ответ дан 11 September 2015 в 20:41

На сегодняшний день для решения, доступного только для чтения в киоске, также можно установить пакет overlayroot с помощью

sudo apt-get install overlayroot

, который легко обеспечит полное решение, подобное утвержденному ответу. Это также позволяет использовать полезную команду

sudo overlay-chroot

, которая будет входить в оболочку, на которой ранее был установлен базовый диск только для чтения, установленный на /. Затем можно внести любые изменения в защищенную систему, например, и, например, использовать apt-get для установки пакетов на прежний диск только для чтения. Однако после выхода из оболочки настоятельно рекомендуется перезагрузить компьютер, поскольку временно перезаписанные файлы в ОЗУ могут затенить вновь установленные.

0
ответ дан 11 September 2015 в 20:41

Несколько раз после нечистой перезагрузки (скажем, при потере питания или нажатии кнопки сброса или даже при панике ядра) система не загружается, запрашивая у вас «y», чтобы fsck восстановил раздел.

Если вы хотите избежать этого, отредактируйте / etc / default / rcS и измените:

FSCKFIX=no

На:

FSCKFIX=yes

Это обеспечит автоматическое выполнение этого восстановления без побуждает вас.

Недостатком может быть то, что вы можете потерять данные и, возможно, захотите сначала извлечь жесткий диск и клонировать его, если на нем есть что-то критическое, что не скопировано.

Например, если в контроллере жесткого диска произошла ошибка, и fsck ошибочно определил раздел как поврежденный и попытался восстановить его, это может привести к потере данных, которой иначе можно избежать. Я никогда не сталкивался с этим сам и за последние 7 лет или около того имел дело с почти тысячей серверов - но все же об этом нужно помнить.

0
ответ дан 11 September 2015 в 20:41

Другие вопросы по тегам:

Похожие вопросы: