## [컴파일러 설치] --------------------------- * docker/toolchain 디렉토리의 arm-buildroot-linux-gnueabihf-4.9.4.tar.gz 파일을 /opt 디렉토리에 풀어 사용한다. $ cd docker/toolchain/ $ sudo tar zxvf arm-buildroot-linux-gnueabihf-4.9.4.tar.gz -C /opt ## [컴파일을 위한 환경파일] --------------------------- * 환경파일 env-4.9.4.env export WORK_TOP_PATH=$(pwd) export FA_COMPANY=falinux export FA_CHIPSET=imx6s export FA_PRODUCT=prime_oven export BR_TOOLCHAIN_PREFIX=arm-buildroot-linux-gnueabihf export BR_TOOLCHAIN_PATH=/opt/toolchain/${FA_CHIPSET}/${FA_PRODUCT} export CROSS_COMPILE=${BR_TOOLCHAIN_PREFIX}- export ARCH=arm export PATH=${BR_TOOLCHAIN_PATH}/usr/bin:$PATH export WORK_LD_LIBRARY_PATH=${BR_TOOLCHAIN_PATH}/usr/lib * source 유틸리티를 사용하여 환경을 설정한다. $ source env-4.9.4.env ## [부트로더 컴파일] --------------------------- * 부트로더 컴파일을 위해서 gcc-arm-none-eabi 가 필요하다. $ sudo apt-get install -y gcc-arm-none-eabi * 부트로더 디렉토리로 이동한다. $ cd bootloader/u-boot_2015_04 $ cd ../../ $ source env-4.9.4.env # (이미 실행하였다면 하지 않아도 된다) $ cd bootloader/u-boot_2015_04 * u-boot 환경 파일 imx6s_prime_oven_defconfig * 컴파일은 make.sh 를 사용한다. $ ./make.sh -- 필요한 경우 clean ---- $ ./make.sh clean * 컴파일 결과물은 ../output-u-boot_2015_04 에 저장된다. * 빌드가 정상적으로 완료되면 u-boot.imx 파일이 /tftpboot/prime-oven 및 /nfs/prime-oven에 복사된다. ## [커널 컴파일] --------------------------- * 커널 디렉토리로 이동한다. $ cd kernel/linux-imx6_3.14.28 $ cd ../../ $ source env-4.9.4.env # (이미 실행하였다면 하지 않아도 된다) $ cd kernel/linux-imx6_3.14.28 * kernel 환경 파일 arch/arm/configs/imx6s_prime_oven_defconfig * 컴파일은 make.sh 를 사용한다. $ ./make.sh -- 필요한 경우 clean ---- $ ./make.sh clean -- 환경수정이 필요하다면 ---- $ ./make.sh menuconfig * 컴파일 결과물은 ../output-linux-imx6_3.14.28 에 저장된다. * 컴파일이 완료되면 uImage 파일과 imx6s-prime-oven.dtb 파일이 /tftpboot/prime-oven 및 /nfs/prime-oven에 복사된다. ## [RFS, buildroot 컴파일] --------------------------- * buildroot 디렉토리 buildroot 로 이동한다. $ cd buildroot/buildroot-2016.08.1 $ cd ../../ $ source env-4.9.4.env # (이미 실행하였다면 하지 않아도 된다) $ cd buildroot/buildroot-2016.08.1 * 컴파일은 make.sh 를 사용한다. $ ./make.sh * 컴파일을 위한 도움말을 보기 위해서는 아래와 같이 사용한다. $ ./make.sh help [Help] ssh-key : generate ssh key defconfig : reload config toolchain : apply config file for toolchain qt4_gst : apply config file for QT4/Gstreamer qt5_gst : apply config file for QT5/Gstreamer image : generate ramdisk image file clean-target : clean target directory distclean : delete all non-source files (.config) savedefconfig : Save current config to BR2_DEFCONFIG (minimal confi * 환경 수정을 위해 menuconfig 를 사용할때는 아래와 같이 사용한다. $ ./make.sh menuconfig * 환경 파일을 defconfig 에 저장하려면 아래와 같이 사용한다. (함부로 저장하면 안되니 주의할것!!) $ ./make.sh savedefconfig * toolchain을 다시 빌드하고 싶으면 아래와 같이 실행한다. (/opt/toolchain 경로에 쓰기 권한이 있어야함) $ ./make.sh toolchain $ ./make.sh * 환경 파일을 저장하고 싶다면 새로운 환경파일을 만들어 사용하며, 이때는 menuconfig 명령을 통해 해당 파일 이름을 수정하여 사용한다. * 컴파일된 후 파일들은 ../output-buildroot-2016.08.1 디렉토리에 생성된다. * 램디스크 작업을 위해 아래와 같이 실행한다. 생성된 ramdisk-prime_oven-?M.gz 파일은 /tftpboot/prime-oven 및 /nfs/prime-oven에 복사된다. $ ./make.sh image * 기본 파일 시스템(램디스크 이미지)을 컴파일하기 위해서는 아래와 같이 사용한다. $ ./make.sh clean $ ./make.sh defconfig $ ./make.sh $ ./make.sh image * ssh-key를 다시 생성하고 싶으면 아래와 같이 실행한다. $ ./make.sh ssh-key * menuconfig 를 통해 환경을 수정한 이 후 컴파일시 에러가 발생할 경우 clean 명령을 실행한다. $ ./make.sh ...some errors... $ ./make.sh clean $ ./make.sh defconfig $ ./make.sh image ## [파티션] --------------------------- start size desc ---------- ---------- ---------------------------- 0-MB 128-MB raw area 128-MB 128-MB partition#1, ext3 : BOOT0 256-MB 256-MB partition#2, ext4 : SYSTEM 512-MB 512-MB partition#3, ext4 : FALINUX 1024-MB all partition#4, ext4 : PRIME ----------------------------------------------------- 0-MB 128-MB raw area ----------------------------------------------------- start size start size ----------------------------------------------------- U-boot : 1KB 640KB ( 0x2 0x500 ) Logo : 1MB 4.5MB ( 0x800 0x2400 ) DTB : 5.5MB 128KB ( 0x2C00 0x100 ) KERNEL : 6MB 7MB ( 0x3000 0x3800 ) RAMDISK : 14MB 64MB ( 0x7000 0x20000 )