Boston Harbor
Date/Time: 2006:08:02 09:14:47
Camera: FUJIFILM
Model: FinePix F401
Exporsure Time: 1/800 [s]
FNumber: 7.0
Aperture Value: 5.6
Focal Length: 5.7 [mm]

y2blog » OpenWRT + Banana Pi R4 で10Gのv6プラス(MAP-E & 固定IP)ルータを構築してみる(その1:準備編)

12

04

2025

OpenWRT + Banana Pi R4 で10Gのv6プラス(MAP-E & 固定IP)ルータを構築してみる(その1:準備編)

Banana Pi R4にOpenWRTを載せて10G用の格安ルータを構築してみる(OpenWRTの準備)


市販されている業務用の10G対応ルータは中古でもそれなりのお値段なので、本番用の10Gルータを購入する前に、とりあえず手持ちのBanana Pi R4にOpenWRTを載せ、v6プラス用IPoEルータを構築して、この組み合わせでどの程度実用的なルータを構築可能なのか試すことにした.


前回は FLET’Sクロス回線とアルテリアのXPassサービスの組み合わせだったが、今回はまだ使ったことのないMAP-E系のサービスを試してみることにする.MAP-E系のサービスを提供しているVNE事業者は幾つかあるが、最もメジャーなJPIXのv6プラスにIPv4固定IPオプションを付けた状態でテストしてみる.


前回のXPassサービスではトラブルシュートに必要なサポートが受けられなかったので、XPassを直ぐに解約して他のVNW事業者を探すことにした.enひかりには 『enひかりクロス光回線(10Gbps) 税込4,370円』 というフレッツ回線のみ(プロバイダ契約はエンドユーザ側で行う)のサービスがあったのでこちらのサービスに切り替えた.このサービスはNTTに直接FLET’Sクロス回線を申し込むより1,680円もお得だ.


エンドユーザ側ではVNE事業者とは直接契約が結べないので、インターネットプロバイダを通してVNE事業者のサービスを契約することになるが、今回はプロバイダ事業者としてかもめインターネットを選定した.かもめインターネットを選んだのは、老舗のインターネットプロバイダで、自社でPPPoE関係のネットワーク設備を有しており、技術力やサポート体制などがしっかりしていそうだ.かもめインターネットでは速度制限を行っていないと明言しているので、ある日突然ネットワークが帯域制限を受けて使い物にならなくなるという心配をしなくて済みそうだ.


他の格安プロバイダと比べるとお値段は高め(v6プラスXサービス 3,080円)だが、VNE事業者のJPIXとの間でしっかりとした帯域を確保できるような契約を結んでいるのだろう.仕事で使うのであれば最低限この程度の出費は覚悟するべきだ.



1. OpenWRTの準備(SDカードでの初期構築)


Banana Pi R4とOpenWRTの組み合わせについては以前の記事『Banana Pi BPI-R4 シングルボードコンピュータ』で紹介しているので詳細は省くが、先ずはSDカードイメージのルートパーティションを拡張する作業を行っておく.初期のルートパーティションサイズが448MB程度しかなく、ルートパーティションを拡張しておかないとMAP-EやDS-Liteなどのパッケージや各種ユーティリティーなどを追加インストールする余裕がなくなってしまい、ルートパーティションが逼迫してシステムの動作が非常に危うくなってしまう.(最初からeMMCによる運用を行うのであれば、SDカードのルートパーティション拡張を行わずに次のeMMC上にOpenWRTをコピーするステップに進んで構わない)


SDカードは入手も容易で、値段も安くRaspberry Piなどの小型IoT機器の起動デバイスとして幅広く用いられているが、SDカード自体の耐久性や信頼性が低いので、OSのような頻繁に読み書きが行われるディスクデバイスとしては不適切だ.ルータなどの用途では常に稼働させた状態で用いるので、SDカードでの常時運用は避けたいところだ.幸いなことに Banana Pi R4 システム には内臓のeMMCディバイスが搭載されており、このeMMCディバイスからOSを起動させることが可能だ.eMMCの容量も8GB有るので、今回のOpenWRTのOS起動用として必要十分な容量と信頼性を兼ね備えているので、OpenWRTをeMMCデバイスから起動させる方法についても説明することにする.


