1

Контекст: встроенная система, MMC только для чтения с наложением tmpfs . Все записывается в ОЗУ и исчезает при перезагрузке.

systemd настаивает на создании многочисленных монтировок tmpfs (по крайней мере /run /run/lock /run/shm и /tmp с моей головы, возможно, других), которые абсолютно бесполезны, так как вся файловая система, доступная только для чтения, уже перекрыта tmpfs .

Проблема: это довольно ограниченная встроенная система, и каждый байт оперативной памяти считается. Я хотел бы избежать накладных расходов на управление несколькими tmpfs в разных местах и просто поместить все в основной оверлей tmpfs .

К сожалению, пока мне удалось отключить /tmp (systemctl mask systemd-tmpfiles*), но это ничего не делает для иерархии /run .

Есть идеи, где скрыты эти настройки?

1 ответ1

2

С верхней части моей головы:

Необходимые:

/sys/fs/cgroup нельзя отключить, так как стандартные функции systemd основаны на cgroups.

/dev не может и не должна быть отключена, поскольку это не обычный tmpfs - это devtmpfs, где ядро автоматически создает узлы для устройств с горячим подключением. (Это работает даже без Udev.)

Сложно:

/run не может быть отключен; вы можете исправить это из таблицы в системном src/core/mount-setup.c , но делать это только в том случае, если местоположение все еще имеет те же свойства, что и tmpfs.

/run/shm также нельзя отключить, потому что это требуется glibc для реализации разделяемой памяти POSIX. Опять же, вы можете залатать его из src/core/mount-setup.c , пока это место остается на tmpfs. Имейте в виду, что этот путь представляет собой пользовательский патч для дистрибутива - традиционно эта файловая система будет находиться в /dev/shm .

Необязательный:

/dev/mqueue , /dev/hugepages монтируются в соответствии с файлами модулей .mount , которые можно удалить.

/run/lock самом деле не является tmpfs по умолчанию. Если вы видите что-то, смонтированное в этом месте, это должно быть пользовательское дополнение вашего дистрибутива, и, скорее всего, его можно отключить, удалив модуль run-lock.mount .

/tmp является необязательным и монтируется в соответствии с tmp.mount . Вы можете удалить этот файл модуля.


Я был бы очень удивлен, если бы монтирование tmpfs стоило больше, чем страница памяти.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .