更新 Poky 源代码中的脚本
Updating the script present in Poky Source code
meta/recipes-core/initrdscripts/files/init-install-efi.sh用于格式化和创建分区。
我修改了这个文件,为软件更新创建了一个分区。
我可以在自己的自定义图层中复制新更新的脚本文件吗recipes-core/initrdscripts/files/init-install-efi.sh.
它会更新 init-install-efi.sh。如果不是如何实现这一点,我不想触摸 poky 源代码,因为它是使用 repo 实用程序
获取的
$ tree meta-ncr/
meta-ncr/
├── conf
│ ├── bblayers.conf
│ ├── layer.conf
│ └── machine
│ └── panther2.conf
├── recipes-core
│ └── initrdscripts
│ ├── files
│ │ └── init-install-efi.sh
│ └── initramfs-live-install-efi_1.0.bbappend
└── scripts
└── setup-environment
$ cat meta-ncr/recipes-core/initrdscripts/initramfs-live-install-efi_1.0.bbappend
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI = "file://init-install-efi.sh"
调试后,我发现它复制的是meta-intel层中的脚本,而不是我层中的脚本。
这是bitbake-layers show-appends
的输出
initramfs-live-install-efi_1.0.bb:
/home/jamal/repo_test/sources/meta-intel/recipes-core/initrdscripts/initramfs-live-install-efi_%.bbappend
/home/jamal/repo_test/sources/meta-ncr/recipes-core/initrdscripts/initramfs-live-install-efi_1.0.bbappend
你能告诉我需要做哪些更改才能让我的 bbappend 代替 meta-intel 工作吗
Yocto 提供 bbappend 机制来存档您的案例而不涉及 poky 中的元数据,请按照以下几个步骤进行存档:
- 创建新图层或使用您现有的图层,
在这一层为initramfs-module-install-efi_1.0.bb或[创建bbappend文件=29=]initramfs-live-install-efi_1.0.bb(我发现这个菜谱是基于这个脚本的),内容:
$ cat meta-test/recipes-core/initrdscripts/initramfs-live-install-efi_1.0.bbappend
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI = "file://init-install-efi.sh"
将修改后的脚本文件移动到 files 目录下,您的元层结构应如下所示:
$ tree meta-test/
meta-test/
├── conf
│ └── layer.conf
├── COPYING.MIT
├── README
└── recipes-core
└── initrdscripts
├── files
│ └── init-install-efi.sh
└── initramfs-live-install-efi_1.0.bbappend
4个目录,5个文件
然后终于在 运行 do_unpack 任务 initramfs-live-install-efi 配方上工作目录你会在配方工作区找到你修改的文件,
$ bitbake -c unpack initramfs-live-install-efi
测试:
$ cat tmp/work/i586-poky-linux/initramfs-live-install-efi/1.0-r1/init-install-efi.sh
#!/bin/bash
echo "hello"
FILESEXTRAPATHS - 用于扩展 do_fetch 和 do_patch 任务的搜索路径.
meta/recipes-core/initrdscripts/files/init-install-efi.sh用于格式化和创建分区。
我修改了这个文件,为软件更新创建了一个分区。
我可以在自己的自定义图层中复制新更新的脚本文件吗recipes-core/initrdscripts/files/init-install-efi.sh.
它会更新 init-install-efi.sh。如果不是如何实现这一点,我不想触摸 poky 源代码,因为它是使用 repo 实用程序
获取的$ tree meta-ncr/
meta-ncr/
├── conf
│ ├── bblayers.conf
│ ├── layer.conf
│ └── machine
│ └── panther2.conf
├── recipes-core
│ └── initrdscripts
│ ├── files
│ │ └── init-install-efi.sh
│ └── initramfs-live-install-efi_1.0.bbappend
└── scripts
└── setup-environment
$ cat meta-ncr/recipes-core/initrdscripts/initramfs-live-install-efi_1.0.bbappend
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI = "file://init-install-efi.sh"
调试后,我发现它复制的是meta-intel层中的脚本,而不是我层中的脚本。
这是bitbake-layers show-appends
initramfs-live-install-efi_1.0.bb:
/home/jamal/repo_test/sources/meta-intel/recipes-core/initrdscripts/initramfs-live-install-efi_%.bbappend
/home/jamal/repo_test/sources/meta-ncr/recipes-core/initrdscripts/initramfs-live-install-efi_1.0.bbappend
你能告诉我需要做哪些更改才能让我的 bbappend 代替 meta-intel 工作吗
Yocto 提供 bbappend 机制来存档您的案例而不涉及 poky 中的元数据,请按照以下几个步骤进行存档:
- 创建新图层或使用您现有的图层,
在这一层为initramfs-module-install-efi_1.0.bb或[创建bbappend文件=29=]initramfs-live-install-efi_1.0.bb(我发现这个菜谱是基于这个脚本的),内容:
$ cat meta-test/recipes-core/initrdscripts/initramfs-live-install-efi_1.0.bbappend FILESEXTRAPATHS_prepend := "${THISDIR}/files:" SRC_URI = "file://init-install-efi.sh"
将修改后的脚本文件移动到 files 目录下,您的元层结构应如下所示:
$ tree meta-test/ meta-test/ ├── conf │ └── layer.conf ├── COPYING.MIT ├── README └── recipes-core └── initrdscripts ├── files │ └── init-install-efi.sh └── initramfs-live-install-efi_1.0.bbappend
4个目录,5个文件
然后终于在 运行 do_unpack 任务 initramfs-live-install-efi 配方上工作目录你会在配方工作区找到你修改的文件,
$ bitbake -c unpack initramfs-live-install-efi
测试:
$ cat tmp/work/i586-poky-linux/initramfs-live-install-efi/1.0-r1/init-install-efi.sh
#!/bin/bash
echo "hello"
FILESEXTRAPATHS - 用于扩展 do_fetch 和 do_patch 任务的搜索路径.