Initial Partition Map
初期状態ではルートパーティションのサイズは僅か448MBしかない

上記の画面は、GPartedを用いてSDカードのパーティションの状態を表示したものだが、残念ながらGPartedはこのOpenWRTのパーティションを直接変更することができない.とりあえず適当なLinuxシステムを立ち上げて、SDカードのパーティションをコマンドラインベースで操作することにする.


Ubuntu24 Server上でSDカードのパーティションを確認してみる. ”/dev/sdb1 〜 sdb7″ までがOpenWRTのSDカードに書き込まれたパーティションで、”/dev/sdb7″ が拡張が必要なルートパーティションだ.幸いなことにルートパーティションの後方には未使用の領域がたくさん残っているので、ルートパーティションの拡張は容易な作業だ.



root@buntu24arm:~# blkid
/dev/nvme0n1p3: UUID="IayfQm-Zpn9-XK9o-J1MC-XdLB-39LL-F93PsB" TYPE="LVM2_member" PARTUUID="27174579-5954-484a-b495-23db7fbbfe4d"
/dev/nvme0n1p1: UUID="A109-16EC" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="7440d823-cb35-48a6-9e86-d5ba9da63546"
/dev/nvme0n1p2: UUID="feb350c0-3d8c-4ed5-88a3-e3a3882effc2" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="0ac7bf2e-ba78-41e6-82f3-3e6940b60c79"
/dev/mapper/ubuntu--vg-ubuntu--lv: UUID="565930bf-4bb7-4cdd-bcf5-d371ea5f2191" BLOCK_SIZE="4096" TYPE="ext4"
/dev/sdb4: PARTLABEL="fip" PARTUUID="5452574f-2211-4433-5566-778899aabb04"
/dev/sdb2: PARTLABEL="ubootenv" PARTUUID="5452574f-2211-4433-5566-778899aabb02"
/dev/sdb7: PARTLABEL="production" PARTUUID="5452574f-2211-4433-5566-778899aabb07"
/dev/sdb5: PARTLABEL="recovery" PARTUUID="5452574f-2211-4433-5566-778899aabb05"
/dev/sdb3: PARTLABEL="factory" PARTUUID="5452574f-2211-4433-5566-778899aabb03"
/dev/sdb1: PARTLABEL="bl2" PARTUUID="5452574f-2211-4433-5566-778899aabb01"
/dev/sdb6: PARTLABEL="install" PARTUUID="5452574f-2211-4433-5566-778899aabb06"
root@buntu24arm:~# 


Linuxのパーティションツールとしては標準的な “fdisk” を用いることにする.fdiskは使い方を間違えるとシステムそのものを壊してしまうので、初心者は細心の注意を払って操作を行って欲しい.




root@buntu24arm:~# fdisk /dev/sdb      <===  SDカードのデバイス名 "/dev/sdb" を指定

Welcome to fdisk (util-linux 2.39.3).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

The backup GPT table is not on the end of the device. This problem will be corrected by write.
A hybrid GPT was detected. You have to sync the hybrid MBR manually (expert command 'M').

Command (m for help): m   <===  コマンドの一覧をヘルプ表示しておく

Help:

  GPT
   M   enter protective/hybrid MBR

  Generic
   d   delete a partition          <===  パーティションを削除
   F   list free unpartitioned space
   l   list known partition types
   n   add a new partition             <===  新規にパーティションを作成
   p   print the partition table     <===  現行のパーティションテーブルを表示
   t   change a partition type
   v   verify the partition table
   i   print information about a partition

  Misc
   m   print this menu
   x   extra functionality (experts only)   <===  Expertモードに切り替える

  Script
   I   load disk layout from sfdisk script file
   O   dump disk layout to sfdisk script file

  Save & Exit
   w   write table to disk and exit      <===  パーティションテーブルを更新して終了
   q   quit without saving changes

  Create a new label
   g   create a new empty GPT partition table
   G   create a new empty SGI (IRIX) partition table
   o   create a new empty MBR (DOS) partition table
   s   create a new empty Sun partition table

