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그래서 내 생각에는 앞에 두 개의 콜론이 있어야 한다고 생각합니다.

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

하지만 내가 틀렸을 수도 있습니다.

질문 2에 관해서는 부팅이 실패하고 u-boot가 프롬프트로 돌아가기를 원합니다. 계속하지 말고 플래시의 파일 시스템을 사용하십시오.

마지막으로, 24개의 파일 이름을 모두 나열하여 bin/ar71xx그 중 어느 것이 커널 이미지인지 결정할 수 있습니다(위의 추측은 옳지 않다고 생각됩니다).

관련 정보