步骤:
1 从以太网引导启动。由于我们实验室在服务器上放了一个openwrt镜像,安装时先从以太网启动,将服务器上的镜像载入到RAM中启动系统。
2 用SCP将在PC上编译好的openwrt-XXX.elf和openwrt-XXX-rootfs。tar.gz传输到路由中。这两个文件处于./openwrt/trunk/bin/ar71xx中,前者是内核可执行文件,后者为文件系统。
3 在路由器上,用dmesg查看nand上的各个mtdblock对应的内容是什么。找到下面这段:
[ 1.010000] Creating 4 MTD partitions on "spi0.0":
[ 1.010000] 0x000000000000-0x00000000b000 : "routerboot"
[ 1.020000] 0x00000000b000-0x00000000c000 : "hard_config"
[ 1.030000] 0x00000000d000-0x00000000f000 : "bios"
[ 1.030000] 0x00000000f000-0x000000010000 : "soft_config"
[ 1.040000] NAND flash driver for RouterBoard 4xx series version 0.2.0
[ 1.050000] NAND device: Manufacturer ID: 0xad, Chip ID: 0x76 (Hynix NAND 64MiB 3,3V 8-bit)
[ 1.060000] Scanning device for bad blocks
[ 1.910000] Creating 3 MTD partitions on "NAND 64MiB 3,3V 8-bit":
[ 1.920000] 0x000000000000-0x000000040000 : "booter"
[ 1.920000] 0x000000040000-0x000000600000 : "kernel"
[ 1.930000] 0x000000600000-0x000004000000 : "rootfs"
[ 1.940000] mtd: partition "rootfs" set to be root filesystem
这是创建mtd分区时的内核输出信息。可以看出在我的系统里面,按照先后顺序创建了7个分区(从0开始计数),因此kernel为mtdblock5,文件系统是mtdblock6。
4 挂载内核分区,并将内核镜像复制进去:
1 mtd erase kernel 2 mount/dev/mtdblock5 /mnt 3 mv XXX.elf /mnt/kernel #注意文件名必须是kernel
5 挂载文件系统分区,并在此处将文件系统解压:
mtd erase rootfs mount/dev/mtdblock6 /mnt tar zxvf XXX.tar.gz /mnt/
如果在解压时报错了,可以先进入到mnt,然后将tar.gz文件解压到当前目录:
cd /mnt tar zxvf XXX.tar.gz
6 自此,内核和文件系统都做好了,重启,并从nand引导启动。
其他命令:
scp <src> <dst> : 从src通过SSH复制到dst。需要安装openssh-server和openssh-client。
如:scp 172.12.xxx.xxx:/opt/openwrt/trunk/bin/ar71xx/XXX.elf / #将172.12.xxx.xxx主机上某个路径下的某文件,复制到本机的根目录
df: 查看是否挂在成功,
如:df -h
查看mtd设备:cat /proc/mtd