Command (m for help): p   <===  現行のパーティションテーブルを表示

Disk /dev/sdb: 3.69 GiB, 3965190144 bytes, 7744512 sectors
Disk model: STORAGE DEVICE  
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 5452574F-2211-4433-5566-778899AABB00

Device      Start     End Sectors  Size Type
/dev/sdb1      34    8191    8158    4M Linux filesystem
/dev/sdb2    8192    9215    1024  512K Linux filesystem
/dev/sdb3    9216   13311    4096    2M Linux filesystem
/dev/sdb4   13312   21503    8192    4M EFI System
/dev/sdb5   24576   90111   65536   32M EFI System
/dev/sdb6   90112  131071   40960   20M EFI System
/dev/sdb7  131072 1048575  917504  448M unknown

Command (m for help): x  <===  Expertモードに切り替える

Expert command (m for help): m  <===  Expertモードでのコマンド一覧表示

Help (expert commands):

  GPT
   i   change disk GUID
   n   change partition name
   u   change partition UUID
   l   change table length
   M   enter protective/hybrid MBR

   A   toggle the legacy BIOS bootable flag
   B   toggle the no block IO protocol flag
   R   toggle the required partition flag
   S   toggle the GUID specific bits

  Generic
   p   print the partition table
   v   verify the partition table
   d   print the raw data of the first sector from the device
   D   print the raw data of the disklabel from the device
   f   fix partitions order
   m   print this menu

  Save & Exit
   q   quit without saving changes
   r   return to main menu


Expert command (m for help): p  <===  現行のパーティションテーブルを表示
Disk /dev/sdb: 3.69 GiB, 3965190144 bytes, 7744512 sectors
Disk model: STORAGE DEVICE  
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 5452574F-2211-4433-5566-778899AABB00
First usable LBA: 34
Last usable LBA: 7744478
Alternative LBA: 7744511
Partition entries starting LBA: 2
Allocated partition entries: 128
Partition entries ending LBA: 33

Device      Start     End Sectors Type-UUID                            UUID                                 Name       Attrs
/dev/sdb1      34    8191    8158 0FC63DAF-8483-4772-8E79-3D69D8477DE4 5452574F-2211-4433-5566-778899AABB01 bl2        RequiredPartition LegacyBIOSBootable
/dev/sdb2    8192    9215    1024 0FC63DAF-8483-4772-8E79-3D69D8477DE4 5452574F-2211-4433-5566-778899AABB02 ubootenv   RequiredPartition
/dev/sdb3    9216   13311    4096 0FC63DAF-8483-4772-8E79-3D69D8477DE4 5452574F-2211-4433-5566-778899AABB03 factory    RequiredPartition
/dev/sdb4   13312   21503    8192 C12A7328-F81F-11D2-BA4B-00A0C93EC93B 5452574F-2211-4433-5566-778899AABB04 fip        RequiredPartition
/dev/sdb5   24576   90111   65536 C12A7328-F81F-11D2-BA4B-00A0C93EC93B 5452574F-2211-4433-5566-778899AABB05 recovery   RequiredPartition
/dev/sdb6   90112  131071   40960 C12A7328-F81F-11D2-BA4B-00A0C93EC93B 5452574F-2211-4433-5566-778899AABB06 install    RequiredPartition
/dev/sdb7  131072 1048575  917504 CAE9BE83-B15F-49CC-863F-081B744A2D93 5452574F-2211-4433-5566-778899AABB07 production 

Expert command (m for help): 

Expert command (m for help): r   <===  メインメニューへ戻る

Command (m for help): 



Expertモードに切り替えてパーティションテーブルを表示させ、ルートパーティション "/dev/sdb7" の UUIDの値 "5452574F-2211-4433-5566-778899AABB07" と名前"production" をテキストエディタか何かに控えておく.Expertモードを抜けてメインメニューへ戻りルートパーティションの操作を行う.


