在devshell中重新编译Yocto的内核
为了把从一个 bitbake image-name 到完全刷写到板子上的时间缩短,我想只通过重新编译内核,并用脚本把Image/dtbos/modules复制到板子上
目前我使用RaspiOS发行版的内核来实现这件事,并写了两个脚本来正好完成这一操作
# For building the kernel
set -e
# build the sources and Device Tree files:
make -j12 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711mahle_defconfig
# build a 64-bit kernel
make -j12 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs
set -e
ROOTFS_PATH=path to mounted ROOTFS
BOOTFS_PATH=path to mounted BOOTFS
# copy modules
echo "Copying kernel modules..."
sudo env PATH=$PATH make -j12 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=$ROOTFS_PATH modules_install
# copy kernel image
echo "Copying kernel image..."
sudo cp arch/arm64/boot/Image $BOOTFS_PATH/$KERNEL.img
# copy device tree blobs
echo "Copying device tree blobs..."
sudo cp arch/arm64/boot/dts/broadcom/*.dtb $BOOTFS_PATH
# copy readme
sudo cp arch/arm64/boot/dts/overlays/README $BOOTFS_PATH/overlays
# copy overlays
echo "Copying device tree overlays..."
sudo cp arch/arm64/boot/dts/overlays/*.dtb* $BOOTFS_PATH/overlays
echo "Done"
是否也可以在bitbake linux-raspberypi -c devshell中完成同样的操作?
我看到在devshell环境中有所有需要的变量,但缺少的是如何在这些变量的基础上准确调用make,因为我想复制Yocto在 do_compile和 do_compile_kernel_modules任务中所做的工作。
最终目标是每次你对内核做出改动时, Yocto会从头重新构建;而我只想重新编译改变的部分,就像我对RaspiOS内核所做的那样。
注:执行 make dtbs 似乎可行
解决方案
从devshell出来,你可以运行 ../temp/run.do_compile,这将准确地复现do_compile实际在做的事情。你甚至不必处于devshell就能运行这个脚本,可以在任何地方调用。类似地,你还有一个 run.do_compile_kernel_modules 脚本。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。