Как я могу сделать Ubuntu «доказательство потери мощности»?

17

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

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

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

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

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

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

    
задан dronus 04.11.2012 в 14:54
источник

3 ответа

15

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

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

Существует сценарий, который помогает создать такую ​​настройку внизу Ссылка . Сценарий содержит инструкции по настройке:

  • поместите файл в / 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 , иначе меню загрузки может появиться без тайм-аута.

После этого перезагрузитесь. Затем машина запускается в режиме readonly, который может быть проверен на mount . При следующей перезагрузке любое изменение будет исчезать. Чтобы внести какие-либо изменения, установите программное обеспечение и обновления и т. Д. Вам просто нужно войти в меню GRUB, нажмите e , чтобы изменить загрузочные командные строки, и добавьте disable-root-ro=true в строку, начинающуюся с ядра. Нажмите F10, чтобы продолжить загрузку. Затем вы можете использовать mount , чтобы подтвердить, что root установлен как обычно. Внесите свои изменения и перезагрузитесь, система снова загружается.

    
ответ дан dronus 16.02.2013 в 16:44
источник
8

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

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

FSCKFIX=no

To:

FSCKFIX=yes

Это обеспечит автоматический запуск этого ремонта без запроса.

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

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

    
ответ дан Roman Gaufman 28.01.2013 в 22:37
3

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

sudo apt-get install overlayroot

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

sudo overlay-chroot

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

    
ответ дан dronus 20.12.2015 в 21:44