2017-01-06 1 views
3

J'essaie d'obtenir /var/log persistant dans ma compilation fido. Le paramètre par défaut sur poky est, qu'il existe un lien symbolique dans /var qui pointe log -> volatile/log. volatile est monté sur un tmpfs.Comment rendre/var/log persistant dans Yocto Fido (poky)

Jusqu'à présent, je me suis dit que le lien symbolique doit être créé par la recette base-files:

volatiles = "log tmp" 

do_install() { 
    ... 
    for d in ${volatiles}; do 
     ln -sf volatile/$d ${D}${localstatedir}/$d 
    done 
    ... 

I en annexe la recette de base-fichiers de sorte que le lien n'a pas été créé, mais il reste tourné dans mes rootfs. Donc, d'où cela vient-il? Je soupçonne que peut-être le fs-perms.txt a quelque chose à voir avec cela. Mais j'ai essayé d'en créer un sans la

${localstatedir}/log link volatile/log 

ligne et il créait toujours ce lien. Des indices?

Répondre

4

La recette de fichiers de base crée les répertoires système de base et crée les liens symboliques volatils. Il y a aussi un second fichier qui affecte, c'est un initscript qui vérifie les répertoires volatiles, les liens symboliques au démarrage et les crée s'ils sont manquants. Vous devez ajouter les recettes base-files et initscripts. Enfin, vous devez mettre à jour les liens associés aux fichiers de base dans fs-perms.txt.

Je suggère que s'il y a assez d'espace sur votre disque dur, vous pouvez monter /var/log à une partition différente de rootfs. C'est plus pratique et sûr si quelque chose arrive sur votre partition rootfs.

new_log_part est ma partition de journal dans ce cas.

Si vous créez une nouvelle partition pour les journaux, vous devez l'ajouter à fstab pour effectuer le démarrage automatique. Inclure le nouveau fstab dans la recette des fichiers de base.

La recette de base-fichiers à append:

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" 

    SRC_URI += "file://fstab" 

    dirs755_remove = "${localstatedir}/volatile/log" 
    volatiles_remove = "log" 

    do_install_append() { 
    ln -snf new_log_part ${D}${localstatedir}/log 
    } 

initscripts append:

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" 

SRC_URI += "file://volatiles" 

fichier de volatiles:

# This configuration file lists filesystem objects that should get verified 
# during startup and be created if missing. 
# 
# Every line must either be a comment starting with # 
# or a definition of format: 
# <type> <owner> <group> <mode> <path> <linksource> 
# where the items are separated by whitespace ! 
# 
# <type> : d|f|l : (d)irectory|(f)ile|(l)ink 
# 
# A linking example: 
# l root root 0777 /var/test /tmp/testfile 
# f root root 0644 /var/test none 
# 
# Understanding links: 
# When populate-volatile is to verify/create a directory or file, it will first 
# check it's existence. If a link is found to exist in the place of the target, 
# the path of the target is replaced with the target the link points to. 
# Thus, if a link is in the place to be verified, the object will be created 
# in the place the link points to instead. 
# This explains the order of "link before object" as in the example above, where 
# a link will be created at /var/test pointing to /tmp/testfile and due to this 
# link the file defined as /var/test will actually be created as /tmp/testfile. 
d root root 0755 /var/volatile/cache none 
d root root 1777 /var/volatile/lock none 
d root root 0755 /var/new_log_part none 
d root root 0755 /var/volatile/run none 
d root root 1777 /var/volatile/tmp none 
l root root 0755 /var/cache /var/volatile/cache 
l root root 1777 /var/lock /var/volatile/lock 
l root root 0755 /var/log /var/new_log_part 
l root root 0755 /var/run /var/volatile/run 
l root root 1777 /var/tmp /var/volatile/tmp 
d root root 0755 /var/lock/subsys none 
f root root 0664 /var/new_log_part/wtmp none 
f root root 0664 /var/run/utmp none 
l root root 0644 /etc/resolv.conf /var/run/resolv.conf 
f root root 0644 /var/run/resolv.conf none 

fs-perms.txt changements:

# Items from base-files 
# Links 
${localstatedir}/run link volatile/run 
${localstatedir}/log link new_log_part 
${localstatedir}/lock link volatile/lock 
${localstatedir}/tmp link volatile/tmp 

Puis dans le fichier layer.conf de la couche ajouter cette ligne pour inclure de nouvelles fs-perms.txt:

FILESYSTEM_PERMS_TABLES = "${LAYER_PATH}/fs_files/fs-perms.txt" 

Remarque: Vous pouvez créer votre propre fichier fs-perm et ajoutez la valeur par défaut un dans votre conf. couche.

FILESYSTEM_PERMS_TABLES = "fs-perm.txt my-fs-perm.txt"