我正在开发 Yocto 发行版,我需要用/etc/hosts
一个新hosts
文件替换默认文件,我必须在其中插入一些 DNS 设置。
我在图像中找到的默认文件是:
127.0.0.1 localhost.localdomain localhost
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
要修改 Yocto 图像中的文件,/etc/hosts
我需要找到将文件添加到图像的配方。有人可以帮我找到这个食谱吗?
谢谢
答案1
我自己找到了问题的解决方案。我不知道这是否是最好的解决方案,但对我来说这已经足够了。
我可以将任务分为两个不同的步骤。
第一步:找到菜谱
我正在与宙斯释放 yocto;在此版本中,我最终找到了安装/etc/hosts
在图像中的配方;食谱是:
meta/recipes-core/base-fles/base-files_<recipe_version>.bb
hosts
为了找到以前的食谱,我在包含所有 yocto 层的文件夹中查找了该文件。为此,我执行了以下命令:
cd <path/to/yocto/folder>
find ./meta* -name "*hosts*"
上一个命令的输出包含:
...
./meta/recipes-core/base-files/base-files/hosts
...
在食谱中./meta/recipes-core/base-files/base-files_3.0.14.bb
我发现了以下作业:
SRC_URI = "file://rotation \
file://nsswitch.conf \
file://motd \
=========> file://hosts \
file://host.conf \
file://profile \
file://shells \
file://fstab \
file://issue.net \
file://issue \
file://share/dot.bashrc \
file://share/dot.profile \
file://licenses/GPL-2 \
"
文件在哪里hosts
。
第二步:创建base_files_%.bbappend
文件
我发现替换文件的方法hosts
是添加一个base_files_%.bbappend
文件(在 中)并用我的新文件mylayer/recipes-core/base-files
替换默认文件。hosts
hosts
我的文件内容base_files_%.bbappend
是:
FILESEXTRAPATHS_prepend := "${THISDIR}/base-files:"
SRC_URI = "file://rotation \
file://nsswitch.conf \
file://motd \
file://hosts \
file://host.conf \
file://profile \
file://shells \
file://fstab \
file://issue.net \
file://issue \
file://share/dot.bashrc \
file://share/dot.profile \
file://licenses/GPL-2 \
"
此外,我已将新hosts
文件插入文件夹中
mylayer/recipes-core/base-fles/base-files
::
mylayer
|
recipes-core
|
base-files
|
base-files
|
hosts
定义中列出的其他文件SRC_URI
(rotation
、nsswitch.conf
等)继续来自主base-files
文件夹:
meta/recipes-core/base-fles/base-files
。