搭建內部Openwrt Git倉庫

一、下載官網源碼
win@server:~/project/pmt7620$mkdir openwrt-1407
win@server:~/project/pmt7620/openwrt-1407$git clone git://git.openwrt.org/14.07/openwrt.git .
win@server:~/project/pmt7620/openwrt-1407$ls
BSDmakefile config/ Config.in docs/ feeds.conf.default include/ LICENSE Makefile package/ README rules.mk scripts/ target/ toolchain/ tools/
win@server:~/project/pmt7620/openwrt-1407$ ls .
./              ../             .git/           .gitattributes  .gitignore

二、初始化爲自己本地倉庫
win@server:~/project/pmt7620/openwrt-1407$rm -rf .git
win@server:~/project/pmt7620/openwrt-1407$git init
win@server:~/project/pmt7620/openwrt-1407$git add .
win@server:~/project/pmt7620/openwrt-1407$git cm -m "Init Openwrt-1407"


三、添加MT7620N M201產品

1、添加M201 板型
target/linux/ramips/base-files/lib/ramips.sh
ramips_board_detect() {
        *"WRTNODE")
                name="wrtnode"
                ;;
+       *"M201")
+               name="m201"
+               ;;
2、target/linux/ramips/base-files/lib/upgrade/platform.sh
        wrtnode |\
+       m201 |\

3、添加M201.dts
cp WRTNODE.dts M201.dts

        compatible = "m201", "ralink,mt7620n-soc";
    model = "M201";


4、led燈支持

target/linux/ramips/base-files/etc/uci-defaults/01_leds

+       m20x)
+               ucidef_set_led_netdev "eth" "Network" "singwoo:green:lan" "eth0"
+               set_wifi_led "singwoo:blue:wifi"
+               ;;


5、編譯後只生成M201 的bin文件
target/linux/ramips/image/Makefile

mage/Build/Profile/MLW221=$(call BuildFirmware/Default16M/$(1),$(1),mlw221,MLW221)
Image/Build/Profile/MLWG2=$(call BuildFirmware/Default16M/$(1),$(1),mlwg2,MLWG2)
Image/Build/Profile/WMR300=$(call BuildFirmware/Default8M/$(1),$(1),wmr-300,WMR300)
Image/Build/Profile/RT-N14U=$(call BuildFirmware/Default8M/$(1),$(1),rt-n14u,RT-N14U)
Image/Build/Profile/WR8305RT=$(call BuildFirmware/Default8M/$(1),$(1),wr8305rt,WR8305RT)
Image/Build/Profile/WRTNODE=$(call BuildFirmware/Default16M/$(1),$(1),wrtnode,WRTNODE)
+Image/Build/Profile/M201=$(call BuildFirmware/Default16M/$(1),$(1),m201,M201)
Image/Build/Profile/ZBT-WA05=$(call BuildFirmware/Default8M/$(1),$(1),zbt-wa05,ZBT-WA05)
 
$(call Image/Build/Profile/MLW221,$(1))
      $(call Image/Build/Profile/MLWG2,$(1))
      $(call Image/Build/Profile/WMR300,$(1))
      $(call Image/Build/Profile/RT-N14U,$(1))
      $(call Image/Build/Profile/WR8305RT,$(1))
      $(call Image/Build/Profile/WRTNODE,$(1))
+       $(call Image/Build/Profile/M201,$(1))
      

6、添加Target profile 中單獨編譯選項
target/linux/ramips/mt7620n/profiles/
cp 00-default.mk m201.mk

define Profile/M201
    NAME:=M201 mt7620n board Profile
    PACKAGES:=\
        kmod-usb-core kmod-usb2 kmod-usb-ohci \
        kmod-ledtrig-usbdev
endef

define Profile/M201/Description
    package set for M201 mt7620n Iot board
    64MB DDR2 + 8MB Flash.
endef
$(eval $(call Profile,M201))

7、添加網絡配置
vim target/linux/ramips/base-files/etc/uci-defaults/02_network

     wrtnode | \
     m201)                                                                                                                                                                                        
+               ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
+               ucidef_add_switch "switch0" "1" "1"
+               ucidef_add_switch_vlan "switch0" "1" "1 2 3 4 5 6t"
+               ucidef_add_switch_vlan "switch0" "2" "0 6t"
+               ;;


四、配置編譯 M201 項目

1、下載安裝feeds(Feeds是OpenWrt環境所需要的軟件包套件packages/LuCI等)
win@server:~/project/pmt7620/openwrt-1407$./scripts/feeds update -a
生成feeds/ tmp/  .config  .config.old
win@server:~/project/pmt7620/openwrt-1407$./scripts/feeds install -a
Installing all packages from feed packages.
生成package/feeds/  staging_dir/ 只有安裝之後,在後面的make menuconfig時,纔可以對相關配置進行選擇。

2、做最簡配置:make menuconfig
Target System (Ralink RT288x/RT3xxx) --->
Subtarget (MT7620n based boards) --->
Target Profile (M201 mt7620n board Profile) --->

3、編譯
make V=99  編譯時間會很久,由於在線下載很多東西
編譯後新增 bin/ build_dir/ dl/
注:bin目錄下面生成產品固件包,build_dir目錄下是解壓後的包,內核就在裏面,dl目錄會根據你配置的內容會實時下載一些相應的包。

4、添加dl 到git倉庫管理,可以跟蹤下載了哪些軟件包 git add dl/ 註釋.gitignore #/dl


五、添加到服務器進行管理

* 創建裸版本庫(不包含工作區)
 git clone --bare openwrt-1407/ openwrt-1407.git
* 上傳到服務器供gitosis管理
 1、scp -r openwrt-1407.git [email protected]:/home/win
 2、sudo mv /home/win/openwrt-1407.git /home/git/repositories/
 3、sudo chown -R git:git /home/git/repositories/openwrt-1407.git
 4、/home/server/git/git-manager/gitosis-admin/:修改並push gitosis.conf
 +[group openwrt-1407]
 +members = Lin Zhou Win
 +writable = openwrt-1407

六、同事下載

1、先執行$ssh-keygen 一路回車結束。成功後會在~/.ssh/目錄下生產id_rsa.pub和id_rsa兩個文件。
將id_rsa.pub公鑰文件發給服務器管理人員,授權後便可以進行相關下載。

2、Win同事下載 git clone [email protected]:openwrt-1407.git

七、創建產品開發分支


1、雖然以項目M201 爲master,但是後期會陸續添加其它同類產品,所以還是以分支進行管理較好

2、Win創建本地m201 開發分支
git checkout -b M201-mt7620n

3、提交到遠程倉庫
git push origin M201-mt7620n:M201-mt7620n
git branch -r即可查看到遠程分支

4、Zhou同事下載M201-mt7620n 分支
git clone [email protected]:openwrt-1407.git -b M201-mt7620n

八、編譯配置

1、下載安裝feeds(Feeds是OpenWrt環境所需要的軟件包套件packages/LuCI等)

./scripts/feeds update -a  //注意failed,需要重新執行
./scripts/feeds install -a

只有安裝之後,在後面的make menuconfig時,纔可以對相關配置進行選擇。

2、配置

make menuconfig
make kernel_config

應項目需要進行一些常規配置和一些特殊配置。

3、編譯
make V=99  //編譯過程會在線下載一些東西,固編譯很長時間,甚至可能中斷
當配置少量,生成的固件在bin/xxx/目錄下,我沒有配置太多生成只有2.8M,隨着配置多固件就大了。
make V=s 2>&1 | tee build.log | grep -i error

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章