Warning: touch() [function.touch]: Unable to create file /home/starterkit/starterkit.ru/html/error.log because Permission denied in /home/starterkit/starterkit.ru/html/errorhandler.php on line 51
безопасное выключение питания при загрузке с SD карточки - Embedded Linux - Форум - starterkit.ru
Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:2
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Embedded Linux
безопасное выключение питания при загрузке с SD карточки
buletz
Добавлено 25.12.2011 14:07 Редактировалось 25.12.2011 14:08
0
Сообщение: 1
buletz
3

Пункты: 5920
Регистрация: 16.11.2011
Пол: Мужчина
Ситуация:
Ядро и рутовая ФС расположены на SD и мы стартуем и работаем с SD.
Проблема:
Если резетнуть или выключить плату, то в 30% случаев следующая загрузка оказывается неуспешной, т.к. херится файловая система на SD карточке. В результате можно успешно стартануть только если прогнать флешку через "ScanDisk" (командой e2fsck /dev/sdb2). Там находит кучу ошибок в файловой системе (лог приведен ниже) и исправляет их.

Решение-1
Если перед резетом или выключением делать команду halt (он же shutdown) то все процессы выгружаются и файловая система не херится.
НО(!) Данное решение меня не устраивает т.к. в общем случае система не знает что ее сейчас выключат и не может ничего выполнить заранее.

ВОПРОС:
Есть ли какое-либо другое решение, чтобы избежать каких-то доп. процедур перед выключением питания ? Можно ли выставить какой-то безопасный режим работы с SD ?


======================
Лог ошибок при проверке e2fsck:

Код
/dev/sdb2 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Deleted inode 64899 has zero dtime. Fix<y>? yes
...
Deleted inode 64904 has zero dtime. Fix<y>? yes
...
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences: -268288 -(292864--292871) -(292874--292880) -(292887--292889)
Fix<y>? yes
Free blocks count wrong for group #8 (32236, counted=32255).
Fix<y>? yes
...
/dev/sdb2: ***** FILE SYSTEM WAS MODIFIED *****
Спуститься к концу Подняться к началу
Персональная информация
rw9uao
Добавлено 25.12.2011 15:15 Сообщение: 2
rw9uao
Ранг
5

Группа: Клиенты
Пункты: 6973
Регистрация: 26.03.2009
стесняюсь спросить за файловую систему на SD карте.
з.ы. потому то и держу важное в read only, а остальное барахло держу в нанде.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 25.12.2011 16:30 Сообщение: 3
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
2buletz
Цитата
Данное решение меня не устраивает т.к. в общем случае система не знает что ее сейчас выключат и не может ничего выполнить заранее.

не пойму - так что тогда требуется?
я не лазил в механизм подготовки перед выключением, но предполагаю, что есть серия скриптов и бинарников, которые по команде halt или shutdown бродкастят в систему "о выключение". драйвера останавливаются, программы и процессы завершаются, файлы закрываются.. в файловой системе ставиться файл со штампом "корректно выключился" и все замирает..

2rw9uao стесняюсь спросить - а логи и файлы статистики, скажем за неделю, хде держишь? в "важном" аль "барахле"?

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 25.12.2011 18:07 Редактировалось 25.12.2011 18:08 Сообщение: 4
Pavel Ivanchenko
Admin
4.39

Пункты: 91348
Регистрация: 24.03.2009
Пол: Мужчина
Цитата
ВОПРОС:
Есть ли какое-либо другое решение, чтобы избежать каких-то доп. процедур перед выключением питания ? Можно ли выставить какой-то безопасный режим работы с SD ?

Вопрос конечно актуальный, мало кому понравится встраиваемое решение, которое умирает при аварийном отключении электричества ...
Штатно (на платах), это решается использованием NAND в качестве корневой ФС с UBI файловой системой.
В случаей с SD, логично использовать как минимум ext3 файловую систему с синхронным монтированием (хотя я не уверен, что для ext3 это необходимо) и если даже в этом случае корневая рушится - искать причины того что (какой сервис или приложение) к этому приводит ...
Как вариант, обратить внимание на тип используемого Scheduler-а в ядре - именно он определяет схему кеширования для увеличения быстродействия взаимодействия с носителями.
Спуститься к концу Подняться к началу
Персональная информация
buletz
Добавлено 25.12.2011 20:23 Сообщение: 5
buletz
3

Пункты: 5920
Регистрация: 16.11.2011
Пол: Мужчина
1. Правильно я понимаю, что проблемы разрушения файловой системы при аварийном выключении связаны с кэшированием операций ? Можно ли отключить кэширование при работе с SD? Решит ли это проблему?

2.

Цитата

Штатно (на платах), это решается использованием NAND в качестве корневой ФС с UBI файловой системой.


А почему с NAND такой проблемы нет? Она не использует кэширования ?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 26.12.2011 01:48 Сообщение: 6
sasamy
4.70

Пункты: 76859
Регистрация: 14.08.2009
Дело не в nand а в ФС - для mtd устройств специальные ФС используются которые более устойчивы к внезапным отключениям, последние незаписанные данные могут потеряться - не более, сама структура ФС восстановится при включение.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux