README.md 5.61 KB

[컴파일러 설치]


  • 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
    $ source ../../env-4.9.4.env   #  (이미 실행하였다면 하지 않아도 된다)
    
  • 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
    $ source ../../env-4.9.4.env   #  (이미 실행하였다면 하지 않아도 된다)
    
  • 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
    
  • 컴파일은 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
    ----------   ----------  ------------------
      00-MB       64-MB     reserved area
      64-MB      192-MB     partition#0, ext4  : BOOT0
     256-MB     2048-MB     partition#1, ext4  : APP
    2304-MB         all     partition#2, ext4  : DATA

    ------------------------------------------
    00-MB        64-MB      reserved 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     32MB  ( 0x7000   0x10000 )