小米路由刷 OpenWRT – 配置

因为实在受不了各种掉线、不自动连接等烦人的事情,一怒之下再次作死把自己的小米路由器 Mini 刷成了 OpenWRT。下面记录一下都干了什么。

更新软件源

OpenWRT 是一个完整的 Linux 系统,有自己的包管理系统,很多软件都可以直接从包管理器里面下载安装。

在后台的 系统 - 软件包 内有一个 “刷新列表”,点击、等待即可。

这里要说明一下,目测获取来的软件包列表信息是存储在内存当中的,重启路由器后需要重新获取软件包列表。

官方默认源不是特别稳定。建议把默认源注释掉,然后换成中科大的镜像。

#src/gz chaos_calmer_base http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7620/packages/base
#src/gz chaos_calmer_luci http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7620/packages/luci
#src/gz chaos_calmer_packages http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7620/packages/packages
#src/gz chaos_calmer_routing http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7620/packages/routing
#src/gz chaos_calmer_telephony http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7620/packages/telephony
#src/gz chaos_calmer_management http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7620/packages/management
src/gz chaos_calmer_base http://mirrors.ustc.edu.cn/openwrt/chaos_calmer/15.05.1/ramips/mt7620/packages/base
src/gz chaos_calmer_luci http://mirrors.ustc.edu.cn/openwrt/chaos_calmer/15.05.1/ramips/mt7620/packages/luci
src/gz chaos_calmer_packages http://mirrors.ustc.edu.cn/openwrt/chaos_calmer/15.05.1/ramips/mt7620/packages/packages
src/gz chaos_calmer_routing http://mirrors.ustc.edu.cn/openwrt/chaos_calmer/15.05.1/ramips/mt7620/packages/routing
src/gz chaos_calmer_telephony http://mirrors.ustc.edu.cn/openwrt/chaos_calmer/15.05.1/ramips/mt7620/packages/telephony
src/gz chaos_calmer_management http://mirrors.ustc.edu.cn/openwrt/chaos_calmer/15.05.1/ramips/mt7620/packages/management

安装语言包

OpenWRT 刷好之后,默认是英文的。对于母语非英语而且英语又很渣的我来说,语言包是必需品。LuCi 里面提供的语言包种类丰富,在后台直接安装下面这个软件包:

luci-i18n-base-zh-cn

安装后,到 “系统 - 系统 - 语言和界面” 里面将语言设置为 普通话(Chinese) 即可。

开启 WiFi

你可是个无线路由器啊,不开 Wifi 等于自废武功。

网络 - 无线 里面设置好 Wifi 后还需要在主界面上手动启用一下才可以。我不会设置 “2.4G - 5G 双频合一”,再加上双频合一之后好像不太稳定,就分别给两个 Wifi 使用不同的名字 MyNetMyNet-5G。这样如果 iPhone 5C 连接上了 5G 之后就不会掉线去找 2.4G 了。

Aria2 下载

Aria2 用于压榨路由器的下载能力。后台安装 aria2 即可。然后按照 这篇文章 里面的步骤进行设置,即可享受到不错的下载体验。

aria2

完整版 wget

OpenWRT 自带的 wget 是 busybox 模拟的,所以有些东西支持不全,比如不支持 https。同时这也会导致 aria2 不能下载 https 的东西,很奇怪。

安装下面的几个软件就可以完美解决此问题了。

wget
ca-certificates

U 盘挂载

路由器内只有 10MB 的存储空间(?),想下载东西的话还得靠 U 盘。准备一个 U 盘,在 Linux 下格式化为 ext4 分区格式。

为什么不格式化成 NTFS 呢?因为 OpenWRT 对 NTFS 支持不是特别好,NTFS 不仅设置麻烦、无法自动挂载,而且挂载出来还是只读的。我一直在用 ext4 分区格式在 Linux 下面都是通用的,Win 安装 ext2fsd 就可以读取 ext4 分区内的东西了

安装一些软件:

block-mount
kmod-usb-storage
kmod-usb-storage-extras
kmod-usb2
kmod-usb3
kmod-usb-uhci
kmod-usb-ohci
kmod-fs-ext4
kmod-lib-crc32c
kmod-crypto-crc32c
usbutils

这些都是系统内核模块,提供 USB 挂载、特定格式分区读写的支持。

之后创建挂载点。个人喜欢把挂载点放在 /home

// 创建文件夹
mkdir /home
// 禁止在未挂载时写入(并没有用……)
touch /home/USB_DISK_NOT_PRESENT
chmod 555 /home
chmod 444 /home/USB_DISK_NOT_PRESENT
// 挂载并改权限
mount /dev/sda1 /home
chmod 777 /home

在准备 U 盘的时候,还可以分出来一个很小的 swap 分区。我是在 32G 的 U 盘里面分出来了 50MB 的地盘当作 swap。swap 的作用是在内存不够的时候把磁盘当内存来用。

Transmission

旧版本的 Aria2 是可以下载 BT 的,但新版本好像砍掉了这个功能。那就用 Transmission 来代替吧。Transmission 还可以用来挂 PT。

luci-app-transmission
transmission-daemon
luci-i18n-transmission-zh-cn

