Как сделать / var / log символическую ссылку на постоянное хранилище в Yocto Rocko - PullRequest
0 голосов
/ 09 июня 2018

Я строю дистрибутив на основе 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

  • fs-perms.txt

${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?Если это действительно то решение, которое я также хотел бы знать, нет ли в будущем скрытых препятствий?

1 Ответ

0 голосов
/ 09 июня 2018

вы можете смонтировать свой постоянный раздел с помощью настройки рецепта базовых файлов (base-files _%. Bbappend)

do_install_append () {
    cat >> ${D}${sysconfdir}/fstab <<EOF

# Data partition
/dev/mmcblk0p4       /data          auto       defaults,sync,noauto  0  2
EOF
}
dirs755 += "/data"

, затем вы можете настроить volatile-binds (volatile-binds.bbappend)

VOLATILE_BINDS = "\
    /data/var/lib /var/lib\n\
    /data/var/log /var/log\n\
    /data/var/spool /var/spool\n\
    /data/var/srv /srv\n\
"

Надеюсь, это поможет, я здесь не полностью его проверил, но надеюсь, что это может послужить вам отправной точкой.

...