openwrt固件获取、编译与安装

openwrt固件获取、编译与安装

参考

在linux下修改编译网件WNDR3700v4的Openwrt固件
Archlinux 下为 wndr4300 编译 OpenWrt trunk 版固件
编译自己的 OpenWrt 固件
【Linux/Ubuntu学习 7】E: 无法获得锁 /var/lib/dpkg/lock – open (11: 资源暂时不可用) E: 无法锁定管理目录

环境

路由器 NETGEAR WNDR3700v4
编译环境 ubuntu-16.10-desktop-amd64

FAQ

固件的获取

  1. openwrt官网/科大清华阿里等的镜像站下载官方编译好固件
    这类固件比较干净,里面只带了一些必要的软件包
    可能没有我们路由器的型号,或者无法充分利用路由器升级的内存
  2. 民间大神编辑,如明月的OPENWRT
    这类固件装了很多软件包,操作简单
    功能很多,可能我们用不到
  3. 自己编译固件

为什么要自己编译固件

主要是听起来很酷
官方的包可能存在问题,例如我的3700v4有120M的flash,官方的包识别32M,可以通过自己编译解决,而且在编译时还可以安装一些软件包,这样,装完系统后,很多软件就不用一个一个装了

编译固件

编译环境 ubuntu-16.10-desktop-amd64 的硬盘空间至少剩余20G,在编译的过程中虽然源代码100M左右,但是编译产生的中间文件有10G左右

安装编译环境和依赖

Ubuntu终端内输入

sudo su
apt-get update    #更新软件列表
apt-get install g++
apt-get install libncurses5-dev
apt-get install zlib1g-dev
apt-get install bison
apt-get install flex
apt-get install unzip
apt-get install autoconf
apt-get install gawk
apt-get install make
apt-get install gettext
apt-get install gcc
apt-get install binutils
apt-get install patch
apt-get install bzip2
apt-get install libz-dev
apt-get install subversion
apt-get install asciidoc  #这个软件400M会下载好久

下载源码

exit #退出root,openwrt默认是不允许用root编译的

下载源代码

git clone -b chaos_calmer git://github.com/openwrt/openwrt.git

当然下载方式很多,这里仅是使用git从GitHub下载,也可以

wget https://github.com/openwrt/openwrt/archive/master.zip
sudu apt-get install zip
unzip master.zip

源码就在那里openwrt,下载方法随意
可以将下载源码的复制一份,免得之后的修改弄坏了,还可以重头来过

编译前的设置

进入源码目录git的目录为openwrt

cd openwrt

wget后解压的目录为openwrt-master

cd openwrt-master

其他方法下载的源码进入源码目录自定义

更新下载并安装所有可用的 feeds

./scripts/feeds update -a
./scripts/feeds install -a

检查还有哪些包没有安装,根据提示安装缺少的软件包

make defconfig
make prereq

打开配置菜单

make menuconfig

openwrt固件获取、编译与安装_第1张图片
配置菜单

操作规则
Enter 进入子菜单/确定 空格切换软件包的状态 【*】表示编译进固件包,【M】表示编译成安装文件,【】为不做操作
左右键切换最下面的