小米路由内核开发环境搭建
来自Jack's Lab
(版本间的差异)
| 第44行: | 第44行: | ||
root@XiaoQiang:/# nvram set flag_tftp_bootup=on | root@XiaoQiang:/# nvram set flag_tftp_bootup=on | ||
root@XiaoQiang:/# nvram commit | root@XiaoQiang:/# nvram commit | ||
| + | root@XiaoQiang:/# reboot | ||
| + | |||
| + | ........... | ||
| + | CFE version v1.0.4 | ||
| + | BSP: 6.37.14.34 (r415984) based on BBP 1.0.37 for BCM947XX (32bit,SP,) | ||
| + | Build Date: Wed Apr 30 18:03:21 CST 2014 (szy@shenzhiyong-ct) | ||
| + | |||
| + | ........... | ||
| + | |||
| + | Device eth0: hwaddr 8C-BE-BE-20-B7-48, ipaddr 192.168.1.1, mask 255.255.255.0 | ||
| + | gateway not set, nameserver not set | ||
| + | ********** flag_tftp_bootup=on ********** | ||
| + | tftp network: ifconfig eth0 -addr=192.168.1.1 -mask=255.255.255.0 -gw=192.168.1.1 | ||
| + | Device eth0: hwaddr 8C-BE-BE-20-B7-48, ipaddr 192.168.1.1, mask 255.255.255.0 | ||
| + | gateway 192.168.1.1, nameserver not set | ||
| + | kernel: boot -raw -z -addr=0x8000 -max=0x800000 192.168.1.2:vmlinuz | ||
| + | Loader:raw Filesys:tftp Dev:eth0 File:192.168.1.2:vmlinuz Options:(null) | ||
| + | Loading: ........ 5704544 bytes read | ||
| + | Entry at 0x00008000 | ||
| + | Closing network. | ||
| + | Starting program at 0x00008000 | ||
| + | |||
</source> | </source> | ||
2014年6月6日 (五) 16:52的版本
当前路由刷入的固件版本为 0.4.58
则先从当前版本固件内 mkxqimage -x 解压出 vmlinuz.trx 去除 TRX 头:
comcat@jackslab:/work/openwrt/xiaomi/rom/0.4.58$ dd if=vmlinuz.trx of=vmlinuz bs=1 skip=28 记录了2834404+0 的读入 记录了2834404+0 的写出 2834404字节(2.8 MB)已复制,4.10377 秒,691 kB/秒
得到的 vmlinuz 是一个 LZMA 压缩过的内核+initramfs,Build 日期为 Wed Apr 30 18:03:21 CST 2014 的CFE是可以直接加载后启动的(刷过 0.4.92版本固件的,都是这个版本的CFE):
CFE version v1.0.4
BSP: 6.37.14.34 (r415984) based on BBP 1.0.37 for BCM947XX (32bit,SP,)
Build Date: Wed Apr 30 18:03:21 CST 2014 (szy@shenzhiyong-ct)
Copyright (C) 2000-2008 Broadcom Corporation.
......
Device eth0: hwaddr 8C-BE-BE-20-B7-48, ipaddr 192.168.1.1, mask 255.255.255.0
gateway not set, nameserver not set
Startup canceled
xiaomi> ^C
xiaomi> boot -raw -z -addr=0x8000 -max=0x800000 192.168.1.2:vmlinuz
Loader:raw Filesys:tftp Dev:eth0 File:192.168.1.2:vmlinuz Options:(null)
Loading: ........ 5670784 bytes read
Entry at 0x00008000
Closing network.
Starting program at 0x00008000
console [ttyS0] enabled, bootconsole disabled
serial8250.0: ttyS1 at MMIO 0x18000400 (irq = 117) is a 16550
......
设置 nvram 参数 flag_tftp_bootup=on,则打开 CFE 首先尝试从 tftp server 加载内核:
root@XiaoQiang:/# nvram get flag_tftp_bootup
off
root@XiaoQiang:/# nvram set flag_tftp_bootup=on
root@XiaoQiang:/# nvram commit
root@XiaoQiang:/# reboot
...........
CFE version v1.0.4
BSP: 6.37.14.34 (r415984) based on BBP 1.0.37 for BCM947XX (32bit,SP,)
Build Date: Wed Apr 30 18:03:21 CST 2014 (szy@shenzhiyong-ct)
...........
Device eth0: hwaddr 8C-BE-BE-20-B7-48, ipaddr 192.168.1.1, mask 255.255.255.0
gateway not set, nameserver not set
********** flag_tftp_bootup=on **********
tftp network: ifconfig eth0 -addr=192.168.1.1 -mask=255.255.255.0 -gw=192.168.1.1
Device eth0: hwaddr 8C-BE-BE-20-B7-48, ipaddr 192.168.1.1, mask 255.255.255.0
gateway 192.168.1.1, nameserver not set
kernel: boot -raw -z -addr=0x8000 -max=0x800000 192.168.1.2:vmlinuz
Loader:raw Filesys:tftp Dev:eth0 File:192.168.1.2:vmlinuz Options:(null)
Loading: ........ 5704544 bytes read
Entry at 0x00008000
Closing network.
Starting program at 0x00008000