比尔盖子 博客

Buffalo WZR-HP-G450H 刷 OpenWRT

三年前,比尔盖子买了一台 Buffalo WHR-HP-G54,这台路由器是曾经的神器,具有和 Linksys WRT54G 对抗的能力,是 802.11g 路由器的经典。

然而,仅 16 MB 的内存和 4 MB 的闪存,连运行 Linux 3.x 都存在困难,直接导致内核 OOM 杀掉重要进程,从而无限重启。虽然网络上充斥更换内存颗粒的教程,但比尔盖子这样的硬件杀手,即使有热风枪,也不敢下手,否则主板大概就要被我烤糊了。

后来,又使用树莓派充当路由器。ath9k_htc 的 USB 设备虽然开放,然而却有很多 Bugs,导致连接不稳定。就连 OpenWRT 团队,自己打了一堆没有并入内核的补丁,也只能说是基本而不是彻底解决 ath 的问题;发射功率低,信号不好;再加上受限于 USB 2.0 的传输速度(算上树莓派的硬限制,USB 2.0 的理论速度绝对是达不到的);同时,缺少有线接口,导致无线出现问题时无法上网,因此不适合长期使用。

因此,最近便打算购买一款新的路由器。

要求:

  • 802.11n, MIMO

    速度、信号。

  • 32 MB 内存

  • 尽量不要有闭源模块和 Firmware

    Buffalo WHR-HP-G54 的 Linux 2.4 无线驱动就是闭源的,社区版驱动为独立开发,导致普遍认为 Linux 2.4 的无线要比 Linux 2.6 性能更好…… Run OPENWrt on a CLOSED platform? No way!

  • 可运行最新的 Linux 内核

    某些路由器可以运行在 OpenWRT 上,但只能运行较旧版本的内核。

正巧,看上了 Free Software Foundation 使用的 WZR-HP-G300NH,正好满足上述全部条件。但 WZR-HP-G300NH v1 已经停产,由 v2 硬件修订版替代,配置大大缩水。国内任何地方都买不到,Amazon.com 上只能购买到 v2,Amazon.co.jp 可以购买到二手,但卖家限定国内发货……

最后,正考虑是否应该从 FSF 那里买一台过来时,从 OpenWRT Wiki 看到了一款类似的型号,WZR-HP-G450H 于是便入了。

刷 OpenWRT

WZR-HP-G450H 的作风,同 WHR-HP-G54 等其它系列机器是一样的,开机时,Bootloader 会给你几秒钟时间上传 Firmware,这样一来,由于刷机不依赖任何固件,无论如何也不可能变砖。然而,WZR-HP-G450H 的时间窗口更难掌控,网络的配置也更加复杂,显然是为了防止轻易被刷。

工具

刷机之前,需要准备一些必要工具。常见的工具,如 OpenSSH,我不会列出。

指令

事先,把路由器只留一个 LAN 口,连接电脑,放在自己能观察到 LAN 指示灯的地方,断电。

把 enp5s0 换成自己的有线网卡设备名,如 eth0;tftp 使用的是 tftp-hpa,如果你使用其它客户端,请使用相应语法替代。

# 首先,关闭系统中任何网络管理器,依系统不同而不同
systemctl stop NetworkManager

# 设置本机 IP、子网掩码
ifconfig enp5s0 192.168.11.2
ifconfig enp5s0 netmask 255.255.255.0

# 添加静态路由,此 MAC 地址是 Bootloader 中设置的维护用地址,不要把它替换成你设备的 MAC。
arp -s 192.168.11.1 02:aa:bb:cc:dd:23

# 设置网卡为百兆以太网、全双工(某些奇葩的失败可通过此方法解决,不过这一步似乎不必要)
ethtool -s enp5s0 speed 100 duplex full

# 启动 tftp 客户端
tftp 192.168.11.1
tftp > verbose
tftp > binary
tftp > trace
tftp > rexmt 
tftp > timeout 60

# 路由器加电,此时按下回车。
# 如果使用其它 tftp 客户端,你可能没有自动重试机会,你需要观察路由器的指示灯,
# 路由器的网络接口 LED 会经历全亮、只有连接的 LAN 亮、可能会闪烁、LAN LED 灭、LAN LED 再亮的瞬间,发出指令。
tftp > put openwrt-ar71xx-generic-wzr-hp-g450h-squashfs-tftp.bin

# 随后,固件会完成传输,等 Diag 红色指示灯不再闪烁,刷机即完成。

初始配置

此时,OpenWRT Linux 已经开始运行,但没有 DHCP 服务器、SSH 服务器、Web 界面,会给你一种刷坏掉的假象。

# 配置网络
ifconfig enp5s0 192.168.1.2
ifconfig enp5s0 netmask 255.255.255.0
route add default gw 192.168.1.1

# 连接
telnet 192.168.1.1

# 设置 root 密码
(telnet) passwd

# 重启
reboot

一旦你设置了 root 密码,接下来 OpenWRT 将会进入标准模式,启动 SSH 和 DHCP 服务器。此时,可以把网络管理器重新启动了

systemctl start NetworkManager

进一步配置

设置 PPPoE?启用无线模块?配置 LED 行为?请阅读 OpenWRT Wiki。

P.S:14.07 RC1 – Barrier Breaker 的软件包构建未完成,将在正式版时完成,现软件仓库里缺少大量软件,影响使用,相信等正式版发布时就不是问题了。

Categories: IT生活, Linux

GRUB 2 里的 play 命令 » « 服务器 SSH 端口变更

5 Comments

  1. (44) (…)zaczynamy coÅ› przemilczać, wypowiadać siÄ™ niby szczerze, ale nie do koÅ„ca… it)&s#8230;.pLogo(ie, jak rozumiem masz na myÅ›li sÅ‚ynne „bÄ…dź sobÄ…”?O nie, lepiej żeby przemilczeć, powÅ›ciÄ…gnąć i czasami dać sobie spokój ze szczeroÅ›ciÄ…. UmiejÄ™tność umiaru i kontroli wÅ‚asnych zachowaÅ„ to w zasadzie podstawa wszelkiej kultury i socjalizacji. Tak wiec nie „bÄ…dź sobÄ…” podstawÄ… spokoju spoÅ‚ecznego

  2. 你可以买一个百度的newifi,官方支持openwrt

  3. 我觉得第三方的路由器固件无论性能还是稳定性都不如原生

  4. 那我是不是要等正式版了再刷?先刷DD-WRT玩?

发表评论

Your email address will not be published.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

Copyright © 2018 比尔盖子 博客

Theme by Anders NorenUp ↑