ルートパーティションを拡張するには、一旦パーティションを削除した後、空いた領域に新しいパーティションを作成することになる.今回新しく作成するパーティションのサイズは、SDカードの残りの領域すべてを使うようにする.今回のSDカードは4GBなので新しく作成するルートパーティションのサイズは約3.6GBまで拡張することが可能だ.SDカードのデータ書き換えによる劣化を防ぐという意味でもなるべくルートパーティションは大きめに作成するのが良いだろう.




Command (m for help): d   <===  パーティションの削除
Partition number (1-7, default 7): 7   <===  7番目のパーティションを選択

Partition 7 has been deleted.

Command (m for help): n   <===  パーティションの新規作成
Partition number (7-128, default 7): 7 <===  7番目のパーティションとして作成
First sector (21504-7744478, default 131072):   <===  開始セクターを指定(デフォルト値を採用:そのままリターンを押下)
Last sector, +/-sectors or +/-size{K,M,G,T,P} (131072-7744478, default 7743487): <===  終了セクターを指定(デフォルト値を採用:そのままリターンを押下)

Created a new partition 7 of type 'Linux filesystem' and of size 3.6 GiB.

Command (m for help): 

Command (m for help): p   <===  パーティションテーブルを表示
Disk /dev/sdb: 3.69 GiB, 3965190144 bytes, 7744512 sectors
Disk model: STORAGE DEVICE  
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 5452574F-2211-4433-5566-778899AABB00

Device      Start     End Sectors  Size Type
/dev/sdb1      34    8191    8158    4M Linux filesystem
/dev/sdb2    8192    9215    1024  512K Linux filesystem
/dev/sdb3    9216   13311    4096    2M Linux filesystem
/dev/sdb4   13312   21503    8192    4M EFI System
/dev/sdb5   24576   90111   65536   32M EFI System
/dev/sdb6   90112  131071   40960   20M EFI System
/dev/sdb7  131072 7743487 7612416  3.6G Linux filesystem

Command (m for help): x  <===  Expertモードに切り替える

Expert command (m for help): n  <===  パーティションの名前を"production"に変更 
Partition number (1-7, default 7): 7

New name: production

Partition name changed from '' to 'production'.

Expert command (m for help): u   <===  パーティションのUUIDを拡張前の値に変更
Partition number (1-7, default 7): 7

New UUID (in 8-4-4-4-12 format): 5452574F-2211-4433-5566-778899AABB07

Partition UUID changed from FFA60092-52C5-4A1B-AFF7-86F631A36CB6 to 5452574F-2211-4433-5566-778899AABB07.

Expert command (m for help): p   <===  現行のパーティションテーブルを表示
Disk /dev/sdb: 3.69 GiB, 3965190144 bytes, 7744512 sectors
Disk model: STORAGE DEVICE  
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 5452574F-2211-4433-5566-778899AABB00
First usable LBA: 34
Last usable LBA: 7744478
Alternative LBA: 7744511
Partition entries starting LBA: 2
Allocated partition entries: 128
Partition entries ending LBA: 33

Device      Start     End Sectors Type-UUID                            UUID                                 Name       Attrs
/dev/sdb1      34    8191    8158 0FC63DAF-8483-4772-8E79-3D69D8477DE4 5452574F-2211-4433-5566-778899AABB01 bl2        RequiredPartition LegacyBIOSBootable
/dev/sdb2    8192    9215    1024 0FC63DAF-8483-4772-8E79-3D69D8477DE4 5452574F-2211-4433-5566-778899AABB02 ubootenv   RequiredPartition
/dev/sdb3    9216   13311    4096 0FC63DAF-8483-4772-8E79-3D69D8477DE4 5452574F-2211-4433-5566-778899AABB03 factory    RequiredPartition
/dev/sdb4   13312   21503    8192 C12A7328-F81F-11D2-BA4B-00A0C93EC93B 5452574F-2211-4433-5566-778899AABB04 fip        RequiredPartition
/dev/sdb5   24576   90111   65536 C12A7328-F81F-11D2-BA4B-00A0C93EC93B 5452574F-2211-4433-5566-778899AABB05 recovery   RequiredPartition
/dev/sdb6   90112  131071   40960 C12A7328-F81F-11D2-BA4B-00A0C93EC93B 5452574F-2211-4433-5566-778899AABB06 install    RequiredPartition
/dev/sdb7  131072 7743487 7612416 0FC63DAF-8483-4772-8E79-3D69D8477DE4 5452574F-2211-4433-5566-778899AABB07 production 

