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 没有下载下来,也是网络的原因,应该再安装一下packagesscripts/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
- 在OpenWRT 源代码目录,package 目录下创建文件夹 pktgram(自己定义),在pktgram下创建src目录,随便找个其他得package,把Makefile拷贝过来,源代码写在src目录下即可。
- 创建好之后,在根目录下
make menuconfig
,在config的Utilities选项下,可以找到自己添加的那个package,选中好后编译,如果编译选项是*
那就会在固件中包含了自己添加的package,(在/usr/sbin下);
在build_dir/packages/base_files/xxx.ipk
- 如果想动态更新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开头得前缀号来按序启动的.