将罗伯特·纳尔逊的Linux内核构建为Yocto(雏菊),用于beaglebone黑色 [英] Building Robert Nelson's Linux kernel into Yocto(daisy) for beaglebone black

查看:1107
本文介绍了将罗伯特·纳尔逊的Linux内核构建为Yocto(雏菊),用于beaglebone黑色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从官方的存储库构建用于beaglebone黑色的Linux https://github.com/beagleboard/linux

I was trying to build Linux for beaglebone black from official repository https://github.com/beagleboard/linux

我能够获取并运行menuconfig,但是当我尝试编译内核时,我会收到错误。

I am able to fetch and run menuconfig but when i try to compile the kernel i get error.

以下是配方文件的内容。

Following is the content of the recipe file.

文件名:linux-yocto-chipsee_3.14.bb

路径:/ home / ankur / yocto_daisy / poky / meta-ybdevelop / recipes-example / linux

File name : linux-yocto-chipsee_3.14.bb
path: /home/ankur/yocto_daisy/poky/meta-ybdevelop/recipes-example/linux

inherit kernel
require recipes-kernel/linux/linux-yocto.inc

BRANCH = "3.14"
# Override SRC_URI in a bbappend file to point at a different source # tree if you do not want to build from Linus' tree.
SRC_URI = "git://github.com/beagleboard/linux.git;branch=${BRANCH};nocheckout=1;name=machine"

LINUX_VERSION ?= "3.14"
LINUX_VERSION_EXTENSION ?= "-custom"

# Override SRCREV to point to a different commit in a bbappend file to # build a different release of the Linux kernel.
# tag: v3.4 76e10d158efb6d4516018846f60c2ab5501900bc
SRCREV_machine="76e10d158efb6d4516018846f60c2ab5501900bc"

PR = "r1"
PV = "${LINUX_VERSION}+git${SRCPV}"

# Override COMPATIBLE_MACHINE to include your machine in a bbappend # file. Leaving it empty here ensures an early explicit build failure.
COMPATIBLE_MACHINE = "beaglebone"

文件名:linux- yocto-chipsee_3.14.bbappend

文件路径:/ home / ankur / yocto_daisy / poky / meta-ybdevelop / recipes-example / linux

File name :linux-yocto-chipsee_3.14.bbappend
File path : /home/ankur/yocto_daisy/poky/meta-ybdevelop/recipes-example/linux

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:"
SRC_URI_append = " file://defconfig"

defconfig路径:/ home / ankur / yocto_daisy / poky / meta-ybdevelop /recipes-example/linux/linux-yocto-chipsee_3.14

defconfig path: /home/ankur/yocto_daisy/poky/meta-ybdevelop/recipes-example/linux/linux-yocto-chipsee_3.14

使用上述配置,我可以获取并打开已读取的linux内核的menuconfig,我使用的命令是遵循,

With above configuration i am able to fetch and open menuconfig for fetched linux kernel, command i used is as follows,

# bitbake linux-yocto-chipsee -c menuconfig

但是,当我尝试使用以下命令编译Linux时,会出现错误,

But when I try to compile Linux using below command it gives error,

# bitbake linux-yocto-chipsee -c compile

获取与gcc相关的错误: / p>

