本文介紹使用Yocto Project Linux內核時(shí)要執行的幾項常見(jiàn)任務(wù)。這些任務(wù)包括為主機開(kāi)發(fā)系統準備內核開(kāi)發(fā),準備層,修補內核,配置內核等。內核開(kāi)發(fā)最好使用devtool而不是通過(guò)傳統的內核工作流方法來(lái)完成,下面會(huì )介紹這兩個(gè)方案的信息。
devtool準備開(kāi)發(fā)BitBake環(huán)境 $ cd ~/poky
$ source oe-init-build-env
local.conf文件:默認情況下,MACHINE變量設置為“qemux86”,如果你在32位模式下為QEMU仿真器構建,則可以正常運行。但是,如果不是,則需要在構建目錄中找到MACHINE的conf/local.conf文件中 正確設置 變量 。 $ cd ~/poky/build
$ bitbake-layers create-layer ../../meta-mylayer
BitBake構建環(huán)境 $ cd ~/poky/build
$ bitbake-layers add-layer ../../meta-mylayer
SDK $ cd ~/poky/build
$ bitbake core-image-minimal -c populate_sdk_ext
SDK $ cd ~/poky/build/tmp/deploy/sdk
$ ./poky-glibc-x86_64-core-image-minimal-i586-toolchain-ext-2.7.1.sh
SDK:必須要打開(kāi)一個(gè)新的終端來(lái)使用新的SDK,不能使用之前使用的BitBake shell。 $ source ~/poky_sdk/environment-setup-i586-poky-linux
devtool在剛剛為SDK設置并初始化的新終端中構建初始鏡像: $ devtool build-image
Layerconf目錄保存配置文件,recipes-kernel目錄保存追加文件和最終補丁文件。 $ cd $HOME
$ mkdir meta-mylayer
$ mkdir meta-mylayer/conf
$ mkdir meta-mylayer/recipes-kernel
$ mkdir meta-mylayer/recipes-kernel/linux
$ mkdir meta-mylayer/recipes-kernel/linux/linux-yocto
meta-mylayer/conf目錄,創(chuàng )建layer.conf文件: # We have a conf and classes directory, add to BBPATH
BBPATH .= ":${LAYERDIR}"
# We have recipes-* directories, add to BBFILES
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb ${LAYERDIR}/recipes-*/*/*.bbappend"
BBFILE_COLLECTIONS += "mylayer"
BBFILE_PATTERN_mylayer = "^${LAYERDIR}/"
BBFILE_PRIORITY_mylayer = "5"
meta-mylayer/recipes-kernel/linux目錄并創(chuàng )建內核的附加文件。本例使用linux-yocto-4.12內核。因此,append文件的名稱(chēng)為linux-yocto_4.12.bbappend: FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI_append += "file://patch-file-one"
SRC_URI_append += "file://patch-file-two"
SRC_URI_append += "file://patch-file-three"
devtool開(kāi)發(fā)內核下面這個(gè)過(guò)程中的步驟展示了如何使用可擴展SDK和devtool對內核進(jìn)行打補丁。
devtool命令下載內核代碼: $ source ~/poky_sdk/environment-setup-i586-poky-linux
$ devtool modify linux-yocto
$ cd ~/poky_sdk/workspace/sources/linux-yocto
# Edit the init/calibrate.c file
$ devtool build linux-yocto
$ cd ~
$ devtool build-image core-image-minimal
$ runqemu qemux86
# dmesg | less
$ cd ~/poky_sdk/workspace/sources/linux-yocto
$ git status
$ git add init/calibrate.c
$ git commit -m "calibrate: Add printk example"
$ devtool finish linux-yocto ~/meta-mylayer
$ cd ~/poky/build
$ bitbake core-image-minimal
$ cd poky/build/tmp/work/qemux86-poky-linux/linux-yocto/4.12.12+gitAUTOINC+eda4d18...
...967-r0/linux-qemux86-standard-build/source
# Edit the init/calibrate.c file
$ cd poky/build/tmp/work/qemux86-poky-linux/linux-yocto/4.12.12+gitAUTOINC+eda4d18...
...967-r0/linux-qemux86-standard-build/
SDK來(lái)構建開(kāi)發(fā)內核: $ source ~/poky_sdk/environment-setup-i586-poky-linux
$ make menuconfig
$ make
$ cd poky/build/tmp/work/qemux86-poky-linux/linux-yocto/4.12.12+gitAUTOINC+eda4d18...
...967-r0/linux-qemux86-standard-build/source
$ git status
$ git add init/calibrate.c
$ git commit -m "calibrate: Add printk example"
聯(lián)系客服