本帖最后由 醉老仙 于 2018-11-23 15:36 编辑
在论坛找编译教程思考
自己编译了几个路由的固件都成功了,所以来分享下一些经验
首先是环境的问题,用虚拟机或者物理机安装linux,ubuntu或者debian之类的
安装依赖(从别人那复制的)
- sudo apt-get update
- sudo apt-get install unzip libtool curl cmake gperf gawk flex bison nano \
- git python-docutils gettext automake autopoint texinfo build-essential \
- pkg-config zlib1g-dev libgmp3-dev libmpc-dev libmpfr-dev libncurses5-dev libltdl-dev
复制代码
(2018-11-23)最近编译发现https://github.com/hanwckf/rt-n56u 用这个源码会报错就是cmake版本低,于是就卸载旧版本,安装新版本来解决
卸载cmake
apt-get autoremove cmake
官网下载
https://cmake.org/download/
可用wget下载
wget https://github.com/Kitware/CMake ... cmake-3.13.0.tar.gz
解压
tar zxvf cmake-3.13.0.tar.gz
进入cmake目录
cd cmake-3.13.0
执行
./bootstrap
make
make install
版本查询
cmake -version
因为我最早使用老毛子虚拟机刷机的,所以就直接使用了虚拟机内的环境
目前我用过两个源码仓库
https://bitbucket.org/padavan/rt-n56u.git
和
https://github.com/Linaro1985/padavan-fw.git
使用过程种,第二个更好用,应该是说更适合初学者,因为第一个经常出现编译错误,而作为新手无法处理,不知道有没有人清楚怎么回事
新增(2018-11-23)https://github.com/hanwckf/rt-n56u.git
进入某个目录克隆代码,例如opt
cd /opt sudo git clone https://bitbucket.org/padavan/rt-n56u.git
等待克隆完毕
进入工具链目录
cd /opt/rt-n56u/toolchain-mipsel sudo ./clean_sources sudo ./build_toolchain
注意版本问题,clean_sources也可能是clean_sources.sh
创建工具链完毕,进入源码目录 cd /opt/rt-n56u/trunk 修改.config,这个是编译的配置文件 如果没有你的机型,从configs/templates中复制一个模板,改为.config放在trunk目录下 CPU类型, CONFIG_PRODUCT=MT7620 路由器配置目录 CONFIG_FIRMWARE_PRODUCT_ID="rt-n56u" 锁定cpu频率 CONFIG_FIRMWARE_CPU_600MHZ=y cpu休眠,一般不开,前面加#即可 #CONFIG_FIRMWARE_CPU_SLEEP=y 5Gwifi,根据cpu选,有多种,3.0、4.0等等 CONFIG_FIRMWARE_WIFI5_DRIVER=3.0 2.4Gwifi,根据cpu选,有多种,2.7、4.0等等 CONFIG_FIRMWARE_WIFI2_DRIVER=2.7 IPV6 CONFIG_FIRMWARE_ENABLE_IPV6=y USB CONFIG_FIRMWARE_ENABLE_USB=y
如果不知道那些功能有用可以都关闭,如果flash大也可以不关闭 语言选项默认 CONFIG_FIRMWARE_INCLUDE_LANG_RU=y SSH功能 CONFIG_FIRMWARE_INCLUDE_DROPBEAR=y
还有其他的功能,比如硬盘格式支持,Aria2,Transmission,IPTV,QOS,等等,看情况开关
修改versions.inc,版本号 FIRMWARE_ROOTFS_VER=3.9 FIRMWARE_BUILDS_VER=099 FIRMWARE_BUILDS_REV=$(shell git rev-parse --short HEAD 2>/dev/null) 常见的3.4.3.9_099就是这么来的,后面跟的应该是源码版本,可以去掉或者改成别的
进入configs/boards/机型目录,刚才改.config的时候机型是rt-n56u,所以必须有个rt-n56u的机型目录 修改board.mk ################################################################## # Board PID # Board Name # PRODUCT # Note ################################################################## 此处是机型,要修改 # rt-n56u # rt-n56u # MT7620 # ################################################################## CFLAGS += -DBOARD_rt-n56u 1表示打开usb,0关闭usb BOARD_NUM_USB_PORTS=1
修改board.h 型号的修改自己看着改 复位键 BOARD_GPIO_BTN_RESET 电源LED BOARD_GPIO_LED_POWER LAN led BOARD_GPIO_LED_LAN WAN led BOARD_GPIO_LED_WAN USB led BOARD_GPIO_LED_USB WIFI led BOARD_GPIO_LED_WIFI
有就写,没有就不写,有breed可以在breed里测试GPIO
修改kernel-3.4.x.config cpu型号 CONFIG_RALINK_MT7620=y 内存大小,注意不是flash CONFIG_RT2880_DRAM_128M=y CONFIG_RALINK_RAM_SIZE=128 flash大小 CONFIG_RT2880_FLASH_4M=y 不指定大小可以设置为AUTO CONFIG_RT2880_FLASH_AUTO=y 波特率 CONFIG_RT2880_UART_115200=y CONFIG_RALINK_UART_BRATE=115200 WAN与LAN,自己测试后填入 CONFIG_RAETH_ESW_PORT_WAN=0 CONFIG_RAETH_ESW_PORT_LAN1=4 CONFIG_RAETH_ESW_PORT_LAN2=1 CONFIG_RAETH_ESW_PORT_LAN3=2 CONFIG_RAETH_ESW_PORT_LAN4=3
进入 trunk/user/shared 修改defaults.h 有后台账号密码与默认ip,默认wifi名等等 无线地区,改为CN #define DEF_WLAN_2G_CC "GB" #define DEF_WLAN_5G_CC "GB" 时区,改为CST-8 #define DEF_TIMEZONE "GMT0" 网络时间校准,改为ntp1.aliyun.com #define DEF_NTP_SERVER0 "pool.ntp.org"
修改defaults.c 找到如下代码,telnet和ssh开关,0为关,1为开 { "telnetd", "0" }, { "sshd_enable", "1" },
进入 trunk/user/www/dict
修改EN.header [Language type] LANG_EN=简体中文 注意留一行
修改EN.footer,将里面的内容全部复制到RU.dict 或者删掉RU.dict直接改名为RU.dict 使用翻译好的文件替换EN.footer 机型部分替换为ZVMODELVZ,后面留个空格,编译的时候会自动替换为你设置的机型 IP部分替换为你需要的默认ip
进入trunk/user/www 修改Makefile 将echo "LANG_RU=Pусский" >> $(ROMFS_DIR)/www/EN.header 修改为echo "LANG_RU=English" >> $(ROMFS_DIR)/www/EN.header
回到trunk 执行 sudo ./clear_tree.sh 注意源码不同,可能不带.sh 则执行sudo ./clear_tree,下面也这样 执行 sudo ./build_firmware.sh 编译完成后会存放在trunk/images 如果编译过程中提示选择cpu,网卡类型,波特率等等,按提示输入对应选项数字
如有错误请大神指导
|