标签归档:编译

openwrt编译学习记录

openwrt是一个开源路由管理系统,基于linux,功能非常强大。这阵子利用闲暇时间学习,写下本文做个记录,方便自己后续查找,也方便他人学习。
本文不定时更新。
《1》 编译环境搭建
本来是找算在本地使用虚拟机编译的,但弄了几次都编译失败,查找原因是某些包的下载地址被墙,下载失败导致,这个问题可以通过连接VPN解决,但我的VPN实在太慢,我又是急性子,最终是直接在Vultr上新建个VPS,在上面编译的。
使用的系统为ubuntu14.04 64位
使用如下命令搭建环境

apt-get update
apt-get install git-core build-essential libssl-dev libncurses5-dev unzip -y
apt-get install subversion mercurial -y
apt-get install zlib1g-dev gawk gcc-multilib flex gettext -y

编译时最好先安装screen,新建一个screen进行编译,因为编译时间很长,直接ssh连接可能会因为网络不稳断掉导致编译进程被杀死。挂起screen方法为 ctrl+a再+d 。恢复的命令为 screen -r 。

apt-get install screen -y
screen -S openwrt

编译时不能使用root进行编译,我们新建一个普通用户

useradd glorystar -m
su glorystar
cd ~

通过git来下载OpenWrt bleeding edge(trunk版本)

git clone git://git.openwrt.org/openwrt.git

这将会创建’openwrt’这个目录。这个目录将会是OpenWrt的编译主目录。
下载并安装所有可用的”feeds”

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

运行下面的命令让OpenWrt编译系统检查你的编译环境中缺失的软件包

make defconfig
make prereq

使用如下命令打开编译菜单选择要编译的软件包

make menuconfig

make menuconfig.png
必须设置项为 Target System (我选择Broadcom BCM47xx/53xx (MIPS)) Subtarget (我选择MIPS 74K) 这个是根据你的路由器来选择的,选择完成后就可以开始编译了。
默认编译是不包含luCI管理界面的,如果你需要它,可以选择它编译进固件,路径为 LuCI —> Collections —> < * > luci
<>表示不会被编译,< M >表示会编译但不包含进固件,生成ipk以便后来安装, < * >表示会被编译进固件,使用空格键切换选择。

选择好后一点选exit退出,最后选yes保存。使用如下命令进行编译

make V=99

使用多核CPU进行编译用如下命令(会加快速度)

make V=99 -j

之后就是漫长的等待,编译好的固件会放在bin文件夹里。
注意点:新建虚拟机硬盘至少要30G以上,我使用20G的硬盘导致空间被占完,编译失败。
《一》到此结束,参考 OpenWrt编译系统 – 安装