February 8th, 2017

worklog: вот так всегда!

Нашёл первую ошибку в схеме CPU. Не фатальную, можно исправить перерезанием пары дорожек и напайкой проводков крест-накрест, но обидно. То ли ещё будет.

linux: детский вопрос про дерево каталогов и файловые системы

В линуксе есть папки, откуда мы только запускаем код на исполнение и крайне редко (при апгрейде системы, например, или при установке нового софта) что-то пишем, а то и вовсе никогда не трогаем. Во встроенных системах, ради экономии, это хозяйство заворачивают в romfs и держат на флешке, без шаманизма доступной только в read-only режиме. Но при этом в системе есть так же такие каталоги, которые требуется модифицировать, перезаписывать, создавать в них новые записи и т.п (каталоги /root, /etc, /var, /mnt, /home и т.п.). Т.е. их имеет смысл хранить в той же флешке, но уже в другом разделе, монтируемом в режиме read-write (например, файловая система jffs). Ещё я видел, что делают так: хранят систему в сжатом виде во флешке, а при запуске распаковывают её в ram-диск. Т.е. изменять можно, но изменения не сохраняются при перезагрузке. В такой форме логичнее всего держать (если уж держать) только какие-то временные или вообще виртуальные каталоги, типа /tmp или /dev.

Интересно, существует ли элегантный способ, как в одном дереве каталогов незаметно для пользователя объеденить romfs, jffs и tmpfs. Чтобы получилось нечто такое:
/bin
/sbin
/sys
и прочие подобные каталоги, где системные бинарники и всякие вещи, которые трогать без нужды не следует, лежит в romfs (и НЕ копируются в ram при запуске - ибо нет такой роскоши, как нескончаемые гигабайты быстрой оперативки, но зато есть XIP, поэтому запуск программ оттуда не жрёт оперативку для загрузки кода);
/home
/etc
/root
/mnt
и подобные вещи, где вы мы хотим хранить сохраняемые изменения (и, возможно, код тоже), лежит в jffs (из которой XIP уже не работает, ибо файлы могут быть фрагментированы и физически расположены в беспорядке);
а всё мимолётное-временное, существующее только пока система включена, пусть лежит в воображаемом разделе внутри ram.

В силу врождённого скудоумия, сам я не могу придумать, как такое сделать - ведь чтобы операционке понять, что у неё есть какие-то разные разделы на, возможно, разных носителях, ей нужно сначала прочитать файл /etc/fstab, а если он лежит на каком-то разделе, который мы ещё не подмонтировали, то как его вообще увидеть? Т.е. чтобы подмонтировать раздел, в котором лежит /etc, мы сначала должны прочитать раздел, в котором лежит /etc. Этот парадокс вообще разрешим или я зря надеюсь?