Перейти к содержанию
    

Сохранить измениня в системе с ramfs/tmpfs

Добрый день. Начал ковырять отладочную плату с ARM9 и изучать Linux во встраиваемых системах. Пока изучаю примеры, которые идут с платой, читаю информацию. Появились некоторые вопросы, например:

1) в системах с ramfs/tmpfs есть возможность сохранить все изменений в файловой системе? Сейчас, если хочу поменять какой-то конфиг или скрипт, приходится пересобирать rootfs и заново целиком переписывать.

2) как правильно хранить настройки, которые периодически меняются (например, какой-то один конфигурационный файл)?

3) посоветуйте, пожалуйста, где можно почитать (блоги, статьи, книжки) про по Embedded Linux?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3) посоветуйте, пожалуйста, где можно почитать (блоги, статьи, книжки) про по Embedded Linux?

Linux по-русски

Linux для программиста

 

2) как правильно хранить настройки, которые периодически меняются (например, какой-то один конфигурационный файл)?

Зачем вам один?

Здесь нет реестров, ульев, здесь не водятся пчёлы ... одним словом "здесь вам не вынь-да" :laughing:

Основные принципы UNIX (а Linux один из них), сформулированные лет 45 назад:

1. все конфигурации (настройки) хранятся в текстовых файлах

2. в форматах по принципу: <имя_параметра> = <значение>

3. конфигурации каждой подсистемы хранятся в своём отдельном файле конфига

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Olej, с философией UNIX-way знаком, одобряю, Вы меня неправильно поняли просто.

 

Как я себе представляю: в целях экономии ресурса флешки при старте системы образ rootfs разворачивается в ram и вся работа идёт там, т.е. на флешку ничего не пишется. Запись может потребоваться в двух случаях:

1) Вносится изменение в образ rootfs (например, меняется како-то системный скрипт).

2) Сохранение пользовательских настроек (например, для этого есть один конфигурационный файл)

 

Сейчас я для обоих пунктов вынужден делать полную пересборку rootfs на компьютере и потом переписывать её на флешку на плате. На одной сторонней железке я когда-то встречал другое - при старте системы самописная утилита из последнего сектора флешки вычитывает данные в файл с пользовательскими настройками и когда необходимо - туда же сохраняла; rootfs тоже самописной утилитой обновлять можно было, минуты 4 длилось. А других способов я не знаю - у меня просто опыта нету, вот я и хочу узнать, как такие вещи делаются (какие вообще бывают подходы и как это делать правильно).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для этого применяют OverlayFS. Я как-то поднимал такую на openwrt, всё работало. К сожалению, подробностей не помню - сделал и забыл.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как я себе представляю: в целях экономии ресурса флешки при старте системы образ rootfs разворачивается в ram и вся работа идёт там, т.е. на флешку ничего не пишется. Запись может потребоваться в двух случаях:

1) Вносится изменение в образ rootfs (например, меняется како-то системный скрипт).

2) Сохранение пользовательских настроек (например, для этого есть один конфигурационный файл)

Цель ramfs - вовсе не экономия ресурса флэшки, а стремление сделать систему "неубиваемой", то есть 1) устойчивой к внезапному выключению питания, даже во время записи файлов, 2) самоочищаемой от всяких временных файлов, логов и т. п. , которые могут со временем переполнить небольшой (как правило, в таких системах) носитель.

Запись туда может понадобиться в 2-х случаях (как вы правильно заметили) - 1) на этапе отладки, для правки какого-то скрипта или конфига, 2) в процессе работы системы для сохранения каких-либо данных (настроек), меняемых в процессе работы.

В первом случае, чтобы каждый раз не пересобирать rootfs, нужно вам разобраться, как смонтировать образ rootfs с правами записи. После чего монтируем его с правами rw, вносим изменения в файлы, sync, размонтируем. Если образ - это gzip-архив (даже его имя не оканчивается на .gz), то вносить изменения можно стандартными средствами gzip, вплоть до mc.

Второй случай рушит основную цель ramfs (см. выше). Поэтому сохранение настроек в таких системах продумывается особо, с оглядкой на то, что процесс записи в любой момент может быть прерван. Поэтому "тупо" обычный флэш-носитель, смонтированный при загрузке с правами RW не очень правильное решение. Во всяком случае, софт должен быть готов, что настройки окажутся недоступными, и стартануть с настройками по умолчанию и восстановить хранилище этих настроек.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скажу банальность, но поскольку вы начинающий, то можете и не знать.

Для разработки часто монтируют файловую систему на NFS. Еще ядро грузят с TFTP. Это два разных момента. Их можно и по отдельности использовать.

Прикол вот в чем.

На самом устройстве нет ни ядра ни файловой системы. В конфигурации загрузчика вы указываете где (IP address комьпьютера) брать ядро и где монтировать файловую систему.

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

 

В интернете много рессурсов с объяснениями как делать. Будут вопросы -- отвечу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день. Начал ковырять отладочную плату с ARM9 и изучать Linux во встраиваемых системах. Пока изучаю примеры, которые идут с платой, читаю информацию. Появились некоторые вопросы, например:

1) в системах с ramfs/tmpfs есть возможность сохранить все изменений в файловой системе? Сейчас, если хочу поменять какой-то конфиг или скрипт, приходится пересобирать rootfs и заново целиком переписывать.

2) как правильно хранить настройки, которые периодически меняются (например, какой-то один конфигурационный файл)?

3) посоветуйте, пожалуйста, где можно почитать (блоги, статьи, книжки) про по Embedded Linux?

 

Если еще актуально...

Скорее всего конфиги придется хранить вне файловой системы. Как это делалось в игровых автоматах. На I2C шине сидел контроллер с лампочками/кнопочками и пр., заодно его NVRAM юзалась для конфигов и как storage для апликухи. Вы же можете прямо на шину какую-нибудь 24Сxx подцепить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если еще актуально...

Скорее всего конфиги придется хранить вне файловой системы. Как это делалось в игровых автоматах. На I2C шине сидел контроллер с лампочками/кнопочками и пр., заодно его NVRAM юзалась для конфигов и как storage для апликухи. Вы же можете прямо на шину какую-нибудь 24Сxx подцепить.

 

Ну почему же? Можно подлключить флешку, смонтировать ее и на ней все хранить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну почему же? Можно подлключить флешку, смонтировать ее и на ней все хранить.

 

То уже не будет ramfs/tmpfs, как изначально требовалось.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То уже не будет ramfs/tmpfs, как изначально требовалось.

 

Чудес на свете не бывает. В ОЗУ информация не переживает выключения питания.

Я советовал место хранения скриптов, которые можно скриптом переписать в те места ramfs где им место.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а в чем проблема сделать второй раздел на флешке?

в нормальной жизни монтировать его в RO, читать настройки в ramfs, размонтировать.

при необходимости сохранить - cмонтировать в RW, записать, размонтировать.

если уровень паранойи повышен - можно даже сделать разделов два - основной-резервный, с контрольными суммами, и прочим блэкджеком и танцовщицами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...