mskim@ubuntu:~$ sudo update-alternatives --install /usr/bin/make make /usr/bin/make-4.1 1
update-alternatives: using /usr/bin/make-4.1 to provide /usr/bin/make (make) in auto mode
mskim@ubuntu:~$ sudo update-alternatives --install /usr/bin/make make /usr/local/bin/make-3.81 2
update-alternatives: using /usr/local/bin/make-3.81 to provide /usr/bin/make (make) in auto mode
이제 사용하고 싶은 버전을 update-alternatives --config로 변경한 다음 사용하면 된다.
드디어 컴파일을 다시 시작 했다.
헌데...
또 무엇인 문제인지... 어렵군 어려워...
그래서 안드로이드 홈페이지를 방문하여 Android 2.3.x(Gingerbread)에서 필요로 하는 Ubuntu version은 12.04(Precise)로 확인 할 수 있다.
- sudo chmod 755 /media/rootfs/ : 파일의 권한을 755로 하겠다는 의미로 숫자가 각각 의미하는 것은 백/십/일의 자리는 각각 2진수 3자리로 xxx(x는 1 or 0)으로 구성이 되며, 2진수의 가장 왼쪽 자리는 읽기(Reading)로 이것이 1이 되면 10진수로 4가 되며, 2진수의 중간 자리는 쓰기(Writing)로 이것이 1이 되면 10진수로 2가 되며, 2진수의 마지막 자리는 실행(Executing)으로 이것이 1이 되면 10진수로 1이 된다. 따라서 파일 권한을 755로 하는 것에서 7이 의미하는 것은 쓰기/읽기/실행의 권한을 모두 준다는 의미이며, 5의 의미는 읽기/실행에 대해서만 권한을 준다는 것이다. 또한 755에서 백/십/일의 자리가 각각 의미하는 것은 소유자권한/그룹사용자권한/기타사용자권한을 의미한다. 결과적으로 755의 의미는 소유자권한은 읽기/쓰기/실행의 모든 권한을 부여하며, 그룹사용자권한/기타사용자권한은 읽기/실행의 권한을 부여한다는 것이다.
2. 부트이미지 이름설정
~/ (루트폴더에서)
sudo sh -c"echo 'uname_r=${kernel_version}' >> /media/rootfs/boot/uEnv.txt"
make ARCH=arm CROSS_COMPILE=${CC} distclean #1. Clean하는 작업
make ARCH=arm CROSS_COMPILE=${CC} am335x_evm_defconfig #2. Configuration 작업
make ARCH=arm CROSS_COMPILE=${CC} #3. 컴파일 작업
위의 make 명령어를 #1 ~ #3 단계까지 순차적으로 다음과 같이 입력을 한다.
#1. Clean 하는 작업
#2. Configuration 작업
#3. 컴파일 작업
중략...
컴파일까지 모두 완료가 되었다면, u-boot 폴더에 MLO와 u-boot.img 가 생성된다.
각각을 first 부트로더 second 부트로더라고 하는데, 그 이유로는 초기화 안된 초기 하드웨어의 가용할 수 있는 rom용량이 작아서 first부트로더가 second 부트로더를 올릴수 있게 최소한의 하드웨어 초기화를 하고, 초기화가 된 ram에 second 부트로더를 올려 나머지 초기화를 진행하기 때문이다.
2. Linux Kernel
여기에서는 kernel, module, device tree binaries를 빌드하고 deploy 폴더에 카피하는 일을 할 것이다.