Banana Pi용 부팅 가능한 SD 카드를 수동으로 생성하는 방법

Banana Pi용 부팅 가능한 SD 카드를 수동으로 생성하는 방법

Banana Pi와 같은 장치에서 SD 카드 이미지를 부팅하는 방법을 잘 이해하지 못하는 것 같습니다. 세부 사항은 다음과 같습니다.

바나나 파이와 바나나 프로가 있습니다. 각 장치에는 장치에 삽입된 SD 카드에 특정 배포판(Banana Pro -> Arch Linux, Banana Pi -> Bananian)의 이미지가 있습니다. 이미지는 다음에서 다운로드할 수 있습니다.여기그리고여기. 이것은 훌륭하게 작동합니다.

하지만 Banana Pi/Pro에는 SATA 포트가 있으므로 루트 시스템이 연결된 하드 드라이브에서 부팅할 수 있으면 좋을 것입니다. 읽을 수 있듯이여기이 작업은 매우 간단하게 수행할 수 있습니다.

하지만 지금 제가 고민하고 있는 부분이 바로 여기에 있습니다. 전체 4GB SD 카드(또는 더 큰 SD 카드)를 릴리스 이미지로 플래시하고 50MB 파티션만 사용하는 것은 약간 낭비처럼 보입니다. 그래서 더 작은 SD 카드를 사용해 보았습니다.

파티션 fdisk(크기 50MB)을 생성하고 mkfs.vfat -F 16 /dev/sdXX해당 파티션에 파일 시스템을 생성하는 데 사용했습니다. 이미지 파일 확인시 출력이 되기 때문에 partedFAT 16으로 설정하였습니다.

여기에 이미지 설명을 입력하세요..

그런 다음 이미지의 파티션을 /tmp/boot에 마운트했습니다 sudo mount -o loop,offset=1048576 ArchLinux_For_BananaPro_v1412.img /tmp/boot. 오프셋 값은 parted 출력의 시작 값입니다.

파일(script.bin, uEnv.txt, uImage)을 내 SD 카드 파티션에 복사하고 uEnv.txt에서 루트 경로를 변경하세요. SD 카드를 동기화하고 제거합니다.

모든 것이 괜찮아 보입니다. 전체 이미지가 있는 SD 카드의 부팅 파티션과 부팅 파티션만 있는 SD 카드를 비교해봐도 동일합니다(에 따르면 fdisk).

여기에 이미지 설명을 입력하세요.

그러나 Banana Pi/Pro는 SD 카드를 사용하여 부팅할 수 없으며 부팅 파티션에서만 u-boot 파일을 제공합니다.

이 행동을 아는 사람이 있습니까?

고쳐 쓰다:

@BananaFreak 덕분에 내 실수를 깨달았습니다. 실제로 부트로더가 누락되어 있지만 이 가이드를 따른 후에도레멕BananaPro를 시작할 수 없습니다. lemaker 위키 페이지의 이상한 점 중 하나는 첫 번째 문장입니다.

참고: 이 지침은 Banana Pro/Pi가 아닌 Linux 컴퓨터에 적용됩니다!

답변1

부트로더를 놓친 것 같습니다. U-Boot가 SD에 있어야 합니다. Banana Pi/Pro의 SD 레이아웃이 어떻게 보이는지 살펴보십시오.

http://wiki.lemaker.org/BananaPro/Pi:Setting_up_the_bootable_SD_card#SD_Card_Layout

답변2

이것은 BananaPro/Pi 시작 프로세스를 심층적으로 살펴보는 것입니다. 가장 먼저 필요한 것은RS232 직렬-TTL UART 변환기온보드 UART와 인터페이스합니다.

BananaPro UART 인터페이스 헤더

그런 다음 해당 직렬 장치를 열어 부팅 프로세스를 연구할 수 있습니다(TTL-UART 변환기의 VCC 핀을 보드에 연결하지 않도록 주의하십시오. 변환기가 5V TTL을 사용하는 경우 BananaPro가 손상될 수 있으므로 VCC 핀을 연결하지 마십시오. ).

터미널에서 다음과 같은 출력을 얻습니다.

 U-Boot SPL 2014.04-10733-gbb5691c (Dec 18 2014 - 12:54:35)

 Board: BananaPro
 DRAM: 1024 MiB
 CPU: 960000000Hz, AXI/AHB/APB: 3/2/2
 spl: not an uImage at 1600

 U-Boot 2014.04-10733-gbb5691c (Dec 18 2014 - 12:54:35) Allwinner Technology

 CPU:   Allwinner A20 (SUN7I)
 Board: BananaPro
 I2C:   ready
 DRAM:  1 GiB
 MMC:   SUNXI SD/MMC: 0
 *** Warning - bad CRC, using default environment

 In:    serial
 Out:   serial
 Err:   serial
 Net:   dwmac.1c50000
 Hit any key to stop autoboot:  0 
 reading uEnv.txt
 354 bytes read in 17 ms (19.5 KiB/s)
 Loaded environment from uEnv.txt
 Running uenvcmd ...
 reading /script.bin
 50564 bytes read in 100 ms (493.2 KiB/s)
 reading /uImage
 Error reading cluster
 ** Unable to read file /uImage **
 ## Booting kernel from Legacy Image at 48000000 ...
   Image Name:   Linux-3.4.103
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    4822880 Bytes = 4.6 MiB
   Load Address: 40008000
   Entry Point:  40008000
   Verifying Checksum ... Bad Data CRC
 ERROR: can't get kernel image!
 ** Can't read partition table on 0:0 **
 ** Invalid partition 1 **

부팅 프로세스가 실패한 후에는 u-boot가 제공하는 쉘 환경에 들어갈 가능성이 높습니다. 여기에서 u-boot 도구를 사용하여 몇 가지 진단을 수행할 수 있습니다. 여기 하나 있어요명령 목록, 그러나 이들 모두를 사용할 수 있는 것은 아닙니다.

내 경우에는 부팅 출력의 마지막 몇 줄을 보면 u-boot가 두 번째 파티션을 찾고 결국 일부 데이터에 CRC를 구축하는 방식으로 컴파일된다는 결론에 이르게 됩니다. 내 목표는 두 번째 파티션을 생략하는 것이므로 유일한 해결책은 필요한 수정 사항을 적용하여 u-boot 바이너리를 컴파일하는 것입니다.

관련 정보