我可以将 Linux 内核从 2.6.32 升级到 3.0.7 吗?

我可以将 Linux 内核从 2.6.32 升级到 3.0.7 吗?

我目前在 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/srcBB-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目录。

相关内容