Expert command (m for help): 
Expert command (m for help): r  <===  メインメニューへ戻る

Command (m for help): w   <===  パーティションテーブルの変更内容を書き込む
The device contains hybrid MBR -- writing GPT only.

The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

root@buntu24arm:~# 



以上の操作でSDカードに書き込まれたルートパーティションのサイズ拡張作業は完了だ.



Expanded  root partition
ルートパーティションサイズが約3.6GBまで拡張されている


2. Banana Pi R4 の内蔵eMMCからOpenWRTを稼働させる


Banana Pi R4 ではSDカード以外に、内蔵eMMCやSPI-NAND flashからもOSを起動させることが可能だ.SDカードは簡単に差し替え可能というメリットがあるが、システム用の記憶デバイスとしては信頼性や耐久性に問題がある.Banana Pi R4用のOpenWRTのではSDカード上のOpenWRTシステムを簡単にeMMCにコピーして、そこから起動させることが可能となっている.


SPI-NAND Flashの容量は128MBしかないので、ブートローダー(UBoot)を格納する程度の用途やミニルート程度の用途にしか使用できないが、eMMCの方は8GBの容量があるので、OpenWRTのシステム全体を格納するには十分な容量だ.今回は、SD Card 上に構築したOpenWRTシステムを、eMMC領域にコピーしてそこからOpenWRTを起動させる方法について簡単に説明する.


SDカード上のOpenWRTシステムから直接eMMCへシステムを書き込めれば簡単なのだが、何故か、一旦128MBしかないSPI-NANDにシステムをコピーしてOpenWRTを立ち上げ、もう一度 SPI-NAND上のシステムからeMMCへシステムをコピーするという移行方法が採られている.Banana Pi R4のハードウェア上の制約でSDカードとeMMCは同時にはアクセスできないために、このような二度手間が必要なのだそうだ.

OpenWRTのWiKiのBanana Pi R4のページ "Sinovoip BananaPi BPI-R4" の "Installation" にeMMC領域にコピーする方法が記載されているが、この説明がかなり大雑把で分かり難いので、実例を示して説明する.




If you have a serial console attached, then in the boot menu of the BPI you can select Install bootloader, recovery and production to NAND to install from the sdcard to the internal NAND. After that you can remove the sdcard, change the boot switch, and boot from the NAND.

Installing to eMMC is possible by first installing to NAND, then copy from the NAND to eMMC. This is because the sdcard and the eMMC cannot be both accessed at the same time. The sdcard takes priority and “hides” the internal eMMC when inserted.



1. シリアルコンソールの接続

Banana Pi R4 の Debug UART 端子(USB 3.2端子の左にある、2.54mm間隔のピンヘッダ端子)にシリアルコンソールをつなぐ.詳細については "Getting Started BPI-R4" の "Development" を参照すると良いだろう.このUARTの端子は3.3Vのレベルで、115,200bps、8bit、パリティーなしで接続する.


電子工作などにあまり馴染みのない人達のためにシリアルコンソールの使い方について簡単に説明しておく.


MacやWindowsでシリアルコンソール接続を行うには幾つかの方法があるが、いちばん簡単な方法はUSB変換タイプのシリアルコンソールアダプタを利用して、TeraTermなどのシリアル通信ソフトウェアを利用するのが簡単な方法だ..USB変換タイプのシリアルコンソールアダプタは秋月電子や千石電商などのパーツショップやスイッチサイエンス等で簡単に入手することができる.


