2017-03-20 1 views
2

나는이 https://github.com/volatilityfoundation/volatility/wiki/Android#initialize-the-android-build-environment과 유사한 것을 달성하려고합니다. 다음은 내가 사용하는 환경입니다.크로스 컴파일 커널

우분투 14.04, 안드로이드 스튜디오 2.3, 안드로이드 NDK r14, 에뮬레이터 -api22.

나는 단계에서 어려움에 직면하고있다 커널 컴파일 크로스. 금붕어 커널을 목표로 삼고 있습니다. 3.10 다음 단계는 제가 따르는 단계입니다. 어떤 도움이라도 대단히 감사 할 것입니다.

방법 1 :

export ARCH=arm 
export SUBARCH=arm 
export CROSS_COMPILE=~/android-ndk/android-ndk-r14/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi- 

우리가

make goldfish_armv7_defconfig 

로 다음 명령을 실행해야하지만 것을 건의 튜토리얼 내가 디렉토리를 "을 선택하면 안드로이드 소스/아치/팔/configs/"거기에 그런 설정 파일이 없습니다.

: 우리는 복사와 커널 2.6에서 파일을 붙여, 그래서 같은 일을했고, 그 후

CONFIG_MODULES=y 
CONFIG_MODULES_UNLOAD=y 
CONFIG_MODULES_FORCE_UNLOAD=y 

그러나 학습과 오류

$ make 

결과를 추가 만 할 수있는 제안 일부 자습서

arch/arm/mm/mmu.c: In function 'build_mem_type_table': 
arch/arm/mm/mmu.c:470:18: error: 'L_PTE_MT_VECTORS' undeclared (first use in this function) 
    vecs_pgprot |= L_PTE_MT_VECTORS; 
       ^
arch/arm/mm/mmu.c:470:18: note: each undeclared identifier is reported only once for each function it appears in 
arch/arm/mm/mmu.c: At top level: 
arch/arm/mm/mmu.c:637:23: warning: 'early_pte_alloc_and_install' defined but not used [-Wunused-function] 
static pte_t * __init early_pte_alloc_and_install(pmd_t *pmd, 
        ^
make[1]: *** [arch/arm/mm/mmu.o] Error 1 
make: *** [arch/arm/mm] Error 

Methos는 2 :

그리고 모든 것이 NG는 방법 1과 동일, 난 그냥 하나의 변수를

export ARCH=arm64 

을 변경 그리고

make ranchu_deconfig 

실행하지만 같은 오류가 발생했습니다.

방법 3 : 성공적으로

$ export ARCH=arm 
$ export SUBARCH=arm 
$ export CROSS_COMPILE=~/android-ndk/android-ndk-r14/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi- 
$ make ranchu_defconfig 
$ vim .config # added this to .config file 

CONFIG_MODULES=y 
CONFIG_MODULES_UNLOAD=y 
CONFIG_MODULES_FORCE_UNLOAD=y 

$ make 

이 명령을 실행 : zImage found. 나는 "너무 오래된 램 디스크를 실행하려면 리눅스 커널"의 오류를 얻고있다

[email protected]:~/Android/Sdk/tools# ./emulator -avd Nexus5x22 -kernel ~/android-source2/android-source/arch/arm/boot/zImage -show-kernel –verbose 

아래의 명령을 사용하여 에뮬레이터를 실행하면

그러나 : ram disk error

+0

당신의'PATH'에는'$ HOME/android-ndk/android-ndk-r14/toolchains/arm-linux-androideabi-4.9/prebuilt/linux- x86_64/bin'. (이것은 단지 첫 걸음이다) – 0andriy

답변

0

구글의 안드로이드 커널은 엉망 . 그들은 patch을 이식 할 때 L_PTE_MT_VECTORS을 정의하는 것을 잊었습니다.

해결 방법은 here입니다.