编译 openwrt -dreamBox系统 超详细教程

转自openwrt 开发者中心https://dev.openwrt.org.cn/wiki/

编译 openwrt -dreamBox系统 超详细教程

博主有一个HG255D路由器,基于openwrt开源系统,想给上面安装一些自己用的程序,比如python  等,但是基于我的古董路由器硬件配置问题,所以就不得不重新自己编译一个实用的openwrt系统。
转这个文章的原因,在于这个文章写的太漂亮的,感谢原作者@飞鸿惊雪给我们提供一篇如此详细的教程。

一 准备工作

在开始编译OpenWrt-DreamBox之前需要您做些准备工作。

首先,准备一台运行Linux或者类Unix操作系统的PC,比如Ubuntu,Debian,Fedora,MAC OS,FreeBSD,Suse等,推荐使用Ubuntu
这里假设使用的是Ubuntu,其他OS只是在安装PC所需的工具和函数库时所使用的命令不同而已,比如apt-get install改为yum install。
需要大约350MB硬盘空间,用于下载软件包(当然,选择编译的软件越多,需要下载的源代码包就越多,可能需要多达几个G的硬盘空间);
需要3~4GB可用硬盘空间,用于编译OpenWrt-DreamBox;
需要宽带连接,因为OpenWrt提供的主要是脚本文件不包含源代码,需要从网络下载所需的源代码包。
一般情况下,我们还需要一个非root用户
最后是耐心和时间,OpenWrt边下载边编译,编译几个小时那是家常便饭,并且中间还有可能出错。

OpenWrt-DreamBox使用svn工具来获取源代码。

安装subversion:

sudo apt-get install subversion

与其他编译过程一样,类似的编译工具和编译环境是必不可少的。

安装必要的编译工具:

sudo apt-get install libtool autoconf automake gcc-multilib bison screen gcc g++ binutils patch bzip2 flex make gettext unzip libc6 git-core git build-essential libncurses5-dev zlib1g-dev gawk quilt asciidoc libz-dev

二 获取OpenWrt-Dreambox源代码

OpenWrt-Dreambox目前仍处于trunk开发版,还没发布稳定版,同时含有针对嵌入式开发板的SUN分支。

1 获取OpenWrt-Dreambox Dreambox旧版SVN代码库

svn co svn://svn.openwrt.org.cn/dreambox/branches/dreambox-EOL openwrt-dreambox

2 获取!Dreambox trunk开发版SVN代码库

svn co svn://svn.openwrt.org.cn/dreambox/trunk openwrt-pandorabox

3 获取OpenWrt-Dreambox 针对嵌入式开发板的OpenOSOM分支SVN代码库

svn co svn://svn.openwrt.org.cn/dreambox/branches/openosom openwrt-dreambox

三 编译OpenWrt-DreamBox

在完成准备工作和使用SVN下载DreamBox源代码之后就可以开始编译工作了~

编译OpenWrt-DreamBox一般需要以下五个步骤:
准备工作:搭建编译环境
通过Subversion命令获取DreamBox源代码
更新下载和安装扩展软件包,即package feeds
用menuconfig来配置目标平台和软件包
最后make开始编译固件

假设你的工作目录为openwrt-dreambox,进入openwrt-dreambox目录:

cd openwrt-dreambox/

OpenWrt-DreamBox会不停地更新,为了保证源代码的最新可以使用svn up更新:

svn update

1. 添加扩展软件包(Add packages from extra feeds)

虽然基本系统可以build出Image,但生成的Image缺少很多应用程序,需要添加额外的扩展软件包:

cp feeds.conf.default feeds.conf

然后编辑feeds.conf文件,前面加注释符号#表示该软件源不会被下载和安装。需要安装何种软件源就去掉相应的#:

src-svn packages svn://svn.openwrt.org.cn/dreambox/feeds/packages_10.03.2
src-svn qpe svn://svn.openwrt.org.cn/dreambox/feeds/qpe
src-svn device svn://svn.openwrt.org.cn/dreambox/feeds/device
src-svn dreambox_packages svn://svn.openwrt.org.cn/dreambox/feeds/dreambox_packages
src-svn luci_cn svn://svn.openwrt.org.cn/dreambox/feeds/luci/trunk
#src-svn luci http://svn.luci.subsignal.org/luci/tags/0.10.0/contrib/package
#src-svn xwrt http://x-wrt.googlecode.com/svn/branches/backfire_10.03/package
#src-svn phone svn://svn.openwrt.org/openwrt/feeds/phone
#src-svn efl svn://svn.openwrt.org/openwrt/feeds/efl
#src-svn desktop svn://svn.openwrt.org/openwrt/feeds/desktop
#src-svn xfce svn://svn.openwrt.org/openwrt/feeds/xfce
#src-link custom /usr/src/openwrt/custom-feed

