▤ RT305x 타겟보드를 기준으로 설명.
■ OpenWRT BuildRoot 다운로드
git clone git://git.openwrt.org/openwrt.git
▷종류 별
12.09 branch (Attitude Adjustment)
git clone git://git.openwrt.org/12.09/openwrt.git
git clone git://git.openwrt.org/12.09/packages.git
■ 디렉토리를 이동한다.
cd openwrt
■ feeds
feeds는 OpenWRT 패키지의 업데이트/다운로드/빌드 스크립트.
설정파일 : ./feeds.conf.default
최신버전으로 패키지 목록을 업데이트 한다.
'-a' 는 특정 패키지가 아닌 모든 패키지를 의미한다.
./scripts/feeds update -a
./scripts/feeds install -a
■ OpenWRT 나만의 모델 추가
아래와 같은 파일들을 생성 및 편집한다.
cd ~/openwrt/target/linux/ramips/dts
cp -iv RT-N13U.dts SL-R6804.dts
(SL-R6804.dts 파일 편집)
cd ~/openwrt/target/linux/ramips/rt305x/profiles
cp -iv n13u.mk r6804.mk
(r6804.mk 파일 편집)
~/openwrt/target/linux/ramips/base-files/etc/diag.sh
~/openwrt/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
~/openwrt/target/linux/ramips/base-files/etc/uci-defaults/01_leds
~/openwrt/target/linux/ramips/base-files/etc/uci-defaults/02_network
~/openwrt/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac
~/openwrt/target/linux/ramips/base-files/lib/ramips.sh
~/openwrt/target/linux/ramips/base-files/lib/upgrade/platform.sh
~/openwrt/target/linux/ramips/image/Makefile
■ OpenWRT 나만의 모델 백업 스크립트 (~/tmp)
#!/bin/sh
mkdir -p ~/tmp/openwrt/target/linux/ramips/base-files/etc/hotplug.d/firmware
mkdir -p ~/tmp/openwrt/target/linux/ramips/base-files/etc/uci-defaults
mkdir -p ~/tmp/openwrt/target/linux/ramips/base-files/lib/preinit
mkdir -p ~/tmp/openwrt/target/linux/ramips/base-files/lib/upgrade
mkdir -p ~/tmp/openwrt/target/linux/ramips/dts
mkdir -p ~/tmp/openwrt/target/linux/ramips/image
mkdir -p ~/tmp/openwrt/target/linux/ramips/rt305x/profiles
cp -fv ~/openwrt/target/linux/ramips/dts/SL-R6804.dts ~/tmp/openwrt/target/linux/ramips/dts
cp -fv ~/openwrt/target/linux/ramips/rt305x/profiles/r6804.mk ~/tmp/openwrt/target/linux/ramips/rt305x/profiles
cp -fv ~/openwrt/target/linux/ramips/base-files/etc/diag.sh ~/tmp/openwrt/target/linux/ramips/base-files/etc/
cp -fv ~/openwrt/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom ~/tmp/openwrt/target/linux/ramips/base-files/etc/hotplug.d/firmware/
cp -fv ~/openwrt/target/linux/ramips/base-files/etc/uci-defaults/01_leds ~/tmp/openwrt/target/linux/ramips/base-files/etc/uci-defaults/
cp -fv ~/openwrt/target/linux/ramips/base-files/etc/uci-defaults/02_network ~/tmp/openwrt/target/linux/ramips/base-files/etc/uci-defaults/
cp -fv ~/openwrt/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac ~/tmp/openwrt/target/linux/ramips/base-files/lib/preinit/
cp -fv ~/openwrt/target/linux/ramips/base-files/lib/ramips.sh ~/tmp/openwrt/target/linux/ramips/base-files/lib/
cp -fv ~/openwrt/target/linux/ramips/base-files/lib/upgrade/platform.sh ~/tmp/openwrt/target/linux/ramips/base-files/lib/upgrade/
cp -fv ~/openwrt/target/linux/ramips/image/Makefile ~/tmp/openwrt/target/linux/ramips/image/
■ OpenWRT config 파일 업로드
- 타겟 플랫폼에 맞는 커널 설정파일을 다운로드 받는다.(여기는 ramips_rt305x)
http://downloads.openwrt.org/attitude_adjustment/12.09/ramips/rt305x/config.ramips_rt305x
rm -f .config
cp -vf config.ramips_rt305x .config
■ menuconfig
※ .c 파일을 커널에 추가한 경우는 make kernel_menuconfig
rm -rf tmp
make menuconfig
■ OpenWRT Build
※ V=99는 make에서 빌드시 상세한 정보가 보여지도록 한다.
※ "-j 5"는 멀티스레드로 빌드를 진행한다 5는 CPU 코어수 + 1
※ IGNORE_ERRORS는 오류를 무시할 것인가 결정한다.
make -j 5 IGNORE_ERRORS=1 V=99
※ 패키지 소스 다운로드만 진행
make IGNORE_ERRORS=1 download
■ 부분 컴파일
- 빌드되었던 내용 삭제
rm -rf ~/openwrt/bin/ramips/kernel-debug.*
rm -rf ~/openwrt/bin/ramips/md5sums
rm -rf ~/openwrt/bin/ramips/OpenWrt-ImageBuilder-*
rm -rf ~/openwrt/bin/ramips/openwrt-ramips-*
rm -rf ~/openwrt/bin/ramips/OpenWrt-SDK-ramips-*
rm -rf ~/openwrt/bin/ramips/OpenWrt-Toolchain-*
rm -rf ~/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_rt305x
rm -rf ~/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/OpenWrt-ImageBuilder-*
rm -rf ~/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/OpenWrt-SDK-*
rm -rf ~/openwrt/staging_dir/host/bin/ccache
rm -rf ~/openwrt/staging_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/ccache
- root 파일시스템 설치
make package/base-files/install V=99
- target 부분만 수정한 경우는 리눅스만 빌드 하면 된다.
rm -f ~/openwrt/bin/ramips/openwrt-ramips-rt305x-sr-k100-squashfs-sysupgrade.bin
make -j 5 target/linux/clean
make -j 5 target/linux/install V=99
- 타겟의 모든 부분을 빌드 (sdk, linux, toolchain, imagebuilder)
make -j 5 target/install
- 이미지빌더만 빌드
make -j 5 target/imagebuilder/install
■ distclean
make distclean