我正在为SBC Pine64开发一个bsp层,我的图像已经成功生成但是我在启动init时遇到“致命:内核太旧” 来自busybox。我已经检查了我的busybox二进制文件,它正在为内核3.14.0编译。
我的内核版本是3.10,我使用过Linaro 5.3工具链。我试过添加:OLDEST_KERNEL =“3.10.0”我也试过使用Linaro 4.9但是我 仍然得到同样的错误。我正在使用yocto Krogoth并生成core-image-minial。请在下面看一下启动日志中错误的片段:
[13.068932] EXT4-fs (mmcblk0p2): couldn't mount as ext3 due to feature incompatibilities
[13.086717] EXT4-fs (mmcblk0p2): couldn't mount as ext2 due to feature incompatibilities
[13.112988] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[13.127040] VFS: Mounted root (ext4 filesystem) readonly on device 179:2.
[13.143393] devtmpfs: mounted
[13.151972] Freeing unused kernel memory: 520K (ffffffc0009e4000 - ffffffc000a66000)
FATAL: kernel too old
[13.198566] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00
[13.198566]
[13.218884] CPU: 2 PID: 1 Comm: init Not tainted 3.10.102-pine64 #1
[13.230876] Call trace:
如何配置yocto为内核3.10.0编译linaro eglibc?
THX, 蒙特兹
答案 0 :(得分:3)
如果要覆盖非“软分配”的现有变量,也就是说不使用?= 语法,而是使用 = 语法,您需要使用 OVERRIDES 中的一个变量作为更改值的一部分。您可以看到覆盖如何工作,就像我们在conf / bitbake.conf中所做的那样:
##################################################################
# Kernel info.
##################################################################
OLDEST_KERNEL = "3.2.0"
OLDEST_KERNEL_aarch64 = "3.14"
OLDEST_KERNEL_nios2 = "3.19"
已在您的替换列表中找到 aarch64 。幸运的是,该列表中还有其他值,在评估变量时, OVERRIDES 列表中的变量优先。所以在你的local.conf中你可以这样做:
OLDEST_KERNEL_forcevariable = "3.10"
然后确认它已生效:
$ bitbake -e busybox | grep -E ^OLDEST_KERNEL=
OLDEST_KERNEL="3.10"