電子工作に不慣れで半田付け等の経験がない場合は、スイッチサイエンスの『USBシリアル変換ケーブル』が一番使い易いだろう.結線方法はとても簡単で、GNDはそのままつなぎ、TXとRXに関してはお互いに対(TX-RX)となるように結線すれば良い.

    USB変換アダプタ側   <=====>  Banana Pi R4 UART 側
       黒ケーブル(GND)              "GND" 
       緑ケーブル(TX)               "RX" 
       白ケーブル(RX)               "TX"
    赤ケーブル(+5V出力)      "未結線"


Testing OpenWRT on BPI-R4
Banana Pi R4のUARTのピンヘッダに自作の3P->6P変換アダプタを取り付けてシリアル接続している様子

BPI-R4 -UART hedder pins
シリアルコンソール接続用のヘッダーピン
BPI-R4 Boot Selector
ブートセレクタースイッチ




MacやWindowsと接続する場合はドライバソフトウェアのインストールが必要になるが、ドライバの入手方法やインストール方法は添付資料やホームページ等で説明されているので、それらを参考にすると良いだろう.


シリアル通信を行うためのアプリケーションソフトウェアは沢山出回っているが、Windows系ではTerTerm、Mac系では iTerm2が一般的だろう.Mac系ではあまり選択肢がないが、Mac OS に標準で備わっている "Teminal" アプリを使って、その上で "screen" コマンドを起動してシリアル通信を行う方法もよく利用されている.("screen"コマンドは慣れていないと使い難いので、初心者はシリアル通信アプリを使う方が簡単)


ZOC Console App
"ZOC Terminal" (Mac版)を用いてシリアルコンソール接続を行っている様子


2. シリアルコンソールを接続した状態でSDカードからOpenWRTを起動する

まず最初に行う作業は、現行のOpenWRTの設定をバックアップすることから始める.SDカードで運用中のOpenWRTのluci(WEB)コンソールにrootでログインし、"System" > "Backup / Flsh Firmware" を選択する."Backup" 項目の "Generate Backup" をクリックし、各種コンフィグレーションデータを手元のPC上にバックアップする.バックアップデータは "backup-OpenWrt-2025-12-04.tar.gz" のような圧縮されたtar形式の日付入りファイル名で作成される.バックアップを取得しなくてもeMMCへの移行は問題なく行えるが、念の為バックアップを取得しておくことをお薦めする.


バックアップの取得が済んだら、シリアルコンソールを接続した状態でOpenWRTを再起動させる.再起動後に、OpenWRTのブートメニュー(U-Bootのブートメニュー)が表示される(表示されている時間はわずか3秒程度なのでタイミングを逃さないこと)ので、このメニューが表示されている間に"Tab"キーなどを押下して、時間切れで通常のシステムブートに遷移してしまわないようにする.ブートメニューの内容は次のように表示されているだろう.




        ( ( ( OpenWrt ) ) )  [SD card]       U-Boot 2024.10-OpenWrt-r28959-29397011cc (Oct 19 2025 - 16:37:45 +0000)

      1. Run default boot command.
      2. Boot system via TFTP.
      3. Boot production system from SD card.
      4. Boot recovery system from SD card.
      5. Load production system via TFTP then write to SD card.
      6. Load recovery system via TFTP then write to SD card.
      7. Install bootloader, recovery and production to NAND.
      8. Reboot.
      9. Reset all settings to factory defaults.
      0. Exit


  Press UP/DOWN to move, ENTER to select, ESC to quit
  


最初の行にブートしたデバイスの情報 "[SD card]" やシステムのバージョン等の情報が記載されている.カーソルキー "UP/DOWN" で 項目の7番目にある "7. Install bootloader, recovery and production to NAND." を選択し、リターンキーを押下すると、下記のようなメッセージが表示され、OpenWRTのシステムがSPI-NANDデバイスにコピーされ、SPI-NANDからOpenWRTを起動させることが可能となる.



'spi-nand0' is now active device
* spi-nand0
  - device: spi_nand@0
  - parent: spi@1100a000
  - driver: spi_nand
  - type: NAND flash
  - block size:        0x20000 bytes
  - page size:         0x800 bytes
  - OOB size:          64 bytes
  - OOB available:     24 bytes
  - 0x000000000000-0x000008000000 : "spi-nand0"
          - 0x000000000000-0x000000200000 : "bl2"
          - 0x000000200000-0x000008000000 : "ubi"
