
Я разрабатываю встроенный Linux (сейчас он почти закончен). Я борюсь с тем, что система становится нестабильной из-за частого отключения питания и больше не загружается. Она даже не работает fsck
.
В системе есть только XFCE с фиксированным приложением Qt, автоматически загружаемым для отображения некоторых диаграмм.
Мой вопрос заключается в том, как коммерческие встраиваемые дистрибутивы Linux (например, Linux для управления точками доступа Wi-Fi, ...) избегают этой проблемы?
Есть ли у вас какие-либо идеи?
решение1
Большинство делают одно из двух:
Они либо запускают основную файловую систему только для чтения и имеют отдельную область для хранения данных, которая монтируется для чтения и записи,
или
У них основная файловая система сжата в файл, который во время загрузки расширяется в виртуальный диск.
Это означает, что файловая система всегда находится в одном и том же состоянии, что бы ни случилось. Есть только небольшая область хранения конфигурации, о которой нужно беспокоиться, и она может иметь файловую систему, которая не слишком беспокоится о потере питания.
Еще один совет — отключить все кэширование на разделе хранилища, чтобы все изменения немедленно записывались на диск.
решение2
Да, в общем-то, нет.
Когда дело доходит до дела, у каждого, вероятно, случались отказы встроенных устройств — будь то сетевое оборудование, IP-устройства или что-то еще.
Проще говоря, создайте свое приложение настолько хорошо, насколько это возможно. Это все, что вы можете сделать как разработчик.
Постарайтесь сделать свое приложение максимально надежным — поставьте проверку ошибок на самом высоком/каждом уровне. Например, если у вас есть файл конфигурации, который необходим, и ваше приложение не может работать без него, поставьте звуковой сигнал/обратную связь, если он не найден — дайте знать пользователю.
Следующий уровень на самом деле зависит от производителя оборудования — ключевыми факторами являются избыточность или надежность, и снова убедитесь, что поставщик оборудования следует вышеуказанным идеям, таким как проверка ошибок/подробная обратная связь, чтобы в случае возникновения сбоя люди знали, почему/что привело к сбою.
Я не вдавался в подробности, но надеюсь, что это поможет вам и укажет правильное направление.