已经从官方clone了Openwrt系统,接下去就对其进行配置编译,通过U-boot在线烧录firmware查看是否能正常启动。
对于如何clone编译Openwrt,可以查看以前的文章Openwrt clone and bulid,里面有详细的说明,这边也进行简要的步骤说明。
1.通过make menuconfig
进行配置,选择小米路由器的平台,如下:
Target System ---> (Ralink RT288x/RT3xxx) Subtarget ---> (MT7620 based boards) Target Profile ---> (Xiaomi MiWiFi Mini) Target Images ---> (jffs2、squashfs)
2.由于以前已经有编译过Openwrt,dl下面的很多文件都是公用的,所以将以前的dl文件夹通过ln -s
链接到小米路由器的Openwrt下,省去重新下载tar包的时间。(如果以前没有搭建过Openwrt的环境,那就不需要这一步了,直接执行下一步)
linye@ubuntu:~/XiaomiRouter/Openwrt$ ln -s ../../Openwrt/dl dl linye@ubuntu:~/XiaomiRouter/Openwrt$ ls BSDmakefile dl include package scripts tmp config docs LICENSE README staging_dir toolchain Config.in feeds.conf.default Makefile rules.mk target tools
3.通过make V=99
对Openwrt进行编译,编译完成后,在bin目录下会有如下文件,我们将openwrt-ramips-mt7620-xiaomi-miwifi-mini-squashfs-sysupgrade.bin
文件拷贝出去用来更新用。
linye@ubuntu:~/XiaomiRouter/Openwrt/bin/ramips$ ls md5sums openwrt-ramips-mt7620-root.jffs2-128k openwrt-ramips-mt7620-root.jffs2-64k openwrt-ramips-mt7620-root.squashfs openwrt-ramips-mt7620-uImage.bin openwrt-ramips-mt7620-vmlinux.bin openwrt-ramips-mt7620-vmlinux.elf openwrt-ramips-mt7620-xiaomi-miwifi-mini-squashfs-sysupgrade.bin packages sha256sums
4.启动路由器后,根据提示可以知道选择2为更新firmware到spi flash并启动。
Please choose the operation: 0: System Load Linux then write to Flash via Serial. 1: Load system code to SDRAM via TFTP. 2: Load system code then write to Flash via TFTP. 3: Boot system code via Flash. 4: Entr boot command line interface.(default) 7: Load Boot Loader code then write to Flash via Serial. 8: System Load UBoot to SDRAM via TFTP. 9: Load Boot Loader code then write to Flash via TFTP.
5.选择2后进行网络和firmware名称的输入,把Tftpd32开启并选择firmware所在的位置
2: System Load Linux Kernel then write to Flash via TFTP. Warning!! Erase Linux in Flash then burn new one. Are you sure?(Y/N) Please Input new ones /or Ctrl-C to discard Input device IP (192.168.128.1) ==:192.168.128.1 Input server IP (192.168.128.32) ==:192.168.128.32 Input Linux Kernel filename () ==:openwrt-ramips-mt7620-xiaomi-miwifi-mini-squashfs-sysupgrade.bin
6.一切准备就绪后就可以按下Enter键进行上传烧录启动了,如果一切正常,在console上应该可以观察到,先是上传数据,然后是写入到spi中,最后进行启动image,大概如下信息:
TFTP from server 192.168.128.32; our IP address is 192.168.128.1Filename 'openwrt-ramips-mt7620-xiaomi-miwifi-mini-squashfs-sysupgrade.bin'. TIMEOUT_COUNT=10,Load address: 0x80100000Loading: Got ARP REPLY, set server/gtwy eth addr (00:0c:07:14:05:2d) Got it ################################################################# ################################################################# ################################################################# ################ done Bytes transferred = 3407876 (340004 hex) NetBootFileXferSize= 00340004raspi_erase_write: offs:40000, count:340004raspi_erase: offs:40000 len:340000.................................................... raspi_write: 80100000 to:40000 len:340000 .................................................... raspi_read: from:40000 len:10000 raspi_read: from:50000 len:10000 raspi_read: from:60000 len:10000 raspi_read: from:380000 len:10000 Done! ## Booting image at bc040000 ... raspi_read: from:40000 len:40 Image Name: MIPS OpenWrt Linux-3.18.45 Image Type: MIPS Linux Kernel Image (lzma compressed) Data Size: 1140795 Bytes = 1.1 MB Load Address: 80000000 Entry Point: 80000000raspi_read: from:40040 len:11683b Verifying Checksum ... OK Uncompressing Kernel Image ... OK No initrd ## Transferring control to Linux (at address 80000000) ... ## Giving linux memsize in MB, 128Starting kernel ... [ 0.000000] Linux version 3.18.45 (linye@ubuntu) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 r49389) ) #1 Tue Feb 21 06:02:12 PST 2017[ 0.000000] Board has DDR2 [ 0.000000] Analog PMU set to hw control [ 0.000000] Digital PMU set to hw control [ 0.000000] SoC Type: MediaTek MT7620A ver:2 eco:6
7.看到这些信息感觉一切都是那么的顺利,官方的Uboot、Openwrt好像帮我们把什么都做好了,这么的匹配,烧录完就直接就启动了,不知道该开心还是伤心,没办法在遇到问题中学习。
8.当系统启动完成后,这时按下Enter键,发现没办法进入命令行模式,会看到如下信息:
[ 1.070000] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) [ 1.070000] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) [ 82.560000] random: nonblocking pool is initialized
9.提示找不到文件系统,说明上面配置编译出来的image里面不包含文件系统或其他原因?这边由于以前没弄过,暂时还没有什么思路,后期将往这方面接着努力。
Openwrt配置编译烧录的分析就到这边,有感悟时会持续会更新。