Мне нравится запускать систему без присмотра для ежедневного использования в киоске.
Тем не менее, система может быть отключена в любое время, если кто-либо не произвел надлежащего отключения. По умолчанию Ubuntu не отключается из-за потери питания. После перезагрузки после отключения питания можно запустить fsck для проверки файловой системы, а fsck может дать команду системе перезагрузиться после ее завершения. Таким образом, даже если никакие данные конфигурации не будут повреждены, машина может не загрузиться после потери питания. Поэтому я протестировал некоторые обходные пути:
измените приоритет fsck монтирования root на 0
(последнее поле в корневой записи fstab
), что предотвращает запуск fsck
после каждой потери питания. Тем не менее, система может загрузиться с монтируемым root-доступом только для чтения, что не ожидается многими службами и приводит к появлению приглашения на консоль вместо графического входа в систему.
Заменить errrors=remount-ro
на errors=continue
. Это создает плохое предчувствие, что дальнейшая потеря данных может произойти из-за незавершенной файловой системы. Тем не менее, с включенным fsck
снова, это должно увеличить пригодность системы к загрузке после потери питания. Поэтому я упал 1).
Переконфигурируйте grub2 для использования обычного тайм-аута опции по умолчанию после неудачной загрузки. Для этого я добавил GRUB_RECORDFAIL_TIMEOUT=0
в /etc/default/grub
.
Тем не менее, трудно понять, являются ли эти взломы доказательством потери мощности системы. Есть идеи? Можно еще что-нибудь сделать?
Для приложения киоска проблема решена при помощи корневого раздела только для чтения. Кроме того, любые пользователи изменений делают, или сохранение отменены в следующей перезагрузке.
Для обеспечения перезаписываемого корня для большинства потребностей приложений overlayfs может использоваться для накладывания раздела только для чтения с перезаписываемым поршнем tempfs.
Существует сценарий, который помогает созданию такой установки у основания https://help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash. Сценарий содержит инструкции настроить это:
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
подтвердить корень смонтировано перезаписываемое, как обычно. Внесите свои изменения и перезагрузку, система только для чтения снова.
На сегодняшний день для решения, доступного только для чтения в киоске, также можно установить пакет overlayroot
с помощью
sudo apt-get install overlayroot
, который легко обеспечит полное решение, подобное утвержденному ответу. Это также позволяет использовать полезную команду
sudo overlay-chroot
, которая будет входить в оболочку, на которой ранее был установлен базовый диск только для чтения, установленный на /
. Затем можно внести любые изменения в защищенную систему, например, и, например, использовать apt-get
для установки пакетов на прежний диск только для чтения. Однако после выхода из оболочки настоятельно рекомендуется перезагрузить компьютер, поскольку временно перезаписанные файлы в ОЗУ могут затенить вновь установленные.
Несколько раз после нечистой перезагрузки (скажем, при потере питания или нажатии кнопки сброса или даже при панике ядра) система не загружается, запрашивая у вас «y», чтобы fsck восстановил раздел.
Если вы хотите избежать этого, отредактируйте / etc / default / rcS и измените:
FSCKFIX=no
На:
FSCKFIX=yes
Это обеспечит автоматическое выполнение этого восстановления без побуждает вас.
Недостатком может быть то, что вы можете потерять данные и, возможно, захотите сначала извлечь жесткий диск и клонировать его, если на нем есть что-то критическое, что не скопировано.
Например, если в контроллере жесткого диска произошла ошибка, и fsck ошибочно определил раздел как поврежденный и попытался восстановить его, это может привести к потере данных, которой иначе можно избежать. Я никогда не сталкивался с этим сам и за последние 7 лет или около того имел дело с почти тысячей серверов - но все же об этом нужно помнить.