我正构建一个以systemd和journald为核心的基于Yocto的发行版。
很遗憾,我无法让Yocto将所有日志存储在/var/log -> /data/log
中。我需要记录日志以及multi-user.target
之后写入的其他日志以保持持久性。 / data是持久分区。
我与this有一个非常相似的问题,但不幸的是我无法修改它以便在我的设置中正常工作。
根据我的理解,我需要修改两件事:
volatiles
中的base-files
文件是systemd-tmpfiles
的配置文件。它应该告诉它在运行时创建journald需要的所有东西。在这里我修改了一行: 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?如果这实际上是解决方案,我也想知道在路上是否有隐藏的障碍?
答案 0 :(得分:-1)
你可以通过调整基础文件配方来挂载你的持久分区(base-files _%.bbappend)
import { NgModule } from '@angular/core'
import { SharedModule } from '../../modules/shared.module'
import { ItemModule } from '../item/item.module'
import { ItemDialogComponent } from './item-dialog.component'
@NgModule({
declarations: [ItemDialogComponent], <== No need to redeclare Item
imports: [SharedModule, ItemModule], //<== Import the module here
exports: [SharedModule, ItemDialogComponent],
})
export class ItemDialogModule {}
然后你可以调整volatile-binds(volatile-binds.bbappend)
do_install_append () {
cat >> ${D}${sysconfdir}/fstab <<EOF
# Data partition
/dev/mmcblk0p4 /data auto defaults,sync,noauto 0 2
EOF
}
dirs755 += "/data"
这应该会有所帮助,我没有在这里完全测试过,但我希望这可能会为你提供一些起点。