• Openwrt Image Builder/SDK 初探


    image builder和SDK既可以从官网上下载,又可以自己进行编译(make menuconfig)。
    官网上下载的是预先帮你编译好的,这样可以大量节省自己编译源码花的时间,
    这两个东西相当于半成品,最后的东西还是要你自己生成的。
    开发流程如下:


    在编译时将image builder和sdk这两项勾上之后,它们就可以被编译出来的。
    当然也可以从官网下载,不过官网编译出来的包只支持X64


    最下面两个就是Image builder和SDK。

    然后将它们分别解压,名字太长了,改的短一点:

    这里的目录和Openwrt源码包是差不多的,不过Image builder只有打包功能,所以
    不需要toolchain,只需要打包的一些工具和预编译好的一些二进制文件。

    这里的packages目录和Openwrt源码不一样,这里是预先编译好的ipk,
    而openwrt里面的packages目录是用来存放ipk包的一些Makefile和patch。

    开始打包,首先,用make info来查看当前已经有的profile,也就是预定义的型号信息:

    make info > info.txt

    这里会输出很多行,这里选择一些自己感兴趣的行:

    Current Target: "ar71xx (Generic)"
    Default Packages: base-files libc libgcc busybox dropbear mtd uci opkg netifd fstools kmod-gpio-button-hotplug swconfig kmod-ath9k wpad-mini uboot-envtools dnsmasq iptables ip6tables ppp ppp-mod-pppoe kmod-nf-nathelper firewall odhcpd odhcp6c
    Available Profiles:
    
    Default:
        Default Profile (all drivers)
        Packages: kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-ledtrig-usbdev
    Minimal:
        Minimal Profile (no drivers)
        Packages: -kmod-ath9k -wpad-mini
    ath5k:
        Atheros 802.11abg WiFi (ath5k)
        Packages: kmod-ath5k -kmod-ath9k
    CARAMBOLA2:
        Carambola2 board from 8Devices
        Packages: kmod-usb-core kmod-usb2
    ALFAAP96:
        ALFA Network AP96 board
        Packages: kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-rtc-pcf2123
    HORNETUB:
        ALFA Network Hornet-UB board (8MB flash, 32MB ram)
        Packages: kmod-usb-core kmod-usb2 kmod-ledtrig-usbdev
    HORNETUBx2:
        ALFA Network Hornet-UB-x2 board (16MB flash, 64MB ram)
        Packages: kmod-usb-core kmod-usb2 kmod-ledtrig-usbdev
    ALFANX:
        ALFA Network N2/N5 board
        Packages: 
    TLWA901:
        TP-LINK TL-WA901N/ND
        Packages: 
    TLWDR4300:
        TP-LINK TL-WDR3500/3600/4300/4310/MW4350R
        Packages: kmod-usb-core kmod-usb2 kmod-ledtrig-usbdev
    TLWDR4900V2:
        TP-LINK TL-WDR4900v2
        Packages: kmod-usb-core kmod-usb2 kmod-ledtrig-usbdev
    TLWR740:
        TP-LINK TL-WR740N/ND
        Packages: 
    TLWR741:
        TP-LINK TL-WR741N/ND
        Packages: 
    TLWR743:
        TP-LINK TL-WR743N/ND
        Packages: 
    TLWR841:
        TP-LINK TL-WR841N/ND
        Packages: 

    这些列表应该是从根目录下面的.targetinfo提取的(文件管理器会把它隐藏)

    其中Default Packages是默认会编译进二进制文件的ipk。然后下面每一个型号对应的
    Packages是自己要增加的package


    可以看到里面有TLWR740,那么开始编译:


    make image PROFILE="TLWR740"

    可以看到生成了一个bin文件夹。

    准备开始刷机,刷机之前的系统(水星MW150R):

    刷机之后:

    原来是没有安装luci。
    telnet成功,进一步说明了已经刷好了,但是缺少luci。

    这里已经为我们准备好了luci:

    那么将这些东西编译进去吧:

    make image PROFILE="TLWR740" PACKAGES="luci-app-firewall luci-base luci-lib-ip luci-lib-nixio luci-mod-admin-full luci-proto-ppp luci-theme-bootstrap luci"

    现在编译出来的bin从2.87MB涨到3.3MB了:

    刷完之后luci出现了:

    接下来用SDK做一个helloworld:

    参考资料:http://jphome.github.io/blog/2014/03/29/openwrt_sdk.html

    新建好相应的文件和目录之后,使用make V=99来生成:
    最后得到一个ipk文件

    把它编译进去:

    make image PROFILE="TLWR740" PACKAGES="luci-app-firewall luci-base luci-lib-ip luci-lib-nixio luci-mod-admin-full luci-proto-ppp luci-theme-bootstrap luci helloworld"

    刷完固件之后发现它已经在里面了。

    然后执行helloword(可能telnet出问题了,h没有显示出来)

    参考资料:

    https://cokebar.info/archives/90

    http://demon.tw/hardware/image-generator-image-builder-openwrt.html

    http://blog.berry10086.com/Tech/Openwrt/tips-about-customize-openwrt/

    http://www.it165.net/network/html/201303/1004.html

  • 相关阅读:
    关于vue中的语法糖v-model
    Cocos2d-x shader学习1: 灰度shader
    nginx多域名配置
    lua和c的亲密接触
    LeetCode 2. Add Two Numbers 解题报告
    LeetCode 1. Two Sum 解题报告
    【翻译】LPeg编程指南
    Cocos2d-x中的CC_CALLBACK_X详解
    C++ 11 学习3:显示虚函数重载(override)
    C++ 11 学习2:空指针(nullptr) 和 基于范围的for循环(Range-based for loops)
  • 原文地址:https://www.cnblogs.com/tanhangbo/p/4559168.html
Copyright © 2020-2023  润新知