http://linux-sunxi.org/Cubietruck/AP6210
큐비트럭 관련 사이트 내용중에 보면 커널 3.4에서는 무선랜+블루투스 드라이버가 커널안에 포함되어 있지 않는다고 나온다. 물론 BLUEZ 나 NetManager 를 통하여 무선랜이나 블루투스를 올릴수는 있지만 확인해본결과
현재까지 블루투스 HCI가 올라오는 리눅스는 데비안, 우분투 두가지였다(큐비안은 미확인) 그래서 직접 커널 컴파일을 해보기로 하고 커널 소스에 패치 실행 후 컴파일 실행.
커널컴파일 안내페이지 http://linux-sunxi.org/Linux_Kernel
크로스컴파일 환경이 아니라 로컬에 SD카드를 마운트하여 실행함.
먼저 AP6210 관련 패치 진행
ap6210 패치 디렉토리토리 내에 2개의 패치파일을 커널 소스 디렉토리로 복사
patch -p1 < ap6210_modules.patch
patch -p1 < ap6210_defconfig.patch
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sun7i_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
메뉴 컨피그가 실행되면 큐비 홈페이지에서 해당 OS의 커널 컨피그 파일을 다운로드 받아 로드한다. 그리고
Device Drivers -> Power supply class support -> AXP Power Drives 옵션을 삭제
내용은 아래 참조
이후에 바로 컴파일을 를 실행하면 에러가 발생한다.
에러가 발생한 소스의 문장을 살펴보면 아래와 같이 캐릭터형 배열을 선언한 부분인데
C99 문법을 벗어나진 않은것 같은데? 어쨋든 아래 문법을 수정하여 해결하였다.
커널소스/arch/arm/mach-sun7i/pm/standby/mem_printk.c
168번 줄
214번 줄
369번 줄
char 변수[]={"xxxxxxxxxxx"}; 이 부분을
char *변수={"xxxxxxxxx"}; 이런 형식으로 바꿔준다. 즉 * 를 넣고 [] 를 삭제
아래 Makefile에서 해당 옵션을 삭제(루트 최적화라는데 gcc 4.8에서만 지원하는듯)
./drivers/net/wireless/ap6210/Makefile : fno-aggressive-loop-optimizations
make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage modules
NAND에서 부팅할 이미지는
https://romanrm.net/a10/cross-compile-kernel 참조
NAND 용 커널 컴파일 시 gcc-4.7-plugin-dev-arm-linux-gnueabifh 를 설치해줘야 arm-linux-gnueabihf-objcopy 유틸리티가 설치됨.
그리고 /usr/bin/arm-linux-gnueabihfobjcopy를 소프트 링크로 생성해야한다. (-문자 삭제한것..)
커널 패키지 생성시 objcopy 옵션을 주면 될꺼같은데 귀찮아서 그냥 소프트링크로 대체함.
그리고 커널컴파일을 터미널에서 직접 실핼할 경우 문자 설정을 영문으로 해줘야한다. 안그러면 에러메시지가 뭔지 모른다.....
dpkg-recofnig locales 실행 후 en.US ko.KR 확인 후 디폴트 언어를 en.US 로 설정함..
해당 터미널은 exit 이후에 언어 설정이 반영되니 exit 후에 재로그인 하고 컴파일 실행.
export ARCH=arm export DEB_HOST_ARCH=armhf export CONCURRENCY_LEVEL=`grep -m1 cpu\ cores /proc/cpuinfo | cut -d : -f 2` fakeroot make-kpkg --arch arm --cross-compile arm-linux-gnueabihf- --initrd --append-to-version=-custom1 kernel_image kernel_headers make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- EXTRAVERSION=-custom1 uImage cp arch/arm/boot/uImage ../uImage