当前位置: 首页 > news >正文

kernel编译 openwrt_OpenWRT实践3:Click Modular Router

0c9ca5b2e58acb5f0a1dcab92aba3f72.png

序言

本文我们介绍一下,在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>模块),如下图

95a591fda5ff9d1209e610a4c76c7349.png

1ae37c994a7cfb52bdf2328bd6452986.png

编译完之后注意保存,然后退出。最后添加以下命令,用以取消bridge:

echo '# CONFIG_KERNEL_BRIDGE is not set' >> .config

第六步:重新编译固件,最后再更新路由器即可。

make V=99

本文为原创文章,如需转载须注明出处和原文链接。

9d9eec85cc614903d1d06dcc055bd235.png

欢迎大家关注我们的微信公众号:无线技术大讲堂,请搜索公众号(must_wireless)。

相关文章:

  • 关于Mercurial(Hg)
  • python异常处理机制_错误处理
  • 十进制浮点数的表示方法
  • python工作可以做什么菜_python3 特色菜
  • Evolution3D 的svn搬迁。
  • python网络自动化实例_python 自动化之路 day 08_2 网络编程
  • 新年了。今年Evolution3D要做的事
  • python组合数计算cmnn_求计算机大佬解答python题
  • hex字符串转byte数组 c_高频golang面试题:字符串转成byte数组,会发生内存拷贝吗?
  • 程序员考核的五大死因(上)
  • html怎么做图片自动轮播_自动果蔬售卖机作为载体的社区新零售怎么做?
  • 移动设备管理与OMA DM 协议 V5(3)
  • python直接调用类方法_python中可以直接用类调用方法吗
  • liferay5.2.3 删除7cogs样例
  • c++ class struct同名_结构体的各种使用方法详细讲解-cc++
  • @jsonView过滤属性
  • ECS应用管理最佳实践
  • go append函数以及写入
  • javascript数组去重/查找/插入/删除
  • js如何打印object对象
  • magento2项目上线注意事项
  • React-flux杂记
  • SSH 免密登录
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 关于Java中分层中遇到的一些问题
  • 诡异!React stopPropagation失灵
  • 汉诺塔算法
  • 聊一聊前端的监控
  • 入手阿里云新服务器的部署NODE
  • 世界上最简单的无等待算法(getAndIncrement)
  • 我看到的前端
  • 一道面试题引发的“血案”
  • 找一份好的前端工作,起点很重要
  • 带你开发类似Pokemon Go的AR游戏
  • 如何正确理解,内页权重高于首页?
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #QT(智能家居界面-界面切换)
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (poj1.2.1)1970(筛选法模拟)
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (七)Java对象在Hibernate持久化层的状态
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (正则)提取页面里的img标签
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET 4.0中的泛型协变和反变
  • .NET Core中的去虚
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理