Transmission 是有 Web 管理工具的,不过由于我系统是 Linux,在电脑上安装 transmission-remote-gtk 这个小软件即可完美管理远程 Transmission。

IPv6

好像不是特别成功

ip6tables 
kmod-ipv6 
kmod-ipt-nat6 
kmod-ip6tables 
kmod-ip6tables-extra 
luci-proto-ipv6 
iputils-traceroute6

如果想获取原生 IPv6 地址,需要找到 LAN 设置,将 IPv6 设置里面的东西全都改成「relay(中继)」,去掉设置页面上的 IPv6 前缀,然后再在防火墙区域里面将 LAN 和 WAN6 连接起来。

其他教程见这里

Samba(不推荐使用)

之前买小米路由就因为它有 Samba 功能。在这里需要自己搭建一下了。首先还是下载软件:

samba36-server
luci-app-samba
luci-i18n-samba-zh-cn

然后是一些配置:

  1. 服务 - 网络贡献 - 编辑模板 里面,注释掉 invalid users = root
  2. 添加一个共享目录。共享目录我选择到了 /home。用户方面,懒的话可以选择 “允许匿名用户”。我是选择了允许用户为 root。权限不懂,留空。
  3. SSH 上去,smbpasswd -a root 设置密码。这是 root 用户的 samba 的密码,不是 root 用户的 ssh 密码。

FTP(同上,不推荐使用)

有了 FTP,管理文件会比 Samba 方便一点,毕竟 samba 只能管理共享目录里面的文件。

FTP 有很多种选择,因为我懒,加上只有我一个人在用 FTP,故直接用了 SFTP。需要安装下面这个软件包:

openssh-sftp-server

sftp 是免配置的。安装好之后,使用 filezilla 之类的软件就可以登上去玩了。我上传了一个 Aria2 的 Web 管理工具。

入口

浏览器中输入路由器的地址,会直接跳转到 http://192.168.1.1/cgi-bin/luci/。看了一下原理:在 www 目录下有 index.html,里面是一个跳转语句。既然它能展现 html,为何不把这个入口利用起来呢?把管理工具的链接都放进来,就不用每次都输入路径了。

<!DOCTYPE html>
<html lang="zh-CN">
 <head>
  <meta charset="utf-8" />
  <title>OpenWRT</title>
  <!--[if lt IE 9]><script src="/luci-static/bootstrap/html5.js"></script><![endif]-->
  <meta name="viewport" content="initial-scale=1.0" />
  <link rel="stylesheet" href="/luci-static/bootstrap/cascade.css" />
  <link rel="stylesheet" media="only screen and (max-device-width: 854px)" href="/luci-static/bootstrap/mobile.css" type="text/css" />
  <link rel="shortcut icon" href="/luci-static/bootstrap/favicon.ico" />
  <script src="/luci-static/resources/xhr.js"></script>
 </head>
 <body>
  <header>
   <div class="fill">
    <div class="container">
     <a class="brand" href="#">OpenWRT</a>
    </div>
   </div>
  </header>
  <div id="maincontent" class="container">
   <div class="cbi-map" id="cbi-fstab">
    <h2><a id="content" name="content"> 应用选择 </a></h2>
    <!-- tblsection -->
    <fieldset class="cbi-section" id="cbi-table-table">
     <div class="cbi-section-descr"></div>
     <div class="cbi-section-node">
      <table class="cbi-section-table">
       <tbody>
        <tr class="cbi-section-table-titles">
         <th class="cbi-section-table-cell"> 名称 </th>
        </tr>
        <tr class="cbi-section-table-row cbi-rowstyle-1" id="cbi-table-1">
         <td class="cbi-value-field"> <a href="/cgi-bin/luci">LuCI 管理面板 </a></td>
         <td class="cbi-value-field"> </td>
        </tr>
        <tr class="cbi-section-table-row cbi-rowstyle-2" id="cbi-table-6">
         <td class="cbi-value-field"> <a href="/aria2">Aria2 下载器 </a></td>
        </tr>
       </tbody>
      </table>
     </div>
    </fieldset>
    <!-- /tblsection -->
    <br />
   </div>
  </div>   
 </body>
</html>

为了节省路由器的空间,我把所有的管理工具都放在了 /home 里面,然后在 /www 里面做软连接。

写在最后

dmesg 可以查看各种错误信息,有时挺有用的。

OpenWRT 确实很折腾,而且刷了 OpenWRT 之后,小米路由器的特色功能也丢掉不少,比如远程下载。由于手机电脑都有东西可以实现佛跳墙,所以没有在路由器上进行配置。

关于路由器监控…… 我们为什么要天天冲上路由器去看状态呢?就像,买了个电灯泡,为什么要用一个东西天天监测它的灯丝温度、通过电流、灯丝损耗是多少呢?有意义么?

安安静静地在角落里默默工作吧!


一个命令安装本文所有软件

opkg install luci-i18n-base-zh-cn aria2 block-mount kmod-usb-storage kmod-usb-storage-extras kmod-usb2 kmod-usb3 usbutils kmod-usb-uhci kmod-usb-ohci kmod-fs-ext4 kmod-lib-crc32c kmod-crypto-crc32c luci-app-transmission transmission-daemon transmission-web luci-i18n-transmission-zh-cn openssh-sftp-server wget ca-certificates

留下评论