Openwrt 编译问题及方案记录(实时更新)
- 问题:如何对某个硬件进行全编译,输出所有的ipk文件?
- 解决方案:
删除/home/pangzhai/openwrt/tmp目录及/home/pangzhai/openwrt/.config文件
make menuconfig



make -j5 V=99 IGNORE_ERRORS=m
网上多建议第一次用单线程编译,实际上openwrt编译很容易报错,反正都是失败,第一次编译还不如用多线程高速编译,报错后再单线程定位错误。如果是全量编译,可以忽略编译级包出错问题。实测全编译大约输出8000+ ipk包。
- 问题:编译过程缓慢,很多feed包下载失败
- 解决方案:
编译过程需要下载大量编译文件,大部分文件分散在海外,因涉及长城问题,所以下载缓慢、下载失败都属于正常情况。因为curl下载缓冲五轮,所以一个包可能要尝试5分钟左右。为加快编译速度,可先将dl文件库文件下载到工程目录的dl目录下。
pangzhai@ubuntu:~$ cd openwrt/dl/
pangzhai@ubuntu:/tmp$ wget -r -nd -np https://repository.pangzhai.cn/dl/
- 问题:passwall下的v2ray无法正常工作,基于vmess协议
- 解决方案:
1、首先要确定时间是否同步,时间不同步无法连接。调整时区及时间一致。
2、老版本的v2ray服务器,一般配置了alterId,然而新版本的v2ray中这项配置被删除掉了,造成无法连接。可以在openwrt中手动增加alterId项。
- 通过ssh连接openwrt
- 修改v2ray配置自动生成脚本
- 增加alterId = xx, 其中xx的值与服务器配置一致即可。
vi /usr/lib/lua/luci/model/cbi/passwall/api/gen_v2ray.lua

