• 斐讯K2 mentohust 编译


    我在网络上没有找到合适的mentohust可执行文件,找到的怎么也连接不上校园网。
    只能尝试自己编译了。

    幸运的是,我自己编译的版本,使用正常。你如果使用的设备和我一样,可以直接前往本文末尾,下载我编译好的版本。


    我首先参考的是:KyleRicardo/MentoHUST-OpenWrt-ipk: MentoHUST-OpenWrt-ipk包 这一个项目,他是通过下载OpenWrt 源码来编译的。这样做的速度非常慢,编译一整套工具链,而且还需要下载东西(国外的服务器连接,一言难尽啊)。
    他选择使用源码,可能是由于直接使用SDK会得不到libpcap.a。实际上,这是可以解决的。我最终还是使用的SDK。(源码实在是太慢了)

    准备OpenWrt SDK

    在这里:https://downloads.openwrt.org/releases/ 找到对应版本架构的SDK

    例如我的:https://downloads.openwrt.org/releases/18.06.8/targets/ramips/mt7620/

    wget https://downloads.openwrt.org/releases/18.06.8/targets/ramips/mt7620/openwrt-sdk-18.06.8-ramips-mt7620_gcc-7.3.0_musl.Linux-x86_64.tar.xz
    

    注意文件名,一定是下载SDK。

    解压SDK,进入SDK根目录。以后的操作,没有特殊说明,都是在SDK根目录中

    下载libpcap

    libpcap是mentohust重要的依赖,所以需要libpcap,mentohust才能正常编译

    # 建议使用代理,下载还是挺慢的,在国内
    ./script/feeds update -a
    ./script/feeds install libpcap
    

    下载mentohust,并配置

    # 这里使用的就是之前参考的那个项目的
    git clone https://github.com/KyleRicardo/MentoHUST-OpenWrt-ipk.git package/mentohust
    

    接下来需要配置mentohust

    nano package/mentohust/Makefile
    

    这里需要修改Makefile文件。
    由于在18.06.8版本的SDK中会自动将构建过程中生成的中间文件删除,然而我们的mentohust项目编译又依赖这些中间文件,这就会导致我们的编译失败。

    关闭 menuconfig -> Advanced configuration options (for developers) -> Automatic removal of build directories 功能即可正常编译

    https://github.com/KyleRicardo/MentoHUST-OpenWrt-ipk/issues/2#issuecomment-685219295

    据说可以通过这样的方法关闭,然而在SDK中居然没有Advanced configuration options (for developers) 这个配置选项。
    虽然在 .config 文件中,好像有一行好像可以关闭自动删除。然而,.config 文件不能手动修改,修改了会自动被修复。
    我没有在网上找到关闭的方法。所以,我选择修改mentohust的编译过程。

    在mentohust的正式编译前,将所需要libpcap复制到需要的位置

    define Package/mentohust/description
    A Ruijie Client Daemon,
    Most usually used in China collages.
    endef
    
    define Build/Prepare
    	mkdir -p $(PKG_BUILD_DIR)
    	mkdir -p /home/xiyu/openwrt-sdk-18.06.8-ramips-mt7620_gcc-7.3.0_musl.Linux-x86_64/build_dir/target-mipsel_24kc_musl/libpcap-*/ipkg-install/usr/lib/
    	$(CP) ~/openwrt-sdk-18.06.8-ramips-mt7620_gcc-7.3.0_musl.Linux-x86_64/staging_dir/target-mipsel_24kc_musl/usr/lib/* /home/xiyu/openwrt-sdk-18.06.8-ramips-mt7620_gcc-7.3.0_musl.Linux-x86_64/build_dir/target-mipsel_24kc_musl/libpcap-*/ipkg-install/usr/lib/
    	$(CP) ./src/* $(PKG_BUILD_DIR)/
    	@echo hello
    	$(SED) 's/dhclient/udhcpc -i/g' $(PKG_BUILD_DIR)/myconfig.c
    endef
    
    
    define Package/mentohust/conffiles
    /etc/mentohust.conf
    endef
    

    在上面第八行(不是原Makefile文件),我创建了所需要的目录,在第九行,复制了需要的文件到对应的目录。可以看到,我都是硬编码的。(●'◡'●)

    不知道要不要改libpcap的Makefile 不需要

    编译

    make package/mentohust/compile V=s
    $ tree bin
    bin
    ├── packages
    │   └── mipsel_24kc
    │       └── base
    │           ├── libpcap_1.9.1-1_mipsel_24kc.ipk
    │           └── mentohust_0.3.1-1_mipsel_24kc.ipk
    └── targets
        └── ramips
            └── mt7620
                └── packages
                    ├── libatomic_7.3.0-2_mipsel_24kc.ipk
                    ├── libc_1.1.19-2_mipsel_24kc.ipk
                    ├── libgcc_7.3.0-2_mipsel_24kc.ipk
                    ├── libpthread_1.1.19-2_mipsel_24kc.ipk
                    ├── librt_1.1.19-2_mipsel_24kc.ipk
                    └── libstdcpp_7.3.0-2_mipsel_24kc.ipk
    
    7 directories, 8 files
    

    生成的包会在 SDK/bin/packages/架构/base/目录下

    已编译的适用于K2路由的版本下载

    斐讯K2路由器可用,其他相同架构的路由器(ramips/mt7620)应该也可以使用。

    链接: https://pan.baidu.com/s/1dU_OVZ1zYqcvdvpJdv2X5A 提取码: kgw4

    使用

    # 两个文件
    $ ls | grep ipk
    libpcap_1.9.1-1_mipsel_24kc.ipk
    mentohust_0.3.1-1_mipsel_24kc.ipk
    # 先安装依赖libpcap
    opkg install libpcap_1.9.1-1_mipsel_24kc.ipk
    opkg install mentohust_0.3.1-1_mipsel_24kc.ipk
    

    参考:

    KyleRicardo/MentoHUST-OpenWrt-ipk: MentoHUST-OpenWrt-ipk包

    OpenWrt Project: Using the SDK

  • 相关阅读:
    《C++反汇编与逆向分析技术揭秘》--构造函数 读书笔记
    《C++反汇编与逆向分析技术揭秘》--虚函数 读书笔记
    VPP-main() 源码学习
    【转】几种TCP连接中出现RST的情况
    动态追踪学习
    RCU学习总结
    内核栈回溯原理学习应用
    《C++反汇编与逆向分析技术揭秘》--单类继承 读书笔记
    C# 防火墙操作之创建规则
    C# 防火墙操作之特定程序
  • 原文地址:https://www.cnblogs.com/xiyu714/p/14562567.html
Copyright © 2020-2023  润新知