
关于自己学习编译openwrt的根本原因为:想使用openwrt最新快照版中的seafile服务,而最新的稳定版15.05.1所配的软件源中没有,快照版里面倒是有路由宝的固件,但是却有一个不能软重启的bug.于是就想到了自己编译一个.在此记录自己所遇到的各种坑.
于是查找各种教程,经过2天时间,于2月7日编译出了一个失败的固件.具体细节就不说了,主要是没记录.
再次重新编译,决定边编译,边写博客.以作记录.
要解决软重启bug,就需要更改linux内核的一个文件,参考自:让MT7620完美支持32M SPI Flash(W25Q256) — 兼谈设备驱动中的shutdown方法[转]
我在内核源代码压缩包中修改了m25p80.c文件,添加了相关代码.参考网上的教程:http://wenku.baidu.com/view/1d663e75102de2bd960588e9,最终经过了几个小时的漫长编译,主要是下载文件速度太慢了.编译出了2个.bin文件,分别叫:openwrt-ramips-mt7620-ArcherC20i-squashfs-sysupgrade.bin,openwrt-ramips-mt7620-ArcherC50-squashfs-sysupgrade.bin,这个两个文件名搞得我一头雾水,心里其实已经感觉可能是失败了。但是不死心,想强刷进路由器看看,谁知breed直接就不认这俩固件,我也是醉了。
这次重新编译,决定采用现成的内核补丁,就不自己手动改了。参考自:http://www.right.com.cn/forum/thread-201653-1-1.html。
此次准备根据恩山论坛网友建议参考:http://wenku.baidu.com/link?url=Slg9rrKmg8ovjlIM7FmbkrZalSygc7TYSYnmodF-Yb0bPrhiJoSrM-L6C0a93n3Ruj0N8kAOpe0mPPDGdHteFY6SqMGjxy3zarzyUMGp9PK
不过我的编译环境是:Debian 7.11_X86
最开始我只是安装了这些软件:
sudo apt-get install gcc binutils bzip2 flex python perl make unzip gawk subversion libz-dev g++ libncurses5-dev libssl-dev
这回决定按照文章上面的安装:
sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip zip unrar p7zip p7zip-rar p7zip-full sharutils subversion libncurses5-dev ncurses-term zlib1g-dev gawk git-core libssl-dev
-----------------------------------------------------------------------------------------------
2017.02.08继续写
-----------------------------------------------------------------------------------------------
清除编译时产生的文件
建议清理编译产生的文件,以免下次编译时造成冲突,文件如果存在的话,编译将不会被替换
1.清除bin目录
make clean
bin目录是编译后固件所在文件夹,确保备份了编译后的固件。
2.清除交叉编译工具以及工具链目录
make dirclean
3.清除所有相关东西
make distclean
该命令会清除下载的软件包,配置文件,feed内容等,但不建议使用。
附加
make命令简单说明
make V=99
V=99表示输出详细的debug信息
make world
表示编译所有
make j=2 V=99
如是多核CPU,加j=2 选项理论上能加快编译速度(第一次编译不推荐使用)
只清除某个模块
make package/qos/clean
只编译某个模块
make package/qos/clean
make package/qos/compile
make package/qos/install
make V=99 | tee compile_v1.0.0.log
继续编译
在用户目录下新建你的这一项目要存放的文件夹,
mkdir openwrt cd openwrt git clone -b master git://github.com/openwrt/openwrt.git cc #因为目前最新版的开发代号为Chaos Calmer,所以我就直接把源码克隆到cc目录,此cc代表新建目录名 cd cc cp feeds.conf.default feeds.conf #以默认扩展软件包配置文件作为我的配置文件 ./scripts/feeds update -a #更新扩展软件包 ./scripts/feeds install -a #安装扩展软件包 make defconfig #测试编译环境 make menuconfig #进入定制界面 make V=99 | tee build.log egrep "tar.bz2|tar.gz|tar.xz" build.log #出问题后,一般是国外服务器的某个软件下载不成功,手动下载后放在dl目录即可(dl就是download的缩写),中断后再次编译
这是最开始的步骤。
因为不是第一次编译了,所以这次需要更新一下源代码,先清除一下上次失败产生的临时文件
cd cc
make clean
make dirclean
git pull origin master
./scripts/feeds update -a
./scripts/feeds install -a
参考:http://www.right.com.cn/forum/thread-185335-1-1.html
添加路由宝,目前版本跟文章中有些地方不一样。我先试过再写。
根据文章调整了一些地方,再次执行编译:
make defconfig #测试编译环境 make menuconfig #进入定制界面 make V=99 | tee 20170208.log egrep "tar.bz2|tar.gz|tar.xz" 20170208.log #出问题后,一般是国外服务器的某个软件下载不成功,手动下载后放在dl目录即可(dl就是download的缩写),中断后再次编译 #然后就没有反应了,编译也没成功,感觉有问题 make download V=99 #决定采用先下载,再编译 make
终于编译出了一个“openwrt-ramips-mt7620-youku-yk1-squashfs-sysupgrade.bin”固件,breed也认,正常刷进去了,心里当时是很窃喜的,但是现实是残酷的,刷完重启后,路由器不运行.........................



本文地址:https://www.xxnet.eu.org/?post=225
版权声明:若无注明,本文皆为“点滴记忆---观雨亭”原创,转载请保留文章出处。