- 问题:编译时个性化定制方法
- 解决方案:
1、开启无线及修改SSID
- 配置文件路径:lede/package/mac80211/files/lib/wifi/mac80211.sh
- 默认开启无线,把disabled后的参数改成数字0,否则改1 即 option disabled 0
- 修改默认SSID,即 option ssid OpenWrt-suibian
2、修改默认软件源
- 配置路径:lede/package/lean/default-settings/files/zzz-default-settings
#!/bin/sh
uci set luci.main.lang=zh_cn
uci commit luci
uci set system.@system[0].timezone=CST-8
uci set system.@system[0].zonename=Asia/Shanghai
uci commit system
uci set fstab.@global[0].anon_mount=1
uci commit fstab
rm -f /usr/lib/lua/luci/view/admin_status/index/mwan.htm
rm -f /usr/lib/lua/luci/view/admin_status/index/upnp.htm
rm -f /usr/lib/lua/luci/view/admin_status/index/ddns.htm
rm -f /usr/lib/lua/luci/view/admin_status/index/minidlna.htm
sed -i 's/\"services\"/\"nas\"/g' /usr/lib/lua/luci/controller/aria2.lua
sed -i 's/services/nas/g' /usr/lib/lua/luci/view/aria2/overview_status.htm
sed -i 's/\"services\"/\"nas\"/g' /usr/lib/lua/luci/controller/hd_idle.lua
sed -i 's/\"services\"/\"nas\"/g' /usr/lib/lua/luci/controller/samba.lua
sed -i 's/\"services\"/\"nas\"/g' /usr/lib/lua/luci/controller/samba4.lua
sed -i 's/\"services\"/\"nas\"/g' /usr/lib/lua/luci/controller/minidlna.lua
sed -i 's/\"services\"/\"nas\"/g' /usr/lib/lua/luci/controller/transmission.lua
sed -i 's/\"services\"/\"nas\"/g' /usr/lib/lua/luci/controller/mjpg-streamer.lua
sed -i 's/\"services\"/\"nas\"/g' /usr/lib/lua/luci/controller/p910nd.lua
sed -i 's/\"services\"/\"nas\"/g' /usr/lib/lua/luci/controller/usb_printer.lua
sed -i 's/\"services\"/\"nas\"/g' /usr/lib/lua/luci/controller/xunlei.lua
sed -i 's/services/nas/g' /usr/lib/lua/luci/view/minidlna_status.htm
ln -sf /sbin/ip /usr/bin/ip
sed -i 's#downloads.openwrt.org#mirrors.cloud.tencent.com/lede#g' /etc/opkg/distfeeds.conf
sed -i 's/root::0:0:99999:7:::/root:$1$V4UetPzk$CYXluq4wUazHjmCDBCqXF.:0:0:99999:7:::/g' /etc/shadow
sed -i 's/root:::0:99999:7:::/root:$1$V4UetPzk$CYXluq4wUazHjmCDBCqXF.:0:0:99999:7:::/g' /etc/shadow
sed -i "s/# //g" /etc/opkg/distfeeds.conf
sed -i '/openwrt_luci/ { s/snapshots/releases\/18.06.9/g; }' /etc/opkg/distfeeds.conf
sed -i '/REDIRECT --to-ports 53/d' /etc/firewall.user
echo 'iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53' >> /etc/firewall.user
echo 'iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53' >> /etc/firewall.user
echo '[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53' >> /etc/firewall.user
echo '[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53' >> /etc/firewall.user
sed -i '/option disabled/d' /etc/config/wireless
sed -i '/set wireless.radio${devidx}.disabled/d' /lib/wifi/mac80211.sh
sed -i '/DISTRIB_REVISION/d' /etc/openwrt_release
echo "DISTRIB_REVISION='R23.2.14'" >> /etc/openwrt_release
sed -i '/DISTRIB_DESCRIPTION/d' /etc/openwrt_release
echo "DISTRIB_DESCRIPTION='OpenWrt '" >> /etc/openwrt_release
sed -i '/log-facility/d' /etc/dnsmasq.conf
echo "log-facility=/dev/null" >> /etc/dnsmasq.conf
rm -rf /tmp/luci-modulecache/
rm -f /tmp/luci-indexcache
exit 0
- 修改替换命令中的源地址字符串(下面高亮)
- sed -i 's#downloads.openwrt.org#mirrors.cloud.tencent.com/lede#g' /etc/opkg/distfeeds.conf
- 修改版本信息、主机名等也可以在这个文件中进行
- 建议注释掉 sed -i '/openwrt_luci/ { s/snapshots/releases\/18.06.9/g; }' /etc/opkg/distfeeds.conf
- 不注释掉路径不对,opkg update时报错
3、其他配置文件的覆盖
/www/ | luci web页面的目录 |
/etc/banner | 命令行登陆Openwrt的欢迎信息 |
/etc/opkg.conf | Openwrt的opkg更新源配置文件 |
/etc/profile | 系统环境变量 |
/etc/dnsmasq.conf | Dns解析配置文件 |
/etc/config/dhcp | Dhcp服务配置文件 |
/etc/config/firewall | 防火墙配置文件 |
/etc/config/fstab | 文件系统挂载配置文件 |
/etc/config/luci | Luci界面配置文件 |
lede/package/base-files/files/etc/config/system | 系统主机名、时区、NTP及LED配置文件 |
/etc/config/wireless | 无线配置文件 |
- 途径一:
- 修改lede/package/base-files/files/ 下文件,结构类似openwrt中的根目录
- 途径二:
- 在编译目录下新建一个名为files的目录,openwrt在编译的时候,会把files文件夹里的文件覆盖到其根目录 lede/files/
- 途径三:
- 上面修改软件源已经提及,lede源码中通过zzz-default-settings文件修改
- 注意事项:
- 1、要在非root用户下修改
- 2、修改完后将所有目录的访问权限改为777
- 3、可以将路由中的配置导出,放入上述files目录下,不容易出错