2017-08-08 107 views
1

我喜歡爲我的RPI2 +自定義板刪除一些未使用的驅動程序。對於我創建通過自己的配置:如何在yocto中爲樹莓派使用自己的內核配置?

bitbake linux-raspberrypi -c menuconfig 

和新的內核預設保存到文件defconfig

之後,我爲linux-raspberryp配方創建了一個附加文件。

所以我創建的文件

linux-raspberrypi%.bbappend 

,並填寫它:

FILESEXTRAPATHS_prepend := "${THISDIR}/linux-raspberrypi:" 

SRC_URI += "file://defconfig" 

PACKAGE_ARCH = "raspberrypi2" 

我把defconfig文件:

<meta-mylayer>/recipes-kernel/linux/linux-raspberrypi/raspberrypi2/defconfig 

當通過重新編譯內核

bitbake linux-raspberrypi -c clean 
bitbake linux-raspberrypi 

採用標準RPI2配置。

任何想法如何克服這個問題? 我正在研究meta-raspberrypi和yocto的「實際」pyro分支。

回答

3

不幸的是,最簡單的方法可能是修補內核源代碼......或將您的defconfig複製到內核樹中。

meta-raspberrypi層確實在他們的內核的食譜一些不幸的事情,即使這已經成爲時間更好,他們還沒有真的很好...

如果你看一看recipes-kernel/linux/linux-raspberrypi.inc,以下行說明了問題:

KERNEL_DEFCONFIG_raspberrypi2 ?= "bcm2709_defconfig" 

do_kernel_configme_prepend() { 
    install -m 0644 ${S}/arch/${ARCH}/configs/${KERNEL_DEFCONFIG} ${WORKDIR}/defconfig || die "No default configuration for ${MACHINE}/${KERNEL_DEFCONFIG} available." 
} 

因此,他們正在複製在樹defconfig到${WORKDIR}/defconfig,從而覆蓋自己defconfig。

你在你.bbappend,你可以嘗試添加:

do_kernel_configme_prepend() { 
    install -m 0644 ${WORKDIR}/defconfig ${S}/arch/${ARCH}/configs/${KERNEL_DEFCONFIG} || die "No default configuration for ${MACHINE}/${KERNEL_DEFCONFIG} available." 
} 

因此,第一個內核中的樹一個用自己的defconfig覆蓋。

1

請看看如何使用devtool修改源代碼,傑思羅: http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#using-devtool-in-your-workflow

我會由在它使用Git倉庫叉開始; http://git.yoctoproject.org/cgit/cgit.cgi/meta-raspberrypi/tree/recipes-kernel/linux/linux-raspberrypi_4.9.bb

在Yocto中使用devtool;你的編譯目錄中的 :創建一個my-linux-raspberry文件夾;

mkdir linux-raspberry-test 
devtool modify -x linux-raspberry ./my-linux-raspberry 

這將把源代碼解壓縮到my-linux-raspberry供您修改;它還在那裏創建了git倉庫;

然後,修改my-linux-raspberry中的代碼;要測試構建,請運行devtool build linux-raspberry;一旦你滿意了,把這個git倉庫添加到你的fork中;

git add . 
git commit -m "my-linux-raspberry" 
devtool update-recipe linux-raspberry 

可選:運行devtool reset linux-raspberry刪除bbappend文件;