OpenWRT 开发小记

最近这段时间一直在使用OpenWRT 做一些开发工作,我把这个过程中遇到的一些问题记录下来,希望以后可避免这些问题的出现,同时也为后来者提供一些建议.

编译过程中遇到的问题
  • 编译过程中容易出现以下的现象
1. recipe for target xxxxx failed 
2. Unable to connect to a repository ....

出现这种情况多半是网络的问题,在OpenWRT编译的过程中,需要下载文件,下载失败了可能导致编译不通过。不过没关系,如果编译不通过再执行一次make V=99;直到下载完成,编译通过。

  • 编译过程中,不能是root用户编译,否则容易出错
  • make menuconfig时,找不到lua编译选项,这是因为 package 没有安装全,Lua相关的package 没有下载下来,也是网络的原因,应该再安装一下packages scripts/feeds update , scripts/feeds install -a 必须确保Lua相关的packages 下载下来,如果下载失败,那就需要到OpenWRT根目录下的
开启和配置WIFI

/etc/config/wireless中可以修改,或者是在源代码目录–package/kernel/mac80211/files/lib/wifi目录下编辑mac80211.sh中修改,

config wifi-device radioxxx
    option type   mac80211
    option channel xxxx
    option hwmode  xxxx
    option disabled 0 //设置为0就代表开启,设置为1代表关闭WIFI 

config wifi-iface 
    option device     radioxxx
    option network    lan
    option mode       ap //此处设置WIFI 为AP热点
    option ssid       xxxx //WIFI的名字
    option encryption psk //设置加密方式
    option key        xxxxxx//设置WIFI的口令
OpenWRT WEB

OpenWRT 编写pacakge
  1. 在OpenWRT 源代码目录,package 目录下创建文件夹 pktgram(自己定义),在pktgram下创建src目录,随便找个其他得package,把Makefile拷贝过来,源代码写在src目录下即可。
  2. 创建好之后,在根目录下make menuconfig,在config的Utilities选项下,可以找到自己添加的那个package,选中好后编译,如果编译选项是*那就会在固件中包含了自己添加的package,(在/usr/sbin下);
    build_dir/packages/base_files/xxx.ipk
  3. 如果想动态更新ipk,可以将ipk通过sftp传送到板子上,opkg install xxx.ipk安装该程序即可,安装得程序在/usr/sbin
OpenWRT 设置自启动

在/etc/init.d下创建启动文件,比如说iotsec,在里面编辑

#!/bin/sh /etc/rc.common
# start file of iotsecurity
START=99

start(){
    /usr/sbin/iotsecurity /mnt/config &
}

stop(){
    kill -u iotsecurity
}

注意,要将脚本的权限改为可执行, chmod +x iotsecurity,建立好脚本以后,在/etc/rc.d/下创建一个对iotsec的连接ln -s /etc/init.d/iotsec /etc/rc.d/S99iotsec 注意,一定要加上前缀S+启动号,因为Linux在启动时是根据根据这S开头得前缀号来按序启动的.