реклама на сайте
подробности

 
 
> Сохранить измениня в системе с ramfs/tmpfs
arhiv6
сообщение Jun 26 2017, 06:23
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 633
Регистрация: 21-05-10
Из: Томск
Пользователь №: 57 423



Добрый день. Начал ковырять отладочную плату с ARM9 и изучать Linux во встраиваемых системах. Пока изучаю примеры, которые идут с платой, читаю информацию. Появились некоторые вопросы, например:
1) в системах с ramfs/tmpfs есть возможность сохранить все изменений в файловой системе? Сейчас, если хочу поменять какой-то конфиг или скрипт, приходится пересобирать rootfs и заново целиком переписывать.
2) как правильно хранить настройки, которые периодически меняются (например, какой-то один конфигурационный файл)?
3) посоветуйте, пожалуйста, где можно почитать (блоги, статьи, книжки) про по Embedded Linux?


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 10)
Olej
сообщение Jun 26 2017, 10:27
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458



Цитата(arhiv6 @ Jun 26 2017, 09:23) *
3) посоветуйте, пожалуйста, где можно почитать (блоги, статьи, книжки) про по Embedded Linux?

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

Цитата(arhiv6 @ Jun 26 2017, 09:23) *
2) как правильно хранить настройки, которые периодически меняются (например, какой-то один конфигурационный файл)?

Зачем вам один?
Здесь нет реестров, ульев, здесь не водятся пчёлы ... одним словом "здесь вам не вынь-да" laughing.gif
Основные принципы UNIX (а Linux один из них), сформулированные лет 45 назад:
1. все конфигурации (настройки) хранятся в текстовых файлах
2. в форматах по принципу: <имя_параметра> = <значение>
3. конфигурации каждой подсистемы хранятся в своём отдельном файле конфига
Go to the top of the page
 
+Quote Post
arhiv6
сообщение Jun 26 2017, 12:55
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 633
Регистрация: 21-05-10
Из: Томск
Пользователь №: 57 423



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

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

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


--------------------
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jun 26 2017, 19:34
Сообщение #4


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



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


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
gerber
сообщение Jun 26 2017, 22:49
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088



Цитата(arhiv6 @ Jun 26 2017, 15:55) *
Как я себе представляю: в целях экономии ресурса флешки при старте системы образ rootfs разворачивается в ram и вся работа идёт там, т.е. на флешку ничего не пишется. Запись может потребоваться в двух случаях:
1) Вносится изменение в образ rootfs (например, меняется како-то системный скрипт).
2) Сохранение пользовательских настроек (например, для этого есть один конфигурационный файл)

Цель ramfs - вовсе не экономия ресурса флэшки, а стремление сделать систему "неубиваемой", то есть 1) устойчивой к внезапному выключению питания, даже во время записи файлов, 2) самоочищаемой от всяких временных файлов, логов и т. п. , которые могут со временем переполнить небольшой (как правило, в таких системах) носитель.
Запись туда может понадобиться в 2-х случаях (как вы правильно заметили) - 1) на этапе отладки, для правки какого-то скрипта или конфига, 2) в процессе работы системы для сохранения каких-либо данных (настроек), меняемых в процессе работы.
В первом случае, чтобы каждый раз не пересобирать rootfs, нужно вам разобраться, как смонтировать образ rootfs с правами записи. После чего монтируем его с правами rw, вносим изменения в файлы, sync, размонтируем. Если образ - это gzip-архив (даже его имя не оканчивается на .gz), то вносить изменения можно стандартными средствами gzip, вплоть до mc.
Второй случай рушит основную цель ramfs (см. выше). Поэтому сохранение настроек в таких системах продумывается особо, с оглядкой на то, что процесс записи в любой момент может быть прерван. Поэтому "тупо" обычный флэш-носитель, смонтированный при загрузке с правами RW не очень правильное решение. Во всяком случае, софт должен быть готов, что настройки окажутся недоступными, и стартануть с настройками по умолчанию и восстановить хранилище этих настроек.


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Jun 26 2017, 23:27
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Скажу банальность, но поскольку вы начинающий, то можете и не знать.
Для разработки часто монтируют файловую систему на NFS. Еще ядро грузят с TFTP. Это два разных момента. Их можно и по отдельности использовать.
Прикол вот в чем.
На самом устройстве нет ни ядра ни файловой системы. В конфигурации загрузчика вы указываете где (IP address комьпьютера) брать ядро и где монтировать файловую систему.
Так ваша система будет не в оперативной памяти вашего устройства, а на удаленном компьютере.

