写在前面
- 当然刷是不能瞎鸡儿乱刷的,这个米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文件
-
我自己下载的openwrt-18.06.0-ramips-mt7621-u7621-06-256M-16M-initramfs-kernel.bin
-
我把bin文件重命名为abc.bin,并放入D:\tftp文件夹
创建本地TFTP服务器
-
修改网关静态ip,与路由器同网段
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
-
之后:
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
-
下载最新源码
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配置文件
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
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
$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
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 -j1 V=s 2>&1 | tee build.log
-
之后当然是开始交叉多线程编译了(make -jN,其中N是CPU核心数+ 1),我给了虚拟机4个线程数,所以编译时:
make -j5 V=99
-
当然了,你也可以后台利用空闲I/O和CPU编译:
ionice -c 3 nice -n19 make -j5
配置Feeds
-
未配置…
配置GUI
- 未配置…
其他