How do I
From Yocto Project
Jump to navigationJump to search
Q: How do I put yocto on a hard drive?
A: bitbake core-image-sato or core-image-sato-sdk
- have a suitable partition on the disk - say partition #3
- this partition will show up as sde3 on my host machine and sda3 on the atom
- mkfs.ext3 /dev/sde3
- mount /dev/sde3 /mnt/target
- mount -o loop tmp/deploy/images/core-image-sato-sdk.ext3 /mnt/target-ext3
- cp -a /mnt/target-ext3/* /mnt/target
- grub-install --recheck --root-directory=/mnt/target /dev/sde
If grub install passed, copy the following to /mnt/target/boot/grub/grub.cfg
set default="0" set timeout="30" menuentry 'Yocto SDK' { insmod part_msdos insmod ext2 set root='(hd0,msdos3)' linux /boot/bzImage root=/dev/sda3 }
Thats it - this should boot.
Q: How do I put my recipe into Yocto?
A: Let's use the Hello World example from Section 3.1.2 of the Yocto Project Reference Manual and expand on it.
- In this example, I'll start with a new meta layer named "meta-jfa" in the Yocto Project files directory, which is named "poky". Then, I will add the new recipe and build the image, which is named "core-image-minimal". I will build it using the autotooled package option. Once built, the image will have the “hello” application.
- Create the following directory structure in the ~/poky directory. I'll use my initials to denote the layer and recipe name:
mkdir meta-jfa mkdir meta-jfa/conf mkdir meta-jfa/recipes-jfa mkdir meta-jfa/recipes-jfa/hello
- Next, to make sure the recipe gets searched and located, I'll create the layer.conf file in the meta-jfa/conf directory as follows:
# We have a conf and classes directory, add to BBPATH BBPATH := "${BBPATH}:${LAYERDIR}" # We have a packages directory, add to BBFILES BBFILES := "${BBFILES} ${LAYERDIR}/recipes-*/*/*.bb \ ${LAYERDIR}/recipes-*/*/*.bbappend" BBFILE_COLLECTIONS += "jfa" BBFILE_PATTERN_jfa := "^${LAYERDIR}/" BBFILE_PRIORITY_jfa = "5
- Now I need to put the recipe (.bb) file into the right directory. So, I will put the file hello_2.7.bb into the meta-jfa/recipes-jfa/hello directory. I picked version 2.7 of the hello program by going to the gnu site for the application (ftp://ftp.gnu.org/gnu/hello/) and downloading it to checkout the version I wanted to include. hello-2.7.tar.gz is the most current. I downloaded it locally and expanded it to look at the license information. The hello_2.7.bb file contains the following:
DESCRIPTION = "GNU Helloworld application" SECTION = "examples" LICENSE = "GPLv3+" LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" PR = "r0" SRC_URI = "${GNU_MIRROR}/hello/hello-${PV}.tar.gz" inherit autotools gettext
- Here is some explanation for a few of the recipe statements:
- LIC_FILES_CHKSUM = is required and, using file location defaults, points to the COPYING file that is part of the tarball that is downloaded from the SRC_URI address. The md5= part of the statement is generated by running “md5sum COPYING” against the COPYING file I downloaded to examine.
- ${PV} in the SRC_URI statement is picked up from the part of the recipe file name after the “_”. In this case PV =2.7.
- The recipe is built, so now I can run it:
cd ~/poky source oe-init-build-env build-hello.
- Before I can use BitBake I need to edit two files. Sourcing the oe-init-build-env file above leaves me in the build-hello directory. Before issuing the bitbake command I need to edit the files conf/local.conf and conf/bblayers.conf in that build-hello directory. The bblayers.conf needs to have the one line added to include the layer you created.
# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf # changes incompatibly LCONF_VERSION = "4" BBFILES ?= "" BBLAYERS = " \ /home/jim/poky/meta \ /home/jim/poky/meta-yocto \ /home/jim/poky/meta-jfa \ "
- The conf/local.conf file needs to have the parallel processing lines edited to speed up the baking on multicore systems. I can do that by uncommenting the BB_NUMBER_THREADS and PARALLEL_MAKE variables. Generally, I would set them equal to twice the number of cores used by my host machine. By default, the MACHINE variable is set to qemux86 and for this example is fine. I need to add a line to include the hello package I am building into the image by adding the following line:
POKY_EXTRA_INSTALL += "hello"
- Now I can bake it with this command:
bitbake core-image-minimal
- Once the image is built, I can test it by starting the QEMU emulator:
runqemu qemux86
- Once the emulator comes up, login as root with no password. Then, at the prompt, enter "hello" to run your application.