Erasing 0x00000000 ... 0x07dfffff (1008 eraseblock(s))
ubi0: default fastmap pool size: 50
ubi0: default fastmap WL pool size: 25
ubi0: attaching mtd2
ubi0: scanning is finished
ubi0: empty MTD device detected
ubi0: attached mtd2 (name "ubi", size 126 MiB)
ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
ubi0: good PEBs: 1008, bad PEBs: 0, corrupted PEBs: 0
ubi0: user volume: 0, internal volumes: 1, max. volumes count: 128
ubi0: max/mean erase counter: 0/0, WL threshold: 4096, image sequence number: 0
ubi0: available PEBs: 982, total reserved PEBs: 26, PEBs reserved for bad PEB handling: 20

MMC read: dev # 0, block # 90112, count 1024 ... 1024 blocks read: OK
Erasing 0x00000000 ... 0x001fffff (16 eraseblock(s))
Writing 524288 byte(s) (256 page(s)) at offset 0x00000000
Writing 524288 byte(s) (256 page(s)) at offset 0x00080000
Writing 524288 byte(s) (256 page(s)) at offset 0x00100000
Writing 524288 byte(s) (256 page(s)) at offset 0x00180000

 ...

     FDT:          fdt-mt7988a-bananapi-bpi-r4-wifi-mt7996a
## Checking hash(es) for FIT Image at 50000000 ...
   Hash(es) for Image 0 (kernel-1): crc32+ sha1+
   Hash(es) for Image 1 (fdt-1): crc32+ sha1+
   Hash(es) for Image 2 (fdt-mt7988a-bananapi-bpi-r4-emmc): crc32+ sha1+
   Hash(es) for Image 3 (fdt-mt7988a-bananapi-bpi-r4-rtc): crc32+ sha1+
   Hash(es) for Image 4 (fdt-mt7988a-bananapi-bpi-r4-sd): crc32+ sha1+
   Hash(es) for Image 5 (fdt-mt7988a-bananapi-bpi-r4-wifi-mt7996a): crc32+ sha1+
   Hash(es) for Image 6 (rootfs-1): crc32+ sha1+
Creating dynamic volume fit of size 17088512
17088512 bytes written to volume fit

MMC read: dev # 0, block # 104448, count 16384 ... 16384 blocks read: OK
Creating dynamic volume emmc_install of size 8388608
8388608 bytes written to volume emmc_install
Press ENTER to  return to menu  



 "ENTER"キーを押下してメニュー画面に戻り、"0. Exit" でブートメニューを終了すると、コンソール画面のプロンプトに "MT7988>" と表示され、ブートローダー "U-Boot" のコマンドモードに移る.この状態で一旦電源を切り、Banana Pi R4のブートセレクタを "NAND" 起動モード[ "A" => 0 (UP), "B" => 1 (DOWN) ] に切り替える.切り替え後、SDカードを抜いて再び電源を入れると、今度はSDカードではなくSPI-NANDからOpenWRTシステムが立ち上がる筈だ.先程と同様に、ブートメニューが表示されている間に、カーソルキーを動かして、自動起動をストップさせると、起動デバイスが "[SPI NAND]" と表示され、メニューの各項目が "SD CARD" から "NAND" に変わっていることが確認できるだろう.




        ( ( ( OpenWrt ) ) )  [SPI-NAND]       U-Boot 2024.10-OpenWrt-r28959-29397011cc (Oct 19 2025 - 16:37:45 +0000)

      1. Run default boot command.
      2. Boot system via TFTP.
      3. Boot production system from NAND.
      4. Boot recovery system from NAND.
      5. Load production system via TFTP then write to NAND.
      6. Load recovery system via TFTP then write to NAND.
      7. Load BL31+U-Boot FIP via TFTP then write to NAND.
      8. Load BL2 preloader via TFTP then write to NAND.
      9. Install bootloader, recovery and production to eMMC.
      a. Reboot.
      b. Reset all settings to factory defaults.
      0. Exit


  Press UP/DOWN to move, ENTER to select, ESC to quit



