web-dev-qa-db-ja.com

Banana PiのブートSDカードを手動で作成する方法

Banana PiのようなデバイスでSDカードイメージを起動する方法が理解できないようです。状況は次のとおりです。

Banana PiとBanana Proを持っています。すべてのデバイスには、デバイスにプラグインされたSDカード上のいくつかのディストリビューションのイメージがあります(Banana Pro-> Arch Linux、Banana Pi-> Bananian)。画像は here および here からダウンロードできます。これは正常に動作します。

しかし、Banana Pi/ProにはSATAポートがあるので、接続されたハードドライブからルートシステムを起動できればいいでしょう。読むことができるように here これは非常に簡単に実行できます。

しかし今、私が苦労している部分が来ます。 4GB SDカード全体(またはさらに大きなもの)をディストリビューションイメージでフラッシュし、50MBパーティションだけを使用するのは少し無駄です。なので、もっと小さいSDカードを使ってみました。

fdisk(50MBサイズ)でパーティトンを作成し、mkfs.vfat -F 16 /dev/sdXXを使用してパーティトン上にファイルシステムを作成しました。画像ファイルを調べているときのparted出力のため、FAT 16にしました。

enter image description here

その後、イメージから/tmp/bootへのパーティションをSudo mount -o loop,offset=1048576 ArchLinux_For_BananaPro_v1412.img /tmp/bootでマウントしました。オフセット値は、分割された出力の開始値です。

ファイル(script.bin、uEnv.txt、uImage)をSDカードパーティションにコピーし、uEnv.txtのルートパスを変更しました。同期を行い、SDカードを取り外しました。

すべてうまくいきます。イメージ全体でフラッシュされたSDカードのブートパーティションと、ブートパーティションのみの私のSDカードを比較する場合でも、それらは同一です(fdiskによると)

enter image description here

ただし、Banana Pi/Proは、uブートファイルを提供するブートパーティションだけのSDカードではブートしません。

誰かその行動の手がかりはありますか?

更新:

@BananaFreakのおかげで間違いを認識しました。ブートローダーは確かにありませんでしたが、 lemaker からそのガイドに従っても、BananaProは起動しません。 lemaker wikiページの奇妙なことの1つは、最初の文が次のように述べられていることです。

注:これらの手順はLinuxコンピュータ用であり、Banana Pro/Piではありません!!

5
IlikePepsi

ブートローダーを見逃したと思います。 U-BootがSDに存在する必要があります。 SDレイアウトがBanana Pi/Proでどうあるべきかを見てみましょう:

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

3
BananaFreak

BananaPro/Piでの起動プロセスの詳細については、こちらをご覧ください。最初に必要となるのは RS232シリアルTTL UARTコンバーター で、オンボードUARTとインターフェースするためのものです。

BananaPro UART interface header

その後、そのシリアルデバイスを開いて起動手順を調査できます(注意して、TTL-UARTコンバーターのVCCピンをボードに接続しないでください。コンバーターが5Vを使用する場合、TTL VCCを接続する際のBananaPro。)

端末では、次のような出力が得られました。

 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ツールを使用していくつかの診断を実行できます。以下は コマンドのリスト ですが、すべてのコマンドが使用できるとは限りません。

私の場合、boot-outputの最後の数行は、u-bootが2番目のパーティションを探し、最終的にいくつかのデータに対してCRCを構築する方法でコンパイルされているという結論に至りました。私の目標は2番目のパーティションを省略することだったので、必要な変更を加えたu-bootバイナリをコンパイルすることが唯一の解決策だと思います。

0
IlikePepsi