自己编译Openwrt(LEDE)固件 WNDR4300
准备工作
-
下载镜像, 安装Ubuntu 18.04.2 虚拟机
-
设置好ss代理
-
更新软件源
1
sudo apt-get update
-
由于是从英文官网下载的镜像,安装中文语言
-
安装curl(后面编译用)
-
安装git,并clone代码,使用lean的
1
git clone https://github.com/coolsnowwolf/lede
配置编译环境
-
安装必须的包
1
sudo apt-get -o Acquire::http::proxy="http://127.0.0.1:1080/" -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx autoconf automake libtool autopoint
-
下载一个主题过来
1 2
cd lede/package git clone https://github.com/rosywrt/luci-theme-rosy
开始编译
-
回到上一层执行
1 2 3
cd .. ./scripts/feeds update -a ./scripts/feeds install -a
-
配置
1
make menuconfig
- 选一下CPU,Generic NAND FLASH, 不能选默认的Generic,那样会只能看到WNDR3800而看不到WNDR4300
- 选一下机型,WNDR4300
- 进入LUCI,选择一些Application,并到Themes把刚才的主题选上
- 退出即可
-
下载, 其实直接开始编译也是可以的,不过如果下载失败的话,重新执行这个操作会快一点(编译还有其他事情的)
1
make download V=s
这里有些包是必然失败的,或者即使挂proxy也下的很慢,需要特殊处理
- e2fsprogs-1.44.5.tar.xz
- libelf-0.8.13.tar.gz
- linux-4.9.171.tar.xz
- openssl-1.0.2p.tar.gz
我这里遇到是这么几个, 其中openssl可以到 http://distfiles.macports.org/openssl/ 这里去下载, libelf 由于编译脚本里的域名跳转有问题了, 去这里下载 https://github.com/coolsnowwolf/lede/issues/1124
另外需要注意的是,设置代理的时候如果是用export的形式,注意要和ss的设置对应(shadowsocks-qt5), 区分HTTP和SOCKS5。主要之前没怎么玩过,所以我是乱设的,又是全局又是export的
下载下来之后原样放置到 lede/dl 目录即可(下载过程中出现的
.hash
文件不要删掉)。根据情况,在下载卡住了之后再去下载,不挂proxy估计是猴年马月都下不完的,因此尽量选个速度快的 -
编译
1
make -j5 V=s
祈祷吧, 祈祷别中途崩了
另外由于前面已经把该下载的都下载了,这里开始就可以去吃个饭睡个觉了^_^
PS
-
apt-get -o Acquire::http::proxy="http://127.0.0.1:1080/"
这样可以为apt-get使用代理,设置系统代理好像没啥用,应该是不能用于Console, 而proxychains在对于apt-get的时候经常报错,目前来说这种方式最稳了 -
在使用较新的源码编译时(例如,Lean’s LEDE),由于使用的是snapshot的代码,可能会出现官方的仓库里的包版本和编译出的固件版本不匹配。官方那边仓库的ipk内核版本已经到4.14.115,而lean这个仓库里的还在4.14.114。鉴于这种情况,所有需要用到的包建议全部都编译进固件里,不要使用opkg去安装了