SPI-NANDからOpenWRTを起動させることが可能なようだが、SPI-NANDの領域は 128MBしかないので、この状態で稼働するOpenWRTはまともには稼働しないだろう.多分、eMMCへOpenWRTのシステムを移行するためだけの仮システムなのではないかと思う.試しにこの状態でOpenWRTを起動させてみると、SDカード上で設定したコンフィグレーションや追加パッケージは完全に消滅しており、素のOpenWRT状態になっていた.OpenWRTのミニルートシステムと言った所だろうか.





BusyBox v1.36.1 (2025-10-19 16:37:45 UTC) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt 24.10.4, r28959-29397011cc
 -----------------------------------------------------
=== WARNING! =====================================
There is no root password defined on this device!
Use the "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.
--------------------------------------------------

root@OpenWrt:~# df -m
Filesystem           1M-blocks      Used Available Use% Mounted on
/dev/root                   11        11         0 100% /rom
tmpfs                     1965         0      1965   0% /tmp
/dev/ubi0_6                 69         0        65   0% /overlay
overlayfs:/overlay          69         0        65   0% /
tmpfs                        1         0         1   0% /dev
root@OpenWrt:~#   



先程のSPI-NANDからOpenWRTを起動した場合のブートメニューの項目に " 9. Install bootloader, recovery and production to eMMC." があることに気付いただろうか.SDカードからSPI-NANDへのシステムコピーと同様に、SPI-NANDからeMMCへのコピーを同じように行う.コピー作業の終了後に、一旦電源を切り、Banana Pi R4のブートセレクタを "eMMC" 起動モード[ "A" => 1 (DOWN), "B" => 0 (UP) ] に切り替える.電源を接続し、OpenWRTを起動させると、今度は eMMCからシステムが起動されていることが確認できるだろう.





      ( ( ( OpenWrt ) ) )  [eMMC]       U-Boot 2024.10-OpenWrt-r28959-29397011cc (Oct 19 2025 - 16:37:45 +0000)

1. Run default boot command.
2. Boot system via TFTP.
3. Boot production system from eMMC.
4. Boot recovery system from eMMC.
5. Load production system via TFTP then write to eMMC.
6. Load recovery system via TFTP then write to eMMC.
7. Load BL31+U-Boot FIP via TFTP then write to eMMC.
8. Load BL2 preloader via TFTP then write to eMMC.
9. Reboot.
a. Reset all settings to factory defaults.
0. Exit
Hit any key to stop autoboot: 3 Hit any key to stop autoboot: 2 

      ( ( ( OpenWrt ) ) )  [eMMC]       U-Boot 2024.10-OpenWrt-r28959-29397011cc (Oct 19 2025 - 16:37:45 +0000)


Press UP/DOWN to move, ENTER to select, ESC to quit

 ...

BusyBox v1.36.1 (2025-10-19 16:37:45 UTC) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt 24.10.4, r28959-29397011cc
 -----------------------------------------------------
root@OpenWrt:~# df -m
Filesystem           1M-blocks      Used Available Use% Mounted on
/dev/root                   11        11         0 100% /rom
tmpfs                     1965         0      1965   0% /tmp
/dev/fitrw                 430        75       354  18% /overlay
overlayfs:/overlay         430        75       354  18% /
tmpfs                        1         0         1   0% /dev
root@OpenWrt:~# 


eMMCに作成されたルートパーティションのサイズを確認すると、約4.3GB程有るので、OpenWRT用のルートパーティションとしては十分すぎる容量が確保されている.信頼性や耐久性の低いSDカードの使用よりも、この内臓のeMMCを用いたOpenWRTの運用をお薦めする.勿論、従来通りのSDカードでの運用も可能(単純にブートセレクタを操作するだけ)なので、通常運用はeMMCで、一時的な設定変更やテスト運用はSDカードというように使い分けると良いだろう.


Calendar

December 2025
S M T W T F S
 123456
78910111213
14151617181920
21222324252627
28293031  
  • Blogroll

  • Meta