小米路由器4 刷Openwrt踩坑记录 (未完待续…)

写在前面

  • 当然刷是不能瞎鸡儿乱刷的,这个米4路由器是个MT7621的板子,刚好Openwrt支持

小米路由器4刷Openwrt

  • 路由器:XIaomi route 4
  • 开发板:MT7621

连接USB串口,并安装驱动

  • 插入USB串口线,注意RT和TX互换位置

  • 右键计算机 –> Manage –> Device Manager –> Other devices –> 未知设备 –> 右键属性 –> Details –> Hardware Ids –> 搜索引擎搜索相关Value,得出串口型号,并下载相关驱动文件

  • 之后在Device Manager找到Ports(COM & LPT),查看设备后面的COM值

查看板子型号

  • 打开putty,点击Serial,串口号COM xx,速率115200 –> 提取码: e7ar

  • 路由器上电,先进入刷好的mi4,之后回车,进入busybox,回车

  • 根据cpu型号,搜索开发板型号
    cat /prox/cpuinfo

  • 找到路由器默认网关地址
    ip addr

  • 拔掉路由器电源

下载开发板对应已生成的bin文件

创建本地TFTP服务器

  • 修改网关静态ip,与路由器同网段

    1
    2
    3
    4
    5
    192.168.31.102

    255.255.255.0

    192.168.31.2
  • 打开TFTP Server TFTPDWIN,关闭启动,点击配置按钮,Output,Browse…找到你存放bin文件的位置 –> 提取码: 6e3d

  • 然后点启动按钮

刷入新的Openwrt

  • 路由器上电

  • 按键盘2,选择

  • 2:Load system code then write to Flash via TFTP

  • 之后:

    1
    2
    3
    Input device IP (192.168.31.1) ==:192.168.31.2
    Input server IP (192.168.31.100) ==:192.168.31.102
    Input Linux Kernel filename () ==:abc.bin
  • 等待路由器刷机完成

  • openwrt刷完之后,按回车,就可以进入busybox,此时openwrt处于一个初始状态,所以这才有了定制!

  • 路由器掉电,上电,进入busybox,修改root密码
    passwd root

  • 浏览器打开http://192.168.1.1/cgi-bin/luci,密码登陆是你自己修改的那个,当然此时你也可以用ssh连接了!

编译Openwrt

  • OS: ParrotSecOS 4.5.1 (debian)

  • 安装软件:
    sudo apt install g++ libncurses5-dev zlib1g-dev bison flex unzip autoconf gawk make gettext gcc binutils patch bzip2 libz-dev asciidoc subversion sphinxsearch libtool sphinx-common libssl-dev libssl1.1 -y

  • 下载最新源码

    1
    2
    3
    4
    5
    git clone git://github.com/openwrt/openwrt.git

    cd openwrt

    cp feeds.conf.default feeds.conf
  • 更新feeds扩展
    ./scripts/feeds update -a

  • 安装feeds扩展
    ./scripts/feeds install -a

  • 测试编译环境
    make defconfig

  • 编译固件,进入定制界面
    make menuconfig

配置Menu

  • 空格选中,sava保存为.config配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Target System –> 选择路由器CPU (我的是雷凌)

    Subtarget –> 选择板子型号 (选择的MT7621)

    Target Profile –> 选择路由器型号 (小米 3G)

    LuCI –> Modules –> <*> luci-base………LuCI core libraries 然后进入下面的Translations –> 选择语言

    # 添加LuCI界面
    LuCI –> Collections –> <*> luci

    LuCI—>Translations—- <*> luci-i18n-chinese

    # 添加UTF-8编码
    Kernel modules –> Native Language Support –> <*> kmod-nls-utf8

    # 添加硬盘支持格式
    Kernel modules —> Filesystems —> <*> kmod-fs-ext4
  • 设置LuCI默认语言

    vi feeds/luci/modules/luci-base/root/etc/config/luci

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    config core main
    option lang auto //此处修改为option lang zh_cn
    option mediaurlbase /luci-static/bootstrap
    option resourcebase /luci-static/resources

    config extern flash_keep
    option uci "/etc/config/"
    option dropbear "/etc/dropbear/"
    option openvpn "/etc/openvpn/"
    option passwd "/etc/passwd"
    option opkg "/etc/opkg.conf"
    option firewall "/etc/firewall.user"
    option uploads "/lib/uci/upload/"

    config internal languages
    option zh_cn chinese //新增
    option en English //新增

    config internal sauth
    option sessionpath "/tmp/luci-sessions"
    option sessiontime 3600

    config internal ccache
    option enable 1

    config internal themes
  • 设置默认开启WIFI

    vi package/kernel/mac80211/files/lib/wifi/mac80211.sh

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ht_capab
    # REMOVE THIS LINE TO ENABLE WIFI:
    # option disabled 1

    config wifi-iface
    option device radio$devidx
    option network lan
    option mode ap
    option ssid OpenWrt
    option enctvption none
    option disabled 0
  • 修改固件大小

    vi target/linux/ar71xx/image/Makefile

  • 修正网口顺序问题

    vi target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr841n-v8.c

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_PHY_SWAP);
    改为
    ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_ONLY_MODE);


    ath79_switch_data.phy_poll_mask = BIT(0);
    改为
    ath79_switch_data.phy_poll_mask = BIT(4);


    ath79_eth0_data.phy_mask = BIT(0);
    改为
    ath79_eth0_data.phy_mask = BIT(4);
  • 由于网速不够,所以先下载编译过程所需的资源:

    make download

  • 开始编译,当然最初的编译不建议用多线程,毕竟很有可能会出错(V=99输出debug信息):

    make V=99

  • 之后当然是开始交叉多线程编译了(make -jN,其中N是CPU核心数+ 1),我给了虚拟机4个线程数,所以编译时:

    make -j5 V=99

  • 或者编译时输出时保存编译日志

    make -j1 V=s 2>&1 | tee build.log

  • 当然了,你也可以后台利用空闲I/O和CPU编译:

    ionice -c 3 nice -n19 make -j5

配置Feeds

配置GUI

  • 未配置…

其他

0%