getting error related to gcc :(

 /bin/sh: 1: arm-poky-linux-gnueabi-gcc: not found
| make[4]: *** [scripts/mod/empty.o] Error 127
| make[3]: *** [scripts/mod] Error 2
| make[3]: *** Waiting for unfinished jobs....
|   SHIPPED scripts/genksyms/lex.lex.c
|   Generating include/generated/mach-types.h
|   SHIPPED scripts/genksyms/keywords.hash.c
|   SHIPPED scripts/genksyms/parse.tab.h
|   SHIPPED scripts/genksyms/parse.tab.c
|   HOSTCC  scripts/genksyms/lex.lex.o
|   CC      kernel/bounds.s
| /bin/sh: 1: arm-poky-linux-gnueabi-gcc: not found

当我尝试使用下面的命令建立时间也失败了。

When i try to build using below command that time also it failed.

# bitbake linux-yocto-chipsee -c build

ERROR: Multiple .bb files are due to be built which each provide virtual/kernel (/home/ankur/yocto_daisy/poky/meta-ybdevelop/recipes-example/linux/linux-yocto-chipsee_3.14.bb /home/ankur/yocto_daisy/poky/meta/recipes-kernel/linux/linux-yocto_3.14.bb).
 This usually means one provides something the other doesn't and should.
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
ERROR: Function failed: do_compile (log file is located at /home/ankur/yocto_daisy/poky/build_fresh/tmp/work/beaglebone-poky-linux-gnueabi/linux-yocto-chipsee/3.14+gitAUTOINC+76e10d158e-r1/temp/log.do_compile.30878)
ERROR: Logfile of failure stored in: /home/ankur/yocto_daisy/poky/build_fresh/tmp/work/beaglebone-poky-linux-gnueabi/linux-yocto-chipsee/3.14+gitAUTOINC+76e10d158e-r1/temp/log.do_compile.30878

用于linux的Bitbake图层显示以下输出

Bitbake layers for linux shows below output

只需FYI:

# bitbake-layers show-recipes 'linux*'

Parsing recipes..done.
=== Available recipes matching linux*: ===
linux-dummy:
  meta                 1.0
linux-firmware:
  meta                 1:0.0+gitAUTOINC+600caefd83
linux-libc-headers:
  meta                 3.14
linux-yocto:
  meta                 3.14.4+gitAUTOINC+183622e809_0143c6ebb4
  meta                 3.10 (skipped)
  meta                 3.4 (skipped)
linux-yocto-chipsee:
  meta-ybdevelop       3.14+gitAUTOINC+76e10d158e
linux-yocto-dev:
  meta                 unknown (skipped)
linux-yocto-rt:
  meta                 3.10 (skipped)
  meta                 3.14 (skipped)
  meta                 3.4 (skipped)
linux-yocto-tiny:
  meta                 3.10 (skipped)
  meta                 3.14 (skipped)
  meta                 3.4 (skipped)
linuxdoc-tools-native:
  meta                 0.9.69
linuxptp:
  meta-oe              1.4

任何帮助/指针/提示/建议来编译这个?

Any help/pointer/hint/suggestions to compile this ?

谢谢,

问候,
Ankur

Regards, Ankur

推荐答案

很久以前,我下载了Yocto_daisy(1.6)工具链,并将其安装在我的电脑中。并编译了Linux外部的Yocto构建。以下是步骤。

我按照以下步骤在我的虚拟机中安装了ubuntu。

Well for time being i downloaded the Yocto_daisy(1.6) toolchain and installed it in my PC. And compiled the Linux external to Yocto build. Here are steps.
I followed below steps in my virtualbox installed ubuntu.


  1. 在Yocto_daisy构建核心-image-sato,使用以下命令,

  1. in Yocto_daisy build core-image-sato, using following command,

bitbake core-image-sato

bitbake core-image-sato

准备微带根文件系统的SD卡,SPL& U-Boot,uImage,dtb,uEnv.txt。

Prepare micro SD card with rootfile system, SPL & U-Boot, uImage, dtb, uEnv.txt.

使用以下命令克隆beaglebone黑色Linux

Clone beaglebone black Linux using following command

git clone --depth = 1 https://github.com/beagleboard/linux

git clone --depth=1 https://github.com/beagleboard/linux

从以下链接下载yocto-1.6(雏菊)工具链。

Download yocto-1.6(daisy) toolchain from following link.

http://downloads.yoctoproject.org/releases/yocto/yocto-1.6/toolchain/

根据您的机器类型从i686或x86_64下载

我下载了以下的太多。

http://downloads.yoctoproject。 org / releases / yocto / yocto-1.6 / toolchain / i686 / poky-eglibc-i686-core-image-sato-armv7a-vfp-neon-toolchain-1.6.sh

通过运行downloa安装工具链d工具链脚本。默认情况下,它安装到opt目录中,我将其安装在默认路径中。

Install toolchain by running download toolchain script. By default it installs into opt directory, I installed it in default path.

终端遍历到上述下载的Linux目录。并通过运行以下命令设置工具链环境:

In terminal traverse to the above downloaded Linux directory. and set toolchain environment by running following command,

source /opt/poky/1.6/environment-setup-armv7a-vfp-neon-poky-linux-gnueabi

source /opt/poky/1.6/environment-setup-armv7a-vfp-neon-poky-linux-gnueabi

现在使用以下命令配置内核,

Now configure kernel using following command,

make bb.org_defconfig

make bb.org_defconfig


  1. 然后使用以下命令构建内核

  1. and then build kernel using following command

make uImage LOADADDR = 0x80008000 -j4

make uImage LOADADDR=0x80008000 -j4

现在我们将使用以下命令将模块安装到本地目录中,

now we shall install the modules into local directory using following commands,

mkdir bbb_modules

export INSTALL_MOD_PATH = / home / ankur / linux / bbb_modules /

make modules_install

mkdir bbb_modules
export INSTALL_MOD_PATH=/home/ankur/linux/bbb_modules/
make modules_install

复制 uImage (from / arch / arm / boot)和 am335x-boneblack-bbb-exp-c .dtb (从/ arch / arm / boot)到micro SD卡的BOOT分区。

when kernel is built copy uImage(from /arch/arm/boot) and am335x-boneblack-bbb-exp-c.dtb(from /arch/arm/boot) to the BOOT partition of the micro SD card.

对于FYI,我的uEnv.txt看起来像这样

For FYI my uEnv.txt looks like this

Disable: HDMI
bootargs=console=ttyO1,115200n8 root=/dev/mmcblk0p2 rootfstype=ext4 rw rootwait;
bootcmd=mmc rescan ; mmc dev 0 ; fatload mmc 0 0x80007fc0 uImage ; fatload mmc 0 0x80F80000 am335x-boneblack-bbb-exp-c.dtb ; echo Ankur... ${bootcmd}; bootm 0x80007fc0 - 0x80F80000;
uenvcmd=boot;

11。现在,使用以下命令将模块从本地目录复制到micro SD卡,

11 . Now copy modules from local directory to the micro SD card, using following commands,

cp -a /home/ankur/linux/bbb_modules/lib /media/ankur/ROOT/
sync

12。弹出卡片将其放入Beaglbone Black并打开BBB + LCD电源。

12. Eject the card put it into Beaglbone Black and power on the BBB+LCD.

我还没有得到液晶显示器的Touch校准工作,但一旦我找到它,我会更新答案。

I am yet to get the Touch calibration working for LCD but once I find it i will update the answer.

另一个待处理的事情是将内核构建到Yocto构建系统中。

Another pending thing is build above kernel into Yocto build system. I will update the answer once i am done with that.

希望这可以帮助有同样问题的人。

Hope this helps someone with the same issue.

这篇关于将罗伯特·纳尔逊的Linux内核构建为Yocto(雏菊),用于beaglebone黑色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