
我目前在 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
目錄。