2017-01-06 16 views
3

/var/logを私のfidoビルドで永続化しようとしています。 pokyのデフォルト設定では、/varにシンボリックリンクがあり、log -> volatile/logを指しています。 volatileはtmpfsにマウントされています。Yocto Fido(poky)で/ var/logを永続化する方法

は、これまでのところ、私はシンボリックリンクがbase-filesレシピによって作成されなければならないことを考え出し:

volatiles = "log tmp" 

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

リンクが作成されなかったので、私は、ベースファイルレシピを付加し、それはまだ私にrootfsに上がって。だからどこから来たの?私はおそらくfs-perms.txtはそれと関係があると思われる。しかし、私は

${localstatedir}/log link volatile/log 

行なしで作成しようとしましたが、まだそのリンクを作成しました。すべての手がかりは?

答えて

4

基本ファイルレシピは基本システムディレクトリを作成し、揮発性のシンボリックリンクを作成します。また、影響を受ける2番目のファイルがあります。起動時にシンボリックリンクをチェックし、見つからなければ作成します。 base-filesinitscriptsレシピの両方を追加する必要があります。最後に、ベースファイル関連のリンクをfs-perms.txtに更新する必要があります。

あなたのハードドライブに十分なスペースがある場合は、/var/logをrootfsとは別のパーティションにマウントすることができます。 rootfsパーティションに何かが起きた場合、これはもっと実用的で安全な方法です。

new_log_partはこの場合はログパーティションです。

ログ用に新しいパーティションを作成する場合は、起動時に自動マウントするようにfstabに追加する必要があります。ベースファイルレシピに新しいfstabを含めます。

追加するベースファイルのレシピ:

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 
    } 

初期化スクリプトを追加します。

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

SRC_URI += "file://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変更:

# 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 

その後層のlayer.confファイルに新しいFS-perms.txtを含めるには、この行を追加します。

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

注:あなたがあなた自身のFS-パーマファイルを作成し、confの中でデフォルト1を追加することができます。層。

FILESYSTEM_PERMS_TABLES = "fs-perm.txt my-fs-perm.txt" 
関連する問題