作者:张华 发表于:2015-10-02
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明
( http://blog.csdn.net/quqi99)
买回哦耶路由器之后,自带的openwrt无法安装ipset没法科学上网(说内核不满足大于3.10的要求),折腾了一下后就闲置了好几个月,今天有空打算接着继续玩的时候发现了一些莫名其妙的问题,运行vi报ELF相关的错误,运行uhttpd报sock相关的错误,图形化界面无法登录,不知怎么弄了一下ssh也无法登录了。长按多功能按钮6秒以上重置后总算可以telnet 192.168.1.1 (注意IP已经不是哦耶自带的192.168.8.1了),我们继续。
a, 重置
mount_root
mtd -r erase rootfs_data
reboot -f
telnet 192.168.1.1
passwd root
firstboot
reboot -f
b, 安装luci图形化界面
telnet 192.168.1.1
opkg update && opkg install luci luci-i18n-chinese uhttpd
/etc/init.d/uhttpd enable
/etc/init.d/uhttpd start
c, 从trunk版本编译openwrt
sudo apt-get install git build-essential libncurses5-dev gawk libssl-dev subversion
git clone git://git.openwrt.org/openwrt.git
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
哦耶路由器采用的芯片是MT7620A,故选项如下:
- Target System (Atheros AR7xxx/AR9xxx) -> Ralink RT288x/RT3xxx
- Subtarget (RT3x5x/RT5350 based boards) -> MT7620 based boards
- LuCI -> Collections -> luci(new)
或是树霉派2代,应该是:
target system---broadcom bcm2708/bcm2709 路由芯片
subtarget---bcm2709 based boards 树霉派2代是2709, 1代是2708
target profile---raspberry pi 2 model b 树霉派2代
还可以根据需要配置其他模块
最后是编译,make V=s
也可以做其他设置,以树霉派2代举例(似乎不成功,编译后可以ping,但无法ssh,也无法进luci界面):
1, 添加一个网口
vi target/linux/brcm2708/base-files/etc/uci-defaults/02_network
ucidef_set_interface_lan "eth1"
ucidef_set_interface_wan "eth0"
cat package/base-files/files/etc/config/network
config interface loopback
option ifname lo
option proto static
option ipaddr 127.0.0.1
option netmask 255.0.0.0
config interface lan
option ifname eth1
option type bridge
option proto static
option ipaddr 192.168.1.1
option netmask 255.255.255.0
config interface wan
option ifname eth0
option proto dhcp
2, 默认启用无线
./package/kernel/mac80211/files/lib/wifi/mac80211.sh
# REMOVE THIS LINE TO ENABLE WIFI:
option disabled 0
3, 修改默认密码,默认启动ssh
vi package/network/services/dropbear/files/dropbear.config
option Interface 'wan'
# grep -r 'dropbear' .config
CONFIG_DEFAULT_dropbear=y
CONFIG_PACKAGE_dropbear=y
修改默认密码为admin, vi ./package/base-files/files/etc/shadow
root:$1$wEehtjxj$YBu4quNfVUjzfv8p/PBo5.:0:0:99999:7:::
4, 修改默认连接数
# grep -r 'nf_conntrack_max' ./package/base-files/files/etc/sysctl.conf
net.netfilter.nf_conntrack_max=65535
d, 从luci图形化界面刷新编译的固件,bin/ramips/openwrt-ramips-mt7620-miwifi-mini-squashfs-sysupgrade.bin
e, 刷了之后,telnet和luci图形化界面是进不去了,但可以通过ssh root@192.168.1.1进去。
f, 再像上面的方法安装luci, http://192.168.1.1 root/admin, OK, 成功升级到3.18内核。
root@OpenWrt:~# opkg info kernel
Package: kernel
Version: 3.18.21-1-1f97c10ea8aa04767734a7d078331b28
Depends: libc
Status: install hold installed
Architecture: ramips_24kec
Installed-Time: 1443679359
g, "opkg install ipset"仍然无法安装ipset,这是为什么为什么?
Collected errors:
* satisfy_dependencies_for: Cannot satisfy the following dependencies for ipset:
* kernel (= 3.18.21-1-fcc7ce90f04c481d0d82d4f30471437c) * kernel (= 3.18.21-1-fcc7ce90f04c481d0d82d4f30471437c) *
* opkg_install_cmd: Cannot install package ipset.
加--force-depends参数强制安装成功kmod-ipt-ipset无法配置。
opkg install ipset --force-depends
网上搜索了一下,很多人在此处卡壳了,我在WNDR4300上的openwrt没此问题。估计是cpu架构不同导致的bug吧,看来此路暂时不通。
h, 配置dnsmasq防dns污染, 没法使用ipset就不用吧
修改 /etc/dnsmasq.conf 在最后加入conf-dir=/etc/dnsmasq.d
新建/etc/dnsmasq.d/gfw.conf加入下列内容后重启dnsmasq (/etc/init.d/dnsmasq restart)
server=/google.com/208.67.220.220#443
server=/googlehosted.com/208.67.220.220#443
server=/co.jp/208.67.220.220#443
server=/google.com.hk/208.67.220.220#443
server=/google.com.tw/208.67.220.220#443
server=/google.com.jp/208.67.220.220#443
server=/gstatic.com/208.67.220.220#443
server=/googleusercontent.com/208.67.220.220#443
server=/appspot.com/208.67.220.220#443
server=/googlecode.com/208.67.220.220#443
server=/googleapis.com/208.67.220.220#443
server=/gmail.com/208.67.220.220#443
server=/google-analytics.com/208.67.220.220#443
server=/youtube.com/208.67.220.220#443
server=/blogspot.com/208.67.220.220#443
server=/blogger.com/208.67.220.220#443
server=/ggpht.com/208.67.220.220#443
server=/useso.com/208.67.220.220#443
server=/googlevideo.com/208.67.220.220#443
server=/youtube-nocookie.com/208.67.220.220#443
i, 安装不带spec的shadowsocks (shadowsocks-libev-polarssl_2.4.0-1_ramips_24kec.ipk)
http://sourceforge.net/projects/openwrt-dist/files/shadowsocks-libev/2.4.0-bd77b7b/ramips/
opkg install libpolarssl resolveip
scp /tmp/shadowsocks-libev-polarssl_2.4.0-1_ramips_24kec.ipk root@192.168.1.1:/tmp/
opkg install /tmp/shadowsocks-libev-polarssl_2.4.0-1_ramips_24kec.ipk
j, OpenWrt uses busybox's ash as default, 这样会造成如下问题:
root@OpenWrt:~# ss-redir
-ash: ss-redir: not found
改成bash吧,但在/etc/passwd里将root用户从ash改成bash之后使用ssh登录时说密码不对了,telnet又无法登录。
还好,此时还有之前弄好的图形化界面,反正ipset都是不能用,在图形化界面时恢复成下列哦耶openwrt吧,不再折腾了。
http://downloads.openwrt.org.cn/PandoraBox/OYE-0001/firmware/stable/PandoraBox-ralink-mt7620-oye-0001-squashfs-sysupgrade-r1024-20150608.bin
先按住路由器多功能按钮,再接通电源,10秒后放开,进入UBOOT刷机模式。
网线一根一端接在电脑上(记得将network-manager把该网卡禁掉,不然它总是试图重连而失去IP), 一端接在路由器的LAN口上。
暂时不要用网络接WAN口(否则,好像默认是桥接模式,而不是路由模式,这是一个奇怪的问题,后来改在windows上配置问题消失)
最好将局域网网段改成192.168.8.0/24 (我发现不改在桥接模式下路由器会设置成一个和家里的其他路由器的地址)
在电脑中设置一个192.168.8.0/24段的IP,然后就可以访问http://192.168.8.1/图形化界面进行刷机了(这里也遇过一个奇怪的问题,就是上传的过程中忽然就ping不了192.168.8.1了,后来改在windows上问题消失)。
http://pan.baidu.com/s/1ntIIqoT
k, 使用bash和安装一些基础包
opkg update
opkg install bash ip vim
root@OpenWrt:~# grep -r 'bash' /etc/passwd
root:x:0:0:root:/root:/bin/bash
l, 安装usb驱动重启后,绿联usb2.0有线网卡就可以用了
opkg install kmod-usb-net kmod-usb-net-asix
m, 安装TL-WN725N无线网卡驱动(WN725N的v1版本是rtl8188cus, 而v2版本是8188eu)
opkg install usbutils
root@OpenWrt:~# lsusb |grep Realtek
Bus 001 Device 009: ID 0bda:8179 Realtek Semiconductor Corp.
root@OpenWrt:~# cat /sys/bus/usb/devices/1-1.3/version
2.00
root@OpenWrt:/tmp/work# cat /proc/cpuinfo |grep model
model name : ARMv7 Processor rev 5 (v7l)
opkg install kmod-net-rtl8188eu
ifconfig wlan0 up
a, 重置
mount_root
mtd -r erase rootfs_data
reboot -f
telnet 192.168.1.1
passwd root
firstboot
reboot -f
b, 安装luci图形化界面
telnet 192.168.1.1
opkg update && opkg install luci luci-i18n-chinese uhttpd
/etc/init.d/uhttpd enable
/etc/init.d/uhttpd start
c, 从trunk版本编译openwrt
sudo apt-get install git build-essential libncurses5-dev gawk libssl-dev subversion
git clone git://git.openwrt.org/openwrt.git
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
哦耶路由器采用的芯片是MT7620A,故选项如下:
- Target System (Atheros AR7xxx/AR9xxx) -> Ralink RT288x/RT3xxx
- Subtarget (RT3x5x/RT5350 based boards) -> MT7620 based boards
- LuCI -> Collections -> luci(new)
或是树霉派2代,应该是:
target system---broadcom bcm2708/bcm2709 路由芯片
subtarget---bcm2709 based boards 树霉派2代是2709, 1代是2708
target profile---raspberry pi 2 model b 树霉派2代
还可以根据需要配置其他模块
最后是编译,make V=s
也可以做其他设置,以树霉派2代举例(似乎不成功,编译后可以ping,但无法ssh,也无法进luci界面):
1, 添加一个网口
vi target/linux/brcm2708/base-files/etc/uci-defaults/02_network
ucidef_set_interface_lan "eth1"
ucidef_set_interface_wan "eth0"
cat package/base-files/files/etc/config/network
config interface loopback
option ifname lo
option proto static
option ipaddr 127.0.0.1
option netmask 255.0.0.0
config interface lan
option ifname eth1
option type bridge
option proto static
option ipaddr 192.168.1.1
option netmask 255.255.255.0
config interface wan
option ifname eth0
option proto dhcp
2, 默认启用无线
./package/kernel/mac80211/files/lib/wifi/mac80211.sh
# REMOVE THIS LINE TO ENABLE WIFI:
option disabled 0
3, 修改默认密码,默认启动ssh
vi package/network/services/dropbear/files/dropbear.config
option Interface 'wan'
# grep -r 'dropbear' .config
CONFIG_DEFAULT_dropbear=y
CONFIG_PACKAGE_dropbear=y
修改默认密码为admin, vi ./package/base-files/files/etc/shadow
root:$1$wEehtjxj$YBu4quNfVUjzfv8p/PBo5.:0:0:99999:7:::
4, 修改默认连接数
# grep -r 'nf_conntrack_max' ./package/base-files/files/etc/sysctl.conf
net.netfilter.nf_conntrack_max=65535
d, 从luci图形化界面刷新编译的固件,bin/ramips/openwrt-ramips-mt7620-miwifi-mini-squashfs-sysupgrade.bin
e, 刷了之后,telnet和luci图形化界面是进不去了,但可以通过ssh root@192.168.1.1进去。
f, 再像上面的方法安装luci, http://192.168.1.1 root/admin, OK, 成功升级到3.18内核。
root@OpenWrt:~# opkg info kernel
Package: kernel
Version: 3.18.21-1-1f97c10ea8aa04767734a7d078331b28
Depends: libc
Status: install hold installed
Architecture: ramips_24kec
Installed-Time: 1443679359
g, "opkg install ipset"仍然无法安装ipset,这是为什么为什么?
Collected errors:
* satisfy_dependencies_for: Cannot satisfy the following dependencies for ipset:
* kernel (= 3.18.21-1-fcc7ce90f04c481d0d82d4f30471437c) * kernel (= 3.18.21-1-fcc7ce90f04c481d0d82d4f30471437c) *
* opkg_install_cmd: Cannot install package ipset.
加--force-depends参数强制安装成功kmod-ipt-ipset无法配置。
opkg install ipset --force-depends
网上搜索了一下,很多人在此处卡壳了,我在WNDR4300上的openwrt没此问题。估计是cpu架构不同导致的bug吧,看来此路暂时不通。
h, 配置dnsmasq防dns污染, 没法使用ipset就不用吧
修改 /etc/dnsmasq.conf 在最后加入conf-dir=/etc/dnsmasq.d
新建/etc/dnsmasq.d/gfw.conf加入下列内容后重启dnsmasq (/etc/init.d/dnsmasq restart)
server=/google.com/208.67.220.220#443
server=/googlehosted.com/208.67.220.220#443
server=/co.jp/208.67.220.220#443
server=/google.com.hk/208.67.220.220#443
server=/google.com.tw/208.67.220.220#443
server=/google.com.jp/208.67.220.220#443
server=/gstatic.com/208.67.220.220#443
server=/googleusercontent.com/208.67.220.220#443
server=/appspot.com/208.67.220.220#443
server=/googlecode.com/208.67.220.220#443
server=/googleapis.com/208.67.220.220#443
server=/gmail.com/208.67.220.220#443
server=/google-analytics.com/208.67.220.220#443
server=/youtube.com/208.67.220.220#443
server=/blogspot.com/208.67.220.220#443
server=/blogger.com/208.67.220.220#443
server=/ggpht.com/208.67.220.220#443
server=/useso.com/208.67.220.220#443
server=/googlevideo.com/208.67.220.220#443
server=/youtube-nocookie.com/208.67.220.220#443
i, 安装不带spec的shadowsocks (shadowsocks-libev-polarssl_2.4.0-1_ramips_24kec.ipk)
http://sourceforge.net/projects/openwrt-dist/files/shadowsocks-libev/2.4.0-bd77b7b/ramips/
opkg install libpolarssl resolveip
scp /tmp/shadowsocks-libev-polarssl_2.4.0-1_ramips_24kec.ipk root@192.168.1.1:/tmp/
opkg install /tmp/shadowsocks-libev-polarssl_2.4.0-1_ramips_24kec.ipk
j, OpenWrt uses busybox's ash as default, 这样会造成如下问题:
root@OpenWrt:~# ss-redir
-ash: ss-redir: not found
改成bash吧,但在/etc/passwd里将root用户从ash改成bash之后使用ssh登录时说密码不对了,telnet又无法登录。
还好,此时还有之前弄好的图形化界面,反正ipset都是不能用,在图形化界面时恢复成下列哦耶openwrt吧,不再折腾了。
http://downloads.openwrt.org.cn/PandoraBox/OYE-0001/firmware/stable/PandoraBox-ralink-mt7620-oye-0001-squashfs-sysupgrade-r1024-20150608.bin
先按住路由器多功能按钮,再接通电源,10秒后放开,进入UBOOT刷机模式。
网线一根一端接在电脑上(记得将network-manager把该网卡禁掉,不然它总是试图重连而失去IP), 一端接在路由器的LAN口上。
暂时不要用网络接WAN口(否则,好像默认是桥接模式,而不是路由模式,这是一个奇怪的问题,后来改在windows上配置问题消失)
最好将局域网网段改成192.168.8.0/24 (我发现不改在桥接模式下路由器会设置成一个和家里的其他路由器的地址)
在电脑中设置一个192.168.8.0/24段的IP,然后就可以访问http://192.168.8.1/图形化界面进行刷机了(这里也遇过一个奇怪的问题,就是上传的过程中忽然就ping不了192.168.8.1了,后来改在windows上问题消失)。
http://pan.baidu.com/s/1ntIIqoT
k, 使用bash和安装一些基础包
opkg update
opkg install bash ip vim
root@OpenWrt:~# grep -r 'bash' /etc/passwd
root:x:0:0:root:/root:/bin/bash
l, 安装usb驱动重启后,绿联usb2.0有线网卡就可以用了
opkg install kmod-usb-net kmod-usb-net-asix
m, 安装TL-WN725N无线网卡驱动(WN725N的v1版本是rtl8188cus, 而v2版本是8188eu)
opkg install usbutils
root@OpenWrt:~# lsusb |grep Realtek
Bus 001 Device 009: ID 0bda:8179 Realtek Semiconductor Corp.
root@OpenWrt:~# cat /sys/bus/usb/devices/1-1.3/version
2.00
root@OpenWrt:/tmp/work# cat /proc/cpuinfo |grep model
model name : ARMv7 Processor rev 5 (v7l)
opkg install kmod-net-rtl8188eu
ifconfig wlan0 up