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にしました。
。
その後、イメージから/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
によると)
ただし、Banana Pi/Proは、uブートファイルを提供するブートパーティションだけのSDカードではブートしません。
誰かその行動の手がかりはありますか?
更新:
@BananaFreakのおかげで間違いを認識しました。ブートローダーは確かにありませんでしたが、 lemaker からそのガイドに従っても、BananaProは起動しません。 lemaker wikiページの奇妙なことの1つは、最初の文が次のように述べられていることです。
注:これらの手順はLinuxコンピュータ用であり、Banana Pro/Piではありません!!
ブートローダーを見逃したと思います。 U-BootがSDに存在する必要があります。 SDレイアウトがBanana Pi/Proでどうあるべきかを見てみましょう:
http://wiki.lemaker.org/BananaPro/Pi:Setting_up_the_bootable_SD_card#SD_Card_Layout
BananaPro/Piでの起動プロセスの詳細については、こちらをご覧ください。最初に必要となるのは RS232シリアルTTL UARTコンバーター で、オンボードUARTとインターフェースするためのものです。
その後、そのシリアルデバイスを開いて起動手順を調査できます(注意して、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バイナリをコンパイルすることが唯一の解決策だと思います。