YOCTO 更改内核版本和 select 驱动程序
YOCTO Change kernel version and select drivers
我正在尝试使用 Yocto
为 T1042D4RDB-64B
嵌入式板编译从 https://github.com/qoriq-open-source/linux(版本 4.9)获得的新 Linux
内核。目前正在使用 4.1.35-rt41
.
我遵循了这些步骤:
bitbake virtual/kernel -c cleansstate
bitbake virtual/kernel -c 补丁
正在用我的新内核源代码替换 git 文件夹 (https://github.com/qoriq-open-source/linux)
make ARCH=powerpc menuconfig
bitbake virtual/kernel
结果是
新内核编译成功,但uImage中没有我需要的驱动。新内核只有4个驱动(deploy/images/t1042d4rdb-64b/rootfs.tar.gz),分别是"hid"、"input"、"misc"和"staging"。
Linux kernel 4.9
里面有很多驱动文件夹,比如gpio,gpu,bluetooth,connector等等..
问题是
如何将我需要的驱动程序导入新的uImage并将它们放入板中?或者我如何编译这个内核和 select 所需的 modules/drivers?我想要像我的 Ubuntu 内核那样的丰富内核。
内核配置:
驱动选择发生在通过.config文件编译内核时。您可以通过 menuconfig 配置内核(包括使用的驱动程序):
bitbake -c menuconfig virtual/kernel
现在,您需要说服 bitbake 使用这些有效的更改。为此,您需要强制编译内核:
bitbake -f -c compile virtual/kernel
最后,您可以编译映像并将其烧写到目标上。
不过,这不会使更改永久生效。要使更改永久生效,您需要一个自定义层和一个 bbappend 文件。使用 devtool 很容易做到这一点。 yocto mega manual 详细解释了该过程。在这里,我将只解释非常基本的步骤。 运行
devtool modify virtual/kernel
将在本地分支上的 build/workspace/sources/linux-mainline 中添加一个临时工作副本(前提是您使用的内核称为 kernel-mainline)。您可以在这里进行所有想要的更改,并在您的硬件上进行尝试。一旦您高兴并想将这些更改添加到您的食谱中,您需要提交这些更改。
最后运行
devtool finish linux-mainline <path-to-your-layer>
将自动生成一个 .bbappend 和一个 defconfig (.config) 文件并将其放入您的图层中。如果您想修补某些驱动程序等,您可能需要查看手册的 kernel-dev 部分。
内核版本选择:
我不太确定这个,但它应该像这样工作:
您需要一个已经可用的内核配方,作为 bitbake 已知的任何层的配方。如果您不确定,请查看 openembedded layer index 并搜索您要使用的内核版本,下载配方并将其放入您的层中。最后你需要告诉 bitbake 使用这个版本。这可以在 build/local.conf 配置文件中完成:
PREFERED_VERSION_linux-mainline = "5.3.11"
我从来没有尝试过最后一个,不知道它是否有效,也不知道这可能会破坏哪些其他依赖关系。
我通过将 Yocto 版本从 2.0 升级到 2.7 找到了解决方案。我使用的版本是为我的主板 (t1042d4rdb-64b) 新设计的,包括 linux 内核 4.19.xxx。安装说明可以在这里找到
https://source.codeaurora.org/external/qoriq/qoriq-components/yocto-sdk/tree/readme?h=yocto_2.7
我正在尝试使用 Yocto
为 T1042D4RDB-64B
嵌入式板编译从 https://github.com/qoriq-open-source/linux(版本 4.9)获得的新 Linux
内核。目前正在使用 4.1.35-rt41
.
我遵循了这些步骤:
bitbake virtual/kernel -c cleansstate
bitbake virtual/kernel -c 补丁
正在用我的新内核源代码替换 git 文件夹 (https://github.com/qoriq-open-source/linux)
make ARCH=powerpc menuconfig
bitbake virtual/kernel
结果是
新内核编译成功,但uImage中没有我需要的驱动。新内核只有4个驱动(deploy/images/t1042d4rdb-64b/rootfs.tar.gz),分别是"hid"、"input"、"misc"和"staging"。
Linux kernel 4.9
里面有很多驱动文件夹,比如gpio,gpu,bluetooth,connector等等..
问题是
如何将我需要的驱动程序导入新的uImage并将它们放入板中?或者我如何编译这个内核和 select 所需的 modules/drivers?我想要像我的 Ubuntu 内核那样的丰富内核。
内核配置:
驱动选择发生在通过.config文件编译内核时。您可以通过 menuconfig 配置内核(包括使用的驱动程序):
bitbake -c menuconfig virtual/kernel
现在,您需要说服 bitbake 使用这些有效的更改。为此,您需要强制编译内核:
bitbake -f -c compile virtual/kernel
最后,您可以编译映像并将其烧写到目标上。
不过,这不会使更改永久生效。要使更改永久生效,您需要一个自定义层和一个 bbappend 文件。使用 devtool 很容易做到这一点。 yocto mega manual 详细解释了该过程。在这里,我将只解释非常基本的步骤。 运行
devtool modify virtual/kernel
将在本地分支上的 build/workspace/sources/linux-mainline 中添加一个临时工作副本(前提是您使用的内核称为 kernel-mainline)。您可以在这里进行所有想要的更改,并在您的硬件上进行尝试。一旦您高兴并想将这些更改添加到您的食谱中,您需要提交这些更改。 最后运行
devtool finish linux-mainline <path-to-your-layer>
将自动生成一个 .bbappend 和一个 defconfig (.config) 文件并将其放入您的图层中。如果您想修补某些驱动程序等,您可能需要查看手册的 kernel-dev 部分。
内核版本选择:
我不太确定这个,但它应该像这样工作: 您需要一个已经可用的内核配方,作为 bitbake 已知的任何层的配方。如果您不确定,请查看 openembedded layer index 并搜索您要使用的内核版本,下载配方并将其放入您的层中。最后你需要告诉 bitbake 使用这个版本。这可以在 build/local.conf 配置文件中完成:
PREFERED_VERSION_linux-mainline = "5.3.11"
我从来没有尝试过最后一个,不知道它是否有效,也不知道这可能会破坏哪些其他依赖关系。
我通过将 Yocto 版本从 2.0 升级到 2.7 找到了解决方案。我使用的版本是为我的主板 (t1042d4rdb-64b) 新设计的,包括 linux 内核 4.19.xxx。安装说明可以在这里找到 https://source.codeaurora.org/external/qoriq/qoriq-components/yocto-sdk/tree/readme?h=yocto_2.7