我目前在 BeagleBoard-xM(ARM 架构)上运行 Angstrom Linux 2.6.32。我可以将 Linux 内核从 2.6.32 升级到 3.0.7 吗?升级的难度是多少?
编辑#1:
BB-xM 运行的映像是由水仙花与引导加载程序文件(x-load/u-boot/脚本)。我最近从 kernel.org 下载了内核源代码 2.6.32.61 并将它们复制到/usr/src
BB-xM 上。完成配置 ( make menuconfig
) 后,我直接构建 ( make
) 内核并将 ( ) 内核安装make install
到 BB-xM(本机工具链)。
编辑#2:
我知道还必须注意引导加载程序,以防必须手动配置它才能引导新内核。在最初的 Angstrom 图像中,boot
目录包含:
u-boot-scripts
MLO-beagleboard-1.5.0+r24+gitr04b1732220078d47c18a84cbafc52e45db71f13d-r24
u-boot-beagleboard-2011.02+r75+gitrc7977858dcf1f656cbe91ea0dc3cb9139c6a8cc8-r75
uImage-2.6.32
配置并安装内核2.6.32.61后,boot
目录包含:
root@beagleboard:/boot# ls
MLO
MLO-beagleboard-1.5.0+r24+gitr04b1732220078d47c18a84cbafc52e45db71f13d-r24
Module.symvers-2.6.32
System.map-2.6.32
System.map-2.6.32.61
System.map-2.6.32.61.old
config-2.6.32
u-boot-beagleboard-2011.02+r75+gitrc7977858dcf1f656cbe91ea0dc3cb9139c6a8cc8-r75.bin
u-boot-scripts
u-boot.bin
uImage
uImage-2.6.32
vmlinux-2.6.32.61
vmlinux-2.6.32.61.old
我没有配置引导加载程序,BB-xM 引导新配置的内核。
答案1
我不是 beagle board 用户,所以您要做的第一件事就是确保您有合适的内核源代码。原始源确实支持各种 Cortex-A8 (ARMv7) 芯片,包括“OMAP3 BeagleBoard”,但我不能确定如果没有进一步的补丁,这是否足够好。
3.x 内核应该向后兼容面向 2.6 的用户区,因此应该不会有任何问题,除非 Angstrom 以某种重要方式依赖于其自己的补丁实现的功能(在这种情况下,您需要应用这些补丁)。对于主流发行版来说,这不是问题——尽管他们确实定制了内核补丁并建议您使用他们的补丁源,但我在使用普通树时从未遇到过问题——但我认为 Angstrom 有点专业化。如果 Angstrom 已经有 3.0.7 源代码,那么您就已经准备好了。如果没有,尝试使用 vanilla kernel.org 源代码可能不会有什么坏处(如果它可以正常启动,那么从那里开始可能会没问题)。
我假设您已经有一个适用于 BeagleBoard 的交叉编译器工具链。如果没有,您将需要一个(我也可以提供一些关于此的提示),因为直接在 BeagleBoard 上需要几个小时(显然在树莓派上需要 5 个多小时),并且可能会有一些尝试和错误。然而,在现代多核多 Ghz 机器上,该时间不会超过 10 分钟,因此您不必每次都为配置感到紧张。交叉编译内核相对简单,因为它没有任何尚未属于工具链的构建依赖项。
有关配置和编译内核的一些细节,看这里。按照步骤#5中关于不使用的提示进行操作make install
(即,自己适当地将内核安装到BeagleBoard;我不知道它是否使用普通的引导加载程序等),并INSTALL_MOD_PATH
在运行之前设置为交叉工具链的sysroot make modules_install
,例如
export INSTALL_MOD_PATH=/x-tool/sysroot
make modules_install
这将留下一个适当的模块目录,/x-tool/sysroot/lib/modules
您可以在其中直接复制到 BeagleBoard 的/lib/modules
目录。