kernel编译 openwrt_OpenWRT实践3:Click Modular Router
序言
本文我们介绍一下,在OpenWRT平台上运行一个较为轻便有效的软路由系统Click Modular Router,基于该软路由,我们可以扩展一些OpenWRT原有的功能。
Click Modular Router
第一步:获取Click源码,源码可以从官方网站下载(Click官网),也可以下载我们的整理的版本(Click源码包以及Makefile)。其中包含两个文件,一个是源码(click-2.0.1.tar.gz),一个是Makefile,之后我们需要对该Makefile进行手动添加。
第二步:在openwrt源码目录下,建立click文件夹,并将源码剪贴到这个文件夹内。具体添加的目录如下:
/home/openwrt/Desktop/openwrt/package/feeds/packages/click
即在(/home/openwrt/Desktop/openwrt/package/feeds/packages)这个目录下,新建click文件夹,然后将click-2.0.1.tar.gz解压之后的源码(即文件夹内的内容),全数复制到该文件夹内。解压click-2.0.1.tar.gz的指令如下:
tar -zvxf ./click-2.0.1.tar.gz
第三步:修改下载的Makefile,并同样复制到前面第二步新建的目录下。其中需要修改的Makefile部分如下:
#
# Copyright (C) 2006-2012 OpenWrt.org
#
# click Makefile by cqupt
#
#
include $(TOPDIR)/rules.mk
PKG_NAME:=click
PKG_VERSION:=2.0.1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.read.cs.ucla.edu/click/
include $(INCLUDE_DIR)/package.mk
define Package/click
SECTION:=net
CATEGORY:=Network
TITLE:=The Click Modular Router
MAINTAINER:=Roberto Riggio <roberto.riggio@gmail.com>
DEPENDS:=+kmod-tun +libpcap +libstdcpp
URL:=http://www.read.cs.ucla.edu/
endef
define Package/click/Description
The Click Modular Router
endef
CONFIGURE_ARGS +=
--enable-local
--enable-tools=host
--enable-userlevel
--host=mips-linux
--build=mips
--enable-wifi
--disable-linuxmodule
--disable-dynamic-linking
define Build/Compile
$(call Build/Install/Default, install)
endef
define Package/click/install
$(INSTALL_DIR) $(1)/usr/bin
$(CP) ~/Desktop/openwrt/build_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/uClibc-0.9.33.2/lib/librt.so.0 $(1)/usr/bin
$(CP) ~/Desktop/openwrt/build_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/uClibc-0.9.33.2/lib/libpthread.so.0 $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/userlevel/click $(1)/usr/bin/click
$(INSTALL_BIN) $(PKG_BUILD_DIR)/tools/click-align/click-align $(1)/usr/bin/click-align
mkdir -p $(1)/usr/share/click
$(CP) $(PKG_BUILD_DIR)/elementmap.xml $(1)/usr/share/click
endef
$(eval $(call BuildPackage,click))
其中第48行和第49行需要修改为用户对应的目录下,即如下黑体的部分即是要修改的路径。
- $(CP) ~/Desktop/openwrt/build_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/uClibc-0.9.33.2/lib/librt.so.0 $(1)/usr/bin
- $(CP) ~/Desktop/openwrt/build_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/uClibc-0.9.33.2/lib/libpthread.so.0 $(1)/usr/bin
如果不做修改的话,在编译的时候,有可能会报如下的错误:
cp: cannot stat '/home/your_dir/openwrt/build_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/uClibc-0.9.33.2/lib/librt.so.0': No such file or directory
修改完之后,复制到之前的目录下:
/home/openwrt/Desktop/openwrt/package/feeds/packages/click
第四步:在openwrt根目录下,直接编译固件模块
make package/feeds/packages/click/compile V=99
编译后,可以直接把编译完的ipk安装包导入路由,并且进行安装,也在menuconfig中添加click,再将整个固件重新编译。
第五步:进行固件配置(添加选择 <Network - click>模块),如下图
编译完之后注意保存,然后退出。最后添加以下命令,用以取消bridge:
echo '# CONFIG_KERNEL_BRIDGE is not set' >> .config
第六步:重新编译固件,最后再更新路由器即可。
make V=99
本文为原创文章,如需转载须注明出处和原文链接。
欢迎大家关注我们的微信公众号:无线技术大讲堂,请搜索公众号(must_wireless)。