请注意,这个设置并不表示这些应用程序包会被编译,而只是在后面使用menuconfig命令时会获取这些包的描述信息(OpenWrt-Makefiles)。

现在,更新下载这些包,并安装它们到package/feeds/目录:

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

更多详情参看:扩展软件包package feeds详细说明

2. 配置DreamBox(Configure target and packages)

下一步是检查编译环境,若可进行编译则生成默认配置:

$ make defconfig

若defconfig回显提示缺少软件包或编译库等依赖,则按提示安装所缺软件包或库等即可,不难的,细心点就行。

现在开始配置OpenWrt-DreamBox,选择你需要目标平台,以及选择将要编译和添加进固件的软件包。运行命令:

$ make menuconfig

这个配置界面跟Linux内核的配置界面基本差不多,几乎每一项都有3个选择Y/M/N:

Y:选择Y,该软件将被编译,并且加入到你的目标固件里;
M:选择M,该软件包将会被编译,但不会被放入固件里。在需要它的时候,可以用OPKG软件包管理器进行安装;
N:选择N,该软件包将不会被编译,也不会被安装进固件。

方向键是移动光标
回车键是确认
空格键是选择,可以代替Y/M/N键的使用

比如要为TP-LINK TL-MR3420编译DreamBox:

1 选择CPU型号

Target System ---> (X) Atheros AR71xx/AR7240/AR913x

2 选择路由型号

Target Profile ---> (X) TP-LINK TL-MR3420 v1

3 软件包就使用默认的,或者可以根据需要添加。
添加luci

LuCI ->Collections -> <*> luci

添加luci的中文语言包

LuCI ->Translations -> <*> luci-i18n-chinese

添加DDNS

LuCI ->Applications -> <*>luci-app-ddns

添加USB挂载

Base system -> <*>block-mount

添加硬盘格式支持

Kernel modules -> Filesystems -> <*> kmod-fs-ext4

添加UTF8编码

Kernel modules -> Native Language Support -> <*> kmod-nls-utf8

添加USB扩展支持

Kernel modules -> USB Support -> <*> kmod-usb-storage-extras.

添加自动挂载工具

Utilities -> Filesystem -> <*> badblocks

添加复位键支持

Utilities -> <*> restorefactory

添加一键开关无线

Utilities -> <*> wifitoggle

如果需要单独配置OpenWrt-DreamBox的linux kernel,可以使用下面命令配置:

$ make kernel_menuconfig

这和普通的linux kernel的make menuconfig没有什么区别,可以根据需求自行配置。

如无特殊情况,直接使用默认的内核配置即可!

3. 编译DreamBox(Build your DreamBox image)

完成menuconfig配置后,退出保存,开始编译DreamBox:

$ make

编译过程可能会很久(一边下载源代码一边编译),请确认你有足够的磁盘空间(应至少保证能够有大约4G以上的空间)。

另外,你可以使用:

$ make -j 3 V=99

这个命令会使用双核CPU进行编译,并且输出编译过程中的信息,这样你可以比较清楚的看到编译情况或出错情况:

-j3:具有多核CPU处理器的PC进行编译,可使用-j参数加速编译,用法为-j <cpu处理器的数目 +=”” 1=””>
V=99:表示输出详细的debug信息
make world:表示编译所有

如只想清除/编译某个模块,您可以做如下类似操作:

$ make package/qos/clean
$ make package/qos/compile
$ make package/qos/install

4. 烧写固件(Flash)

编译结束后,生成的固件存放在bin目录下,其中包含了kernel和rootfs的镜像文件,以及众多可以使用OPKG工具安装的.ipk安装包。
接下了就是往flash中烧写固件,每个硬件设备不尽相同,不在详述。

这是选择编译LUCI软件包,登录到管理界面:

更多参考

​OpenWrt Buildroot – Usage
​OpenWrt Developer and User Documentation
​OpenWrt Docs on the Wiki
​OpenWrt Development Center

Have fun !

Edited by 飞鸿惊雪

Print Friendly
赞 (0)
分享到:更多 ()

留言板 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址