저는 현재 BeagleBoard-xM(ARM 아키텍처)에서 Angstrom Linux 2.6.32를 실행하고 있습니다. Linux 커널을 2.6.32에서 3.0.7로 업그레이드할 수 있나요? 업그레이드가 얼마나 어려운가요?
편집 #1:
BB-xM은 다음에 의해 생성된 이미지에서 실행됩니다.수선화부트로더 파일로(x-로드/u-부팅/스크립트). 최근에 kernel.org에서 2.6.32.61용 커널 소스를 다운로드하여 /usr/src
BB-xM에 복사했습니다. 구성( make menuconfig
)을 완료한 후 커널을 직접 빌드( )하고 BB-xM에 make
커널을 설치()했습니다.make install
(네이티브 툴체인).
편집 #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
저는 비글 보드 사용자가 아니므로 가장 먼저 해야 할 일은 적절한 커널 소스 코드가 있는지 확인하는 것입니다. 원본 소스는 "OMAP3 BeagleBoard"를 포함한 다양한 Cortex-A8(ARMv7) 칩을 지원하지만 추가 패치 없이 이것이 충분한지 확실하지 않습니다.
3.x 커널은 2.6을 대상으로 하는 사용자 영역과 역호환되어야 하므로 Angstrom이 자체 패치로 구현된 기능에 중요한 방식으로 의존하지 않는 한(이 경우 해당 패치를 적용해야 함) 문제가 있어서는 안 됩니다. 이것은 주류 배포판에서는 문제가 되지 않습니다. 일반 트리에서는 사용자 정의 커널 패치를 수행하고 해당 패치 소스를 사용하도록 권장하지만 일반 트리에서는 문제가 발생한 적이 없습니다. 하지만 Angstrom은 약간 전문화되어 있다고 생각합니다. Angstrom에 이미 3.0.7 소스 코드가 있으면 모든 준비가 완료된 것입니다. 그렇지 않다면 바닐라 kernel.org 소스를 사용해 보는 것도 나쁘지 않을 것입니다(부팅이 괜찮다면 거기서부터 시작해도 괜찮을 것입니다).
BeagleBoard용 크로스 컴파일러 툴체인이 이미 있다고 가정합니다. 그렇지 않다면 BeagleBoard에서 직접 수행하는 데 몇 시간이 걸리고(물론 Raspberry Pi에서는 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
.