另外的,我的开发板是芒果派 MQ-R F133。
qianchenzhumeng 发布的帖子
-
回复: 在menuconfig页面上启用luci后编译失败
@xiaowen 我还遇到了
luci
无法和ubus
建立连接的问题,不过已经解决掉了,原因是 sdk 里面,默认的启动进程是init
,需要替换成procd
,ubusd
才能正常工作,luci
才能和ubus
通信。否则网页上就会报如下错误:/usr/lib/lua/luci/dispatcher.lua:460: Failed to execute function dispatcher target for entry '/'. The called action terminated with an exception: /usr/lib/lua/luci/util.lua:610: Unable to establish ubus connection stack traceback: [C]: in function 'assert' /usr/lib/lua/luci/dispatcher.lua:460: in function 'dispatch' /usr/lib/lua/luci/dispatcher.lua:141: in function </usr/lib/lua/luci/dispatcher.lua:140>
走了好多弯路。
最开始是想让usbd
跑起来,但是手动启动会报错:usbd & usock: no such file or directory
看了
ubus
的源码,尝试在/var
下创建run
目录后,再手动启动usbd
能够成功:mkdir /var/run ubusd &
但是
luci
会报另外的错误:Status: 500 Internal Server Error /usr/lib/lua/luci/dispatcher.lua:460: Failed to execute function dispatcher target for entry '/'. The called action terminated with an exception: /usr/lib/lua/luci/template.lua:97: Failed to execute template 'sysauth'. A runtime error occured: /usr/lib/lua/luci/template.lua:97: Failed to execute template 'header'. A runtime error occured: /usr/lib/lua/luci/template.lua:97: Failed to execute template 'themes/bootstrap/header'. A runtime error occured: [string "/usr/lib/lua/luci/view/themes/bootstrap/hea..."]:150: attempt to index local 'boardinfo' (a nil value) stack traceback: [C]: in function 'assert' /usr/lib/lua/luci/dispatcher.lua:460: in function 'dispatch' /usr/lib/lua/luci/dispatcher.lua:141: in function </usr/lib/lua/luci/dispatcher.lua:140>
监听
ubus
发现,luci
从ubus
查询一些信息的时候,ubus
返回找不到:ubus monitor -> b40158cc #b40158cc hello: {} <- b40158cc #00000000 lookup: {"objpath":"session"} -> b40158cc #00000000 status: {"status":4} <- b40158cc #00000000 lookup: {"objpath":"system"} -> b40158cc #00000000 status: {"status":4}
之后找到一篇分析 openwrt 启动顺序的文章:《OpenWrt 启动顺序》,里面提到
procd
启动的时候要连接ubus
,于是按这个帖子把启动进程换成了procd
:《Tina procd-init 与 busybox-init 切换》,之后就好了,luci
可以用了。 -
回复: tina_sdk 如何使用mosquitto进行mqtt通信?
@qianchenzhumeng 在 tina_sdk 如何使用mosquitto进行mqtt通信? 中说:
未定义的那些符号应该是旧版
openssl
的接口。在Tina-Linux
的menuconfig
中使能openssl
编译,并启用兼容过时接口选项,设置兼容至1.0.0
版本(依据是openssl-1.1.0i/Configure
中的$apitable
,版本号必须是$apitable
中有的,否则编译不过)。这样做之后,应该就可以找到了。 -
回复: tina_sdk 如何使用mosquitto进行mqtt通信?
未定义的那些符号应该是旧版
openssl
的接口。在Tina-Linux
的menuconfig
中使能openssl
编译,并启用兼容过时接口选项,设置兼容至1.0.0
版本(依据是openssl-1.1.0i/Configure
中的$apitable
,版本号必须是$apitable
中有的,否则编译不过)。这样做之后,应该就可以找到了。 -
回复: t113(tina)加入paha.mqtt.c库,编译成固件烧录到板子上后报错找不到动态库
两种方法:
- 链接的时候静态连接。
- 把库打到镜像里面:
pack
前把库放到rootfs/lib
里面去(lunch
后输入crootfs
命令可以进入rootfs
目录),然后再pack
。
-
回复: 编译应用程序报错arm-openwrt-linux-muslgnueabi/bin/ld: cannot find -lanl
为
musl
编译的时候,把CMakeLists.txt
中的anl
删掉即可:https://github.com/qianchenzhumeng/iot_gw#1-找不到-libanl -
回复: WSL1 Ubuntu-16.04下编译成功,pack时提示dragon无法运行
wsl1 不支持运行 32 位的二进制文件,升级成 wsl2 就可以了。
# 查看名称和版本号 wsl -l -v
比如:
NAME STATE VERSION * Ubuntu Running 1 Ubuntu-18.04 Stopped 2
设置版本:
wsl --set-version Ubuntu 2
等个几分钟就可以了。
-
回复: 在menuconfig页面上启用luci后编译失败
编
rpcd
可能还会在链接时遇到crypt
函数未定义的错误,需要增加链接标志,链接crypt
库:rpcd: Explicitly link with lcrypt -
回复: 在menuconfig页面上启用luci后编译失败
我编 f133 版本的时候也遇到这个问题了,怀疑是工具链的问题,认为
uint16_t
的port->port_min
和port->port_max
的最大值是2147483647
。比较快的方法是修改一下源码,找到
firewall-2016-01-29
文件夹下所有包含65535
字符串的行,把65535
修改成2147483647
就可以了,其实就是把buf
改大一点。
应该也可以把告警转错误的编译选项Werror
去掉,不过我还没找到地方。grep "65535" ./out/f133-mq_r/compile_dir/target/firewall-2016-01-29/ -nr
修改后是这样的:
grep "2147483647" ./out/f133-mq_r/compile_dir/target/firewall-2016-01-29/ -nr ./out/f133-mq_r/compile_dir/target/firewall-2016-01-29/iptables.c:835: char buf[sizeof("2147483647:2147483647\0")]; ./out/f133-mq_r/compile_dir/target/firewall-2016-01-29/redirects.c:348: char buf[sizeof("2147483647-2147483647\0")]; ./out/f133-mq_r/compile_dir/target/firewall-2016-01-29/redirects.c:367: char buf[sizeof("255.255.255.255:2147483647-2147483647\0")]; ./out/f133-mq_r/compile_dir/target/firewall-2016-01-29/utils.c:570: char buf[sizeof("2147483647-2147483647\0")]; ./out/f133-mq_r/compile_dir/target/firewall-2016-01-29/snats.c:275: char buf[sizeof("255.255.255.255:2147483647-2147483647\0")];
就可以编过了。
我也是想用
luci
才遇到这个问题的,但是不光是这个问题,即便编译过了,烧录启动后,浏览器访问时,lua
会提示连接ubus
有问题,顺着这个下去,发现ubusd
也无法运行。路好像还很长。