很久之前買了一個小軟路由,接觸到了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