OpenWrt分支LEDE嵌入式无线路由系统定制-2.自定义固件

#选择目标编译固件平台

cd ~/source

#编辑前检查

make defconfig
make prereq

 

#设置固件默认大小及自定义新硬件

#想生成自定义名称固件、机器型号需要修改8处地方

#主板CPUMT7620N

#硬件是和ZBT WR8305RT的硬件一样

#板子上的真实型号是JGX-X5

#固件容量: 16M

#十六进制: 0xfb0000

#十进制:   1612185615.375

 

cd ~/source/target/linux/ramips/

 

#1步:定义profile文件,用于make menuconfig显示菜单

file="./image/mt7620.mk"
cat >>$file <<EOF
 
define Device/jlcsswrt
  DTS:= JLCSSWRT
 DEVICE_TITLE := MYWRT
endef
TARGET_DEVICES += jlcsswrt
EOF

 

#2步:sed使用“”时:\\t表示制表符

file="./base-files/lib/ramips.sh"
grep "jlcsswrt" $file
if [ $? -ne 0 ];then
   num=`grep -A1 -n ‘name.*wr8305rt.*‘ $file  |grep ‘;;‘ |awk -F ‘-‘ ‘{print $NR}‘`
   sed -i "${num}a\\\t*\"MYWRT\")" $file
   num=$[$num+1]
   sed -i "${num}a\\\t\\tname=\"jlcsswrt\"" $file
   num=$[$num+1]
    sed -i "${num}a\\\t\\t;;" $file
fi      
grep ".*jlcsswrt.*" $file -C4 -i

 

#3步:sed使用‘’时:\t表示制表符

file="./base-files/lib/upgrade/platform.sh"
grep "jlcsswrt" $file
if [ $? -ne 0 ];then
         sed-i ‘/wr8305rt/a\\tjlcsswrt|\\‘ $file
fi
grep "jlcsswrt" $file -C1

 

#4步:

file="./base-files/etc/diag.sh"
grep "jlcsswrt" $file
if [ $? -ne 0 ];then
   sed -i ‘/wr8305rt/i\\tjlcsswrt|\\‘ $file
fi
grep ‘jlcsswrt‘ $file -C1

 

#5步:定义系统led接口

file="./base-files/etc/board.d/01_leds"
grep "jlcsswrt" $file
if [ $? -ne 0 ];then
    sed-i ‘/wr8305rt/i\jlcsswrt|\\‘ $file
fi
grep "jlcsswrt" $file -A1

 

#6步:定义network接口

file="./base-files/etc/board.d/02_network"
grep "jlcsswrt" $file
if [ $? -ne 0 ];then
   sed -i ‘/wr8305rt/i\\tjlcsswrt|\\‘ $file
fi
grep "jlcsswrt" $file -C1

 

#7步:定义DTS文件,设备型号、内存大小、分区信息等

#修改flash分区

#由于我们的flash16M的,修改firmware分区大小为0xfb0000L45

#(firmware)+(factory)+(uboot-env)+(uboot)=flash

# (kernel)+(rootfs)=firmware

#(squashfs(ro))+(jffs2(rw,rootfs_data))=rootfs

 

\cp ./dts/ZBT-WR8305RT.dts./dts/MYWRT.dts
file="./dts/MYWRT.dts"
com=`grep ‘compatible.*mt7620n.*$‘ $file|awk -F ‘"‘ ‘{print $2}‘`
sed -i "s#${com}#jlcsswrt#g"$file
model=`grep ‘model.*‘ $file |awk -F‘"‘ ‘{print $2}‘`
sed -i "s#${model}#MYWRT#g"$file
label=`echo $com |awk -F ‘,‘ ‘{print $2}‘`
sed -i "s#${label}#jlcsswrt#g"$file
sed -i ‘/0x50000/s/0x7b0000/0xfb0000/g‘$file    #设置固件大小为16M
 
grep -i ‘mywrt‘ $file

 

#8:删除文件并重新选择目标固件

rm -rf ~/source/tmp

 

#进入编译菜单,选择目标平台

make menuconfig
 
Target System (MediaTek Ralink MIPS)  ---> (X) MediaTek Ralink MIPS #选择厂商
Subtarget (MT7620 based boards)  --->(X) MT7620 based boards         #选择CPU类型
Target Profile (MYWRT)  --->(X) MYWRT                #选择目标平台
LuCI --->1. Collections  ---><*> luci                                        #启用web界面支持
LuCI --->2. Modules  --->Translations  ---><*> Chinese (zh-cn)    #添加中文语言包
LuCI --->2. Modules --->Translations ---><*> English (en)               #添加英文语言包

 

#退出前保存

 

#只下载不编辑(V=s 显示详细信息)

make download V=s

#可以利用其他软件下载需要的源代码包,拷贝到~/lede/source/dl目录下

 

#开始第一次编译#

第一次编译时最好不使用多线程编译,编译一次后,以后可以多线程编译;

make V=s
#或
make -j8 V=s


本文章由作者:佐须之男 整理编辑,原文地址: OpenWrt分支LEDE嵌入式无线路由系统定制-2.自定义固件
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资 源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。

相关推荐