В интернете много рессурсов с объяснениями как делать. Будут вопросы -- отвечу.
Go to the top of the page
 
+Quote Post
vvu
сообщение Aug 15 2017, 11:12
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 70
Регистрация: 2-12-04
Из: Kiev, Ukraine
Пользователь №: 1 294



Цитата(arhiv6 @ Jun 26 2017, 09:23) *
Добрый день. Начал ковырять отладочную плату с ARM9 и изучать Linux во встраиваемых системах. Пока изучаю примеры, которые идут с платой, читаю информацию. Появились некоторые вопросы, например:
1) в системах с ramfs/tmpfs есть возможность сохранить все изменений в файловой системе? Сейчас, если хочу поменять какой-то конфиг или скрипт, приходится пересобирать rootfs и заново целиком переписывать.
2) как правильно хранить настройки, которые периодически меняются (например, какой-то один конфигурационный файл)?
3) посоветуйте, пожалуйста, где можно почитать (блоги, статьи, книжки) про по Embedded Linux?


Если еще актуально...
Скорее всего конфиги придется хранить вне файловой системы. Как это делалось в игровых автоматах. На I2C шине сидел контроллер с лампочками/кнопочками и пр., заодно его NVRAM юзалась для конфигов и как storage для апликухи. Вы же можете прямо на шину какую-нибудь 24Сxx подцепить.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Aug 21 2017, 02:25
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(vvu @ Aug 15 2017, 15:12) *
Если еще актуально...
Скорее всего конфиги придется хранить вне файловой системы. Как это делалось в игровых автоматах. На I2C шине сидел контроллер с лампочками/кнопочками и пр., заодно его NVRAM юзалась для конфигов и как storage для апликухи. Вы же можете прямо на шину какую-нибудь 24Сxx подцепить.


Ну почему же? Можно подлключить флешку, смонтировать ее и на ней все хранить.
Go to the top of the page
 
+Quote Post
vvu
сообщение Aug 22 2017, 15:59
Сообщение #9


Участник
*

Группа: Свой
Сообщений: 70
Регистрация: 2-12-04
Из: Kiev, Ukraine
Пользователь №: 1 294



Цитата(Tarbal @ Aug 21 2017, 05:25) *
Ну почему же? Можно подлключить флешку, смонтировать ее и на ней все хранить.


То уже не будет ramfs/tmpfs, как изначально требовалось.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Aug 23 2017, 03:04
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(vvu @ Aug 22 2017, 19:59) *
То уже не будет ramfs/tmpfs, как изначально требовалось.


Чудес на свете не бывает. В ОЗУ информация не переживает выключения питания.
Я советовал место хранения скриптов, которые можно скриптом переписать в те места ramfs где им место.
Go to the top of the page
 
+Quote Post
krux
сообщение Aug 23 2017, 07:17
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



а в чем проблема сделать второй раздел на флешке?
в нормальной жизни монтировать его в RO, читать настройки в ramfs, размонтировать.
при необходимости сохранить - cмонтировать в RW, записать, размонтировать.
если уровень паранойи повышен - можно даже сделать разделов два - основной-резервный, с контрольными суммами, и прочим блэкджеком и танцовщицами.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th June 2025 - 18:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.01452 секунд с 7
ELECTRONIX ©2004-2016