Як зробити Ubuntu "захист від втрати живлення"?


18

Мені подобається запускати систему без нагляду для щоденного використання «кіоску».

Однак система може бути вимкнена в будь-який час без попереднього відключення. За замовчуванням не очікується, що 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.

Однак важко дізнатись, чи справді ці хаки доказують втрати потужності системи. Будь-які ідеї? Ще хтось може зробити?


1
Я насправді не отримую того, чого ти намагаєшся досягти. Що ви маєте на увазі під "доказом втрат електроенергії"? Ви можете це трохи прояснити?
Андре Станек

Додано уточнююче вступ. Мені подобається система, яка знову встає швидко, як правило, без підтримання взаємодії після втрати електроенергії.
дрон

Відповіді:


16

У застосуванні для кіоску проблема вирішується за допомогою кореневого розділу, який читається тільки для цього. Крім того, будь-які зміни, які користувачі вносять або зберігають, скасовуються при наступному перезавантаженні.

Щоб забезпечити корінь, що записується, для більшості потреб додатків, перекриття можуть використовуватися для накладання розділу, що читається тільки, тимчасовими темпами, що записуються.

Існує сценарій, який допомагає створити таку настройку внизу https://help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash . Сценарій містить вказівки для цього:

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


+1, оскільки коренева файлова система лише для читання - це перше, що мені спадало на думку.
Натан Осман

Це насправді працює досить добре. Однак після будь-якого монтажу читання / запису систему слід знову перезавантажити, щоб перевірити, чи все є чистим. Такі речі, як GRUB failsafe, веб-переглядач, який показує, що він не був закритий чи fsck, інакше буде збережений занадто назавжди. Якщо це трапиться, доведеться перезавантажити читання / запис іншим разом і знову чисто закрити.
дрон

9

Деякі рази після нечистої перезавантаження (скажімо, втрата живлення або скидання живлення або навіть паніка ядра) система не завантажиться з проханням вас натиснути "y" для fsck для відновлення розділу.

Якщо ви хочете цього уникнути, відредагуйте / etc / default / rcS та змініть:

FSCKFIX=no

До:

FSCKFIX=yes

Це забезпечить автоматичний запуск цього ремонту, не вимагаючи від вас.

Мінус може полягати в тому, що ви можете втратити дані, і, можливо, ви захочете вийняти жорсткий диск і сперти його клонувати, якщо на ньому є щось критичне, що не створюється резервна копія.

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


7

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

sudo apt-get install overlayroot

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

sudo overlay-chroot

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.