Я строю дистрибутив на основе Yocto с systemd и journald в его ядре.
И, к сожалению, я не могу заставить Yocto хранить все журналы в /var/log -> /data/log
.Мне нужны журналы журнала, а также некоторые другие журналы, которые записываются там после multi-user.target
, чтобы быть постоянными./ data - это постоянный раздел.
У меня проблема, очень похожая на this , но, к сожалению, я не смог изменить ее для правильной работы в моих настройках.
Из моегоПонимая, что мне нужно изменить две вещи:
volatiles
файл в base-files
, который, я надеюсь, является файлом конфигурации для systemd-tmpfiles
.Он должен сказать ему, чтобы он создавал во время выполнения все, что нужно журналу.Здесь я изменил одну строку:
L+ root root 0755 /var/log /data/log
${localstatedir}/log link /data/log
Я такжепопытался выполнить это с помощью VOLATILE_LOG_DIR
set "no"
(fs-perms-persistent-log.txt modified but to no avail. And also adding some kind of
var.conf to
/ etc / tmpfiles.d` с конфигурацией, аналогичной приведенной выше.не сработало.
Я запускаю watch ls -l on the resulting rootfs/var
и вижу, что var/log
на короткое время получает символическую ссылку на `/ data / log, но позже он где-то переопределяется, чтобы снова указывать на volatile / log.
Я был бы очень признателен за любой совет, потому что кажется, что я слишком усложняю это. Это должно быть очень легко. В конце концов, это просто заставляет Yocto создать символическую ссылку. Но я думаю, что это довольно важный каталог дляпозвольте мне ln -sf /data/log /var/log
.
Я также хотел бы услышать о последствиях этого подхода. Кроме изнашивания моей eMMC. Мы можем жить с этим, потому что активность журнала очень низкая по сравнению с некоторыми другими действиями, выполняемыми надустройство. Меня больше всего интересует порядок монтажа и прочее. Если я помнюправильно, journald будет использовать буфер памяти до тех пор, пока для него не будет создан /var/log/journal
, так что со мной все будет в порядке.Но что я должен сделать, чтобы убедиться, что все на месте, прежде чем журналы сбрасываются?Нужно ли мне модифицировать системные сервисы, чтобы они включали RequireMountsFor
или After=
?
Я хочу быть максимально защищенным, поэтому я с нетерпением жду, что вы, ребята, скажете по этой теме.
РЕДАКТИРОВАТЬ:
Может быть, я могу просто добавить привязку монтирования из / var / log в / data / log?Если это действительно то решение, которое я также хотел бы знать, нет ли в будущем скрытых препятствий?