repo 설치
https://ahyuo79.blogspot.com/search/label/SCM-Repo
$ vi .bash_profile or .bashrc // 매번 export로 설정하기 귀찮아서 직접설정
ARCH=arm
CROSS_COMPILE=arm-none-eabi-
2. Build Android
Android Source Build 와 fastboot를 이용하여 Image 굽기
download site
http://dn.odroid.com/
$ repo init -u https://github.com/hardkernel/android.git -b 4412_4.4.4_master Your Name [xxxx]: // 이름 확인 Your Email [xxxxx]: // E-Mail 확인 Your identity is: xxxxxxxxxxxxx // 이름과 E-Mail 확인 is this correct [y/N]? y repo has been initialized in /home/xxxxxxx // 초기화 된후 .repo 생성 $ repo sync -j 16 $ repo start 4412_4.4.4_master --all
2.1 Setting 및 Build
$ cd android $ vi device/hardkernel/odroidx2/BoardConfig.mk // 최신소스 수정필요없음 (아래항목없음) BOARD_USES_EMMC = true -> Use eMMC BOARD_USES_EMMC = false -> Use SD Card $ chmod u+x ./build_android.sh $ ./build_android.sh odroidx2 // Build
Ref.
http://dev.odroid.com/projects/howtobuild4
2.2 Fastboot Flash Image
- Host 에서 Android Flash 방법
fastboot를 이용하여 flash 진행
https://blog.dasomoli.org/381/
Android Partition Table
#fastboot flash system system.img //fastboot flash partition 이름 file 이름
#fastboot flash userdata userdata.img
#fastboot flash cache cache.img
#fastboot reboot
Google Fastboot 사용법
https://source.android.com/setup/build/runninghttps://blog.dasomoli.org/381/
Android Partition Table
https://android.stackexchange.com/questions/5232/how-can-i-view-the-android-internal-partition-table
2. Download & Build Linux Kernel
ODROID 의 Linux Kernel Download 및 Build 후 Image write
2.1 Flash Image
3. Download & Build Uboot
ODROID 의 Uboot Download 및 Build 후 Image write
4. Build SD Image
SD Image의 구성은 두 부분으로 구성
- 참고사항 A
$ ls device/hardkernel/odroidx2/BoardConfig.mk // Board 관련된 정보 확인. $ ls device/hardkernel/odroidx2/drivers/ // X2 kernel module 위치확인
- 참고사항 B
============================================ Checking build tools versions... ************************************************************ You are attempting to build with an unsupported JDK. You use OpenJDK but only Sun/Oracle JDK is supported. Please follow the machine setup instructions at https://source.android.com/source/download.html ************************************************************
2. Download & Build Linux Kernel
ODROID 의 Linux Kernel Download 및 Build 후 Image write
$ git clone https://github.com/hardkernel/linux.git -b odroid-3.0.y-android
$ cd linux
$ ls arch/arm/configs/odroidx2* // 확인후 설정
$ make odroidx2_android_442_defconfig
$ make zImage or make // make는 moudles도 함께, $ ls arch/arm/boot/ $ make modules -j4 $ make modules_install INSTALL_MOD_PATH=~/tmp // 임시설정, 위의 Android에 복사
2.1 Flash Image
# fastboot flash kernel arch/arm/boot/zIamge # fastboot reboot
3. Download & Build Uboot
ODROID 의 Uboot Download 및 Build 후 Image write
$ git clone https://github.com/hardkernel/u-boot.git $ cd u-boot $ ls board/samsung/smdk4212/ // 소스 확인 $ make distclean $ make smdk4412_config $ make ( 위 make 시 아래 파일 생성 ./mkbl2 u-boot.bin bl2.bin 14336 (bl2.bin n파일 생성) $ cd sd_fuse // 난 아래와 같이 사용. $ ./sd_fusing_4412.sh /dev/sdb // Flash Image (/dev/sdb는 현재 SD카드가 마운트되어 있는 장치파일로 지정 : sudo fdisk -l 명령어로 확인가능) $ sync
4. Build SD Image
SD Image의 구성은 두 부분으로 구성
- 0M~100M의 Booting image
- 100M~500M FAT32로 구성된 kernel image 와 andoid filesystem
현재 GPT구성이 아니며, FDISK 기반으로 구성 (MBR)
4.1 Main Image 구성
- dd 와 fdisk 기반으로 Main Image 구성
$ dd if=/dev/zero of=my_sd_self_installer.img bs=1k count=500k // 500M image 설정 $ fdisk ./my_sd_self_installer.img // fdisk를 사용하여 아래와 같이 설정 Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): Using default value 1 First sector (2048-1023999, default 2048): 204800 Last sector, +sectors or +size{K,M,G} (204800-1023999, default 1023999): $ fdisk -l ./my_sd_self_installer.img Units = sectors of 1 * 512 = 512 bytes Device Boot Start End Blocks Id System ./my_sd_self_installer.img1 204800 1023999 409600 83 Linux // 204800 x 512 = 104857600 약 100M 부터설정
4.2 Make Boot Image 구성
uboot Image 및 기타 bootloader를 삽입
$ sudo losetup -o0 /dev/loop0 ./my_sd_self_installer.img //attach device offset=0 $ cd u-boot/sd_fuse/ $ sd_fusing.sh /dev/loop0 $ sudo losetup -d /dev/loop0 //detach device
4.3 Make FAT32 Image
100M 이후 부터는 FAT32 Filesystem 생성
$ sudo losetup -o104857600 /dev/loop0 ./my_sd_self_installer.img //attach device offset= 204800 x 512 = 104857600 $ sudo mkdosfs -F32 /dev/loop0 $ sudo losetup -d /dev/loop0 //detach device
4.4 Build FAT32 Image
기존에 존재하던 Image 및 boot.scr 들을 FAT32 Image에 mount 하여 복사한다.
$ sudo mount -o loop,offset=104857600 ./my_sd_self_installer.img ~/tmp //mount offset= 204800 x 512 = 104857600
$ sudo cp -a ~/file/* ~/tmp/
$ umount ~/tmp
ODROID Build 관련내용
http://odroid.com/dokuwiki/doku.php?id=en:androidplatformbuildguideforexynos4412