将Robert Nelson的Linux内核构build为Yoago(daisy),用于beaglebone black

我试图从官方存储库https://github.com/beagleboard/linux为beaglebone black构buildLinux

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

以下是配方文件的内容。

文件名称 :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
文件path :/ home / ankur / yocto_daisy / poky / meta-ybdevelop / recipes-example / linux

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

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

通过上面的configuration,我可以获取并打开menuconfig以获取linux内核,我使用的命令如下,

 # bitbake linux-yocto-chipsee -c menuconfig 

但是当我尝试使用下面的命令编译Linux时,它会给出错误,

 # bitbake linux-yocto-chipsee -c compile 

获得与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 

当我试图build立使用下面的命令,那时候也失败了。

 # 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 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 

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

谢谢,

问候,Ankur

那么暂时我下载了Yocto_daisy(1.6)工具链,并将其安装在我的电脑中。 并编译了Yocto build之外的Linux。 这里是步骤。
我遵循我的virtualbox安装Ubuntu下面的步骤。

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

    bitbake core-image-sato

  2. 使用rootfile系统,SPL&U-Boot,uImage,dtb,uEnv.txt准备micro SD卡。

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

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

  4. 从下面的链接下载yocto-1.6(菊花)工具链。

    http://downloads.yoctoproject.org/releases/yocto/yocto-1.6/toolchain/
    根据您的机器类型从i686或x86_64下载
    我下载toochain。
    http://downloads.yoctoproject.org/releases/yocto/yocto-1.6/toolchain/i686/poky-eglibc-i686-core-image-sato-armv7a-vfp-neon-toolchain-1.6.sh

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

  6. 在终端遍历上面下载的Linux目录。 通过运行以下命令设置工具链环境,

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

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

make bb.org_defconfig

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

    使uImage LOADADDR = 0x80008000 -j4

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

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

  3. 当内核构建时,将uImage (from / arch / arm / boot)和am335x-boneblack-bbb-exp-c.dtb (from / arch / arm / boot) am335x-boneblack-bbb-exp-c.dtb到micro SD卡的BOOT分区。

为FYI我的uEnv.txt看起来像这样

 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卡,

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

12.将卡放入Beaglbone Black并打开BBB + LCD。

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

另一个待定的事情是建立在Yocto构建系统之上的内核。 一旦我完成了,我会更新答案。

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