本文共 3498 字,大约阅读时间需要 11 分钟。
1、 安装环境
Linux系统,如果在CentOS上操作,需安装如下依赖包:yum install binutils bzip2 gawk gcc gcc-c++ gettext makencurses-devel patch unzip wget zlib-develyum install subversion screen2、 下载OpenWRT源码mkdir /usr/src/testcd /usr/src/testsvn co svn://svn.openwrt.org/openwrt/trunk (开发版本,不稳定,不建议下载)wget (目前稳定版本,建议)3、 检查配置环境必须使用非root用户进行操作,添加一个普通用户。(注意:如果使用root进行操作的话,会提示检查失败:Checking 'non-root'...failed.)[root@localhost trunk]# adduser openwrt [root@localhost trunk]# su openwrt为了防止文件读写权限造成问题,需要将源码copy到openwet的根目录下进行所有操作。[openwrt@localhost openwrt]$ cd ~[openwrt@localhost ~]$ cp -r /usr/src/test/trunk ./[openwrt@localhost ~]$ cd trunk/[openwrt@localhost trunk]$ lsBSDmakefile LICENSE README feeds.conf.default package scripts toolchainConfig.in Makefile docs include rules.mk target tools4、 下载feedsFeeds是OpenWrt环境所需要的软件包套件。最重要的feeds有:‘packages’一些额外的基础路由器特性软件‘LuCI’OpenWrt默认的GUI‘Xwrt’另一种可选的GUI界面需要能够连接互联网。在下载之前可以通过查看’feeds.conf.default’文件,来检查哪些文件需要包含在环境中。开始下载,使用:[openwrt@localhost trunk]$ ./scripts/feeds update -a安装feeds包,只有安装之后,在后面的makemenuconfig时,才可以对相关配置进行勾选。[openwrt@localhost trunk]$ ./scripts/feeds install -a如果更新了feeds的配置文件,需要添加新的软件包用于生成系统。只需进行重复操作:[openwrt@localhost trunk]$ ./scripts/feeds update -a[openwrt@localhost trunk]$ ./scripts/feeds install -a5、 进行配置编译过程使用的交叉编译,交叉编译生成的SDK以及image等文件的类型取决于开发环境、应用硬件、以及源码版本。所以要对自己的环境进行了解,才能进行正确的配置。我在配置过程中,就遇到了这个问题,我的硬件是brcm47xx,在第一次编译的时候,选择地是Target System(Broadcom BCM947xx/953xx),最后生成的包无法在router上安装,版本不匹配。第二次安装时,选择了Target System (Broadcom BCM947xx/953xx[2.4]),安装成功,我的板子可能只支持linux2.4的内核。(设备型号是Linksys Wrt54gs v3.0) (2011.05.01添加:其实LinksysWrt54gs v3.0是支持Linux 2.6版本的,TargetSystem 选择 Broadcom BCM947xx/953xx,编译后也是可以用的,这周末由于项目需要改某个软件,每次修改代码后,都得重新编译一下固件,经过来回编译了十来次,都可以使用。另外。内核版本升级之后,无线驱动改成了mac802.11,而非以前的wl,以为wl.o这个专门的库只在linux2.4中才用到。)[openwrt@localhost trunk]$ make defconfig[openwrt@localhost trunk]$ make prereq[openwrt@localhost trunk]$ make menuconfig通过文本对话框进行选项配置,最主要的配置项有:Target system(目标系统类型)Package selection(软件包选择)Build system settings (编译系统设置)Kernel modules (内核模块)转载地址:http://zhyca.baihongyu.com/