U-boot:坏幻数

U-boot:坏幻数

我正在使用 Arduino Yun,我想通过 NFS 挂载 rootfs。

我下载了openwrt源代码,构建了项目,然后从build_dir/target-mips_34kc_musl-1.1.15/root-ar71xx下面复制了生成的rootfs/home/user/srv/nfs/root-ar71xx

在 uboot 提示符中我使用的命令行是:

setenv bootargs root=/dev/nfs rw nfsroot=192.168.1.1:/home/user/srv/nfs/root-ar71xx ip=192.168.1.2:192.168.1.1:192.168.1.1:255.255.255.0::off; bootm

uboot环境变量:

ar7240> printenv
bootcmd=bootm 0x9fea0000
bootdelay=4
baudrate=115200
ethaddr=0xb4:0x21:0x8a:0x00:0x00:0x10
ipaddr=192.168.1.2
serverip=192.168.1.1 
stdin=serial
stdout=serial
stderr=serial
ethact=eth0
bootargs=root=/dev/nfs rw nfsroot=192.168.1.1:/home/user/srv/nfs/root-ar71xx     
ip=192.168.1.2:192.168.1.1:192.168.1.1:255.255.255.0::off

Environment size: 319/65532 bytes

但我得到了:

## Booting image at 81000000 ...
Bad Magic Number

我读到这个链接,为了让 U-Boot“了解”内核,有一种封装。 rootfs 也是一样吗

我还有另一个问题,但与主题不太相关:构建项目后,我在下面有几个二进制文件(24) bin/ar71xx/

openwrt-ar71xx-generic-wzr-hp-ag300h-squashfs-tftp.bin 
openwrt-ar71xx-generic-tl-mr11u-v1-squashfs-sysupgrade.bin
openwrt-ar71xx-generic-wzr-hp-g300nh2-squashfs-factory.bin
...

我期望只有一个内核映像,所有这些映像应该做什么?

提前致谢。

编辑

我将命令行更改为:

setenv bootargs root=/dev/nfs rw nfsroot=192.168.1.1:/home/bou6/srv /nfs/root-ar71xx ip=192.168.1.2:192.168.1.1:192.168.1.1:255.255.255.0::off;  bootm 0x9fea0000

我已经没有了Bad Magic Number,但仍然有疑问:

1-我们如何知道内核的加载地址

2-我注意到即使以太网电缆没有分支,内核仍然继续使用 Yun 上闪现的默认文件系统,有没有办法取消激活它。

答案1

bootargs仅仅设置然后调用是不够的bootm......你需要从某个地方加载内核映像 - 所以问题 1 的答案是“选择你喜欢的任何地址 - 只要它在 RAM 中并且有足够的空间适合您将加载到其中的内核映像”。

要加载内核映像,请设置 tftp 服务器并使用tftpbootu-boot 命令。例如

tftpboot <address> openwrt-ar71xx-generic-wzr-hp-ag300h-squashfs-tftp.bin

(我猜测这是包含内核映像的文件,但可能不是) - 那么你可以使用命令bootm例如

bootm <address>

你可能会发现一些线索这里

顺便说一句,ip=...内核命令行具有以下格式:

ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>:<dns0-ip>:<dns1-ip>

off所以我觉得eg之前应该有两个冒号

ip=192.168.1.2:192.168.1.1:192.168.1.1:255.255.255.0:::off

但我的想法可能是错的。

关于问题 2,我希望启动失败并且 u-boot 回退到提示符 - 不继续并使用闪存中的文件系统。

最后,您需要列出所有 24 个文件名,bin/ar71xx以便我们可以确定其中哪个是内核映像(我上面的猜测感觉不正确)。

相关内容