很久之前买了一个小软路由,接触到了Openwrt编译,用lean的代码按照说明操作并不难。不过作为入门小白,多次编译、测试是在所难免的,每次编译完都要重新设置一遍,很是麻烦,于是就想到是不是可以编译时就把配置写好,这样写好系统后直接运行不用在拉根网线专门配置了。
本来编译好的固件稳定下来就不用动了,结果太长时间没动,想重新编译,更新一下系统,结果忘了要修改那些东西了,无奈又重新研究了一遍,这次记录下来,防止再次忘记。
https://github.com/coolsnowwolf/lede
我想解决的问题其实不难
- 修改wan口pppoe自动拨号
- 修改默认lan口ip
经过一番搜索、研究,找到代码中几个位置修改即可
一、修改wan口为pppoe拨号
package/base-files/files/lib/functions/uci-defaults.sh
ucidef_set_interface_wan() {
#dhcp改成pppoe
ucidef_set_interface "wan" ifname "$1" protocol "${2:-dhcp}"
}
二、修改pppoe拨号用户名、密码
package/base-files/files/bin/config_generate
case "$protocol" in
static)
local ipad
case "$1" in
#修改lan口ip
lan) ipad=${ipaddr:-"192.168.1.1"} ;;
*) ipad=${ipaddr:-"192.168.$((addr_offset++)).1"} ;;
esac
netm=${netmask:-"255.255.255.0"}
uci -q batch <<-EOF
set network.$1.proto='static'
set network.$1.ipaddr='$ipad'
set network.$1.netmask='$netm'
EOF
[ -e /proc/sys/net/ipv6 ] && uci set network.$1.ip6assign='60'
;;
dhcp)
# fixup IPv6 slave interface if parent is a bridge
[ "$type" = "bridge" ] && ifname="br-$1"
uci set network.$1.proto='dhcp'
[ -e /proc/sys/net/ipv6 ] && {
uci -q batch <<-EOF
delete network.${1}6
set network.${1}6='interface'
set network.${1}6.ifname='$ifname'
set network.${1}6.proto='dhcpv6'
EOF
}
;;
pppoe)
uci -q batch <<-EOF
set network.$1.proto='pppoe'
#拨号用户名
set network.$1.username='username'
#拨号密码
set network.$1.password='password'
EOF
[ -e /proc/sys/net/ipv6 ] && {
uci -q batch <<-EOF
set network.$1.ipv6='1'
delete network.${1}6
set network.${1}6='interface'
set network.${1}6.ifname='@${1}'
set network.${1}6.proto='dhcpv6'
EOF
}
;;
esac