Armadillo-IoT(G3)をSDブートさせるためのブートディスクを作成する方法です。
各製品マニュアルには、PC上で動作する開発環境(ATDE)を使って作成する方法が記載されていますが、
ここでは、Armadillo-IoT(G3)上で作成します。
下記の手順にあたり、SDカードとUSBメモリを用意ください。
SDカード(下記の手順でSDブート用のブートディスクにする)
USBメモリ(SDブートで起動するイメージファイルを置く)
1. USBメモリにSDブートで起動するイメージファイルを置く
USBメモリに下記の4つのイメージファイルを保存しておきます。
ブートローダー
カーネル
DTB
ユーザーランド
ここでは例として、下記の標準ソフトのイメージファイルをUSBメモリに保存しておきます。
ブートローダー:u-boot-x1-at25.bin
カーネル:uImage-x1-v4.9-at30
DTB(注):armadillo_iotg_g3_m1-v4.9-at30.dtb
ユーザーランド:debian-buster-armhf_aiotg3_20230926.tar.gz
注)DTBは、Armadillo-IoT(G3)のモデルによって異なります。 ここではM1モデル向けを使用しています。
M1モデル以外の場合は、
Armadillo-IoTゲートウェイ G3 Linuxカーネルより、使用するモデルに合わせて選択できます。
下記の説明内では、上記のイメージファイル名で記述します。
異なるイメージファイル名を使用する場合は、使用するイメージファイル名に読み替えてください。
2. Armadillo-IoT(G3)の起動
Armadillo-IoT(G3)に、手順1で作成したUSBメモリと、SDカードを接続して起動します。
起動後、USBメモリをマウントし、手順1のファイルが見えることを確認します。
root@armadillo:~# mount /dev/sda1 /mnt root@armadillo:~# ls -1 /mnt armadillo_iotg_g3_m1-v4.9-at30.dtb debian-buster-armhf_aiotg3_20230926.tar.gz u-boot-x1-at25.bin uImage-x1-v4.9-at30
3. SDカードをブートディスクにする
手順2でマウントしたUSBメモリ内のイメージファイルを使って、SDカードでブートする環境を構築します。
3-1. SDカードに2つのプライマリパーティションを作成
root@armadillo:~# fdisk /dev/mmcblk0 // fdiskコマンドをSDカード(/dev/mmcblk0)に対して実行します。 // 以下、fdisk内での設定になります。 Welcome to fdisk (util-linux 2.33.1). Changes will remain in memory only, until you decide t mmcblk0: p1 p2 o write them. Be careful before using the write command. Command (m for help): o // oを入力します。 Created a new DOS disklabel with disk identifier 0x434e479f. Command (m for help): n // nを入力します。 Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): // 文字を入力せず、Enterキーを入力します。 Using default response p. Partition number (1-4, default 1): // 文字を入力せず、Enterキーを入力します。 First sector (2048-15138815, default 2048): // 文字を入力せず、Enterキーを入力します。 Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-15138815, default 15138815): +128M // +128Mと入力します。 Created a new partition 1 of type 'Linux' and of size 128 MiB. Partition #1 contains a vfat signature. Do you want to remove the signature? [Y]es/[N]o: y // SDカードの使用状態(パーティション等)によっては、このような問いが出ます。 // この問いが出た場合は、yを入力します。 The signature will be removed by a write command. Command (m for help): n // nを入力します。 Partition type p primary (1 primary, 0 extended, 3 free) e extended (container for logical partitions) Select (default p): // 文字を入力せず、Enterキーを入力します。 Using default response p. Partition number (2-4, default 2): // 文字を入力せず、Enterキーを入力します。 First sector (264192-15138815, default 264192): // 文字を入力せず、Enterキーを入力します。 Last sector, +/-sectors or +/-size{K,M,G,T,P} (264192-15138815, default 15138815): // 文字を入力せず、Enterキーを入力します。 Created a new partition 2 of type 'Linux' and of size 7.1 GiB. Partition #2 contains a ext4 signature. Do you want to remove the signature? [Y]es/[N]o: y // SDカードの使用状態(パーティション等)によっては、このような問いが出ます。 // この問いが出た場合は、yを入力します。 The signature will be removed by a write command. Command (m for help): t // tを入力します。 Partition number (1,2, default 2): 1 // 1を入力します。 Hex code (type L to list all codes): b // bを入力します。 Changed type of partition 'Linux' to 'W95 FAT32'. Command (m for help): w // wを入力します。 The partition table has been altered. Calling ioctl() to re-read partition table. mmcblk0: p1 p2 Syncing disks. // 以上で、fdisk内での設定が完了し、標準入力のプロンプトに戻ります。 root@armadillo:~#
#
参考)上記のコマンドの説明については、
Armadillo-IoT ゲートウェイ G3製品マニュアル
15.1. ブートディスクの作成
の「2. SDカードに2つのプライマリパーティションを作成します。」を参照ください。
3-2. 2つのパーティションが作成されていることを確認
mmcblk0p1、mmcblk0p2の2つのパーティションが作成されていることを確認します。
root@armadillo:~# fdisk -l /dev/mmcblk0 Disk /dev/mmcblk0: 7.2 GiB, 7751073792 bytes, 15138816 sectors 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: dos Disk identifier: 0x434e479f Device Boot Start End Sectors Size Id Type /dev/mmcblk0p1 2048 264191 262144 128M b W95 FAT32 /dev/mmcblk0p2 264192 15138815 14874624 7.1G 83 Linux
3-3. それぞれのパーティションにファイルシステムを構築
root@armadillo:~# mkfs.vfat -F 32 /dev/mmcblk0p1 root@armadillo:~# mkfs.ext4 /dev/mmcblk0p2
以下、手順2でマウントしたUSBメモリ(/mnt)内のイメージファイルをSDカード(/dev/mmcblk0)に書き込みます。
3.4. ブートローダーの書き込み
(例:u-boot-x1-at25.binの場合)
root@armadillo:~# dd if=/mnt/u-boot-x1-at25.bin of=/dev/mmcblk0 bs=1k skip=1 seek=1
3.5. ルートファイルシステムの構築
(例:debian-buster-armhf_aiotg3_20230926.tar.gzの場合)
root@armadillo:~# mkdir sd root@armadillo:~# mount -t ext4 /dev/mmcblk0p2 sd root@armadillo:~# tar zxf /mnt/debian-buster-armhf_aiotg3_20230926.tar.gz -C sd root@armadillo:~# umount sd root@armadillo:~# rmdir sd
3.6. LinuxカーネルイメージとDTBの配置
(例:uImage-x1-v4.9-at30、armadillo_iotg_g3_m1-v4.9-at30.dtbの場合)
root@armadillo:~# mkdir sd root@armadillo:~# mount -t vfat /dev/mmcblk0p1 sd root@armadillo:~# cp /mnt/uImage-x1-v4.9-at30 sd/uImage root@armadillo:~# cp /mnt/armadillo_iotg_g3_m1-v4.9-at30.dtb sd/armadillo_iotg_g3_m1.dtb # 3G/LTE非搭載モデル(AGX310*)のイメージを書き込む場合は、末尾を"sd/armadillo_iotg_g3.dtb" に読み替えてください。 root@armadillo:~# umount sd root@armadillo:~# rmdir sd
以上で、ブートディスクの作成は終了です。
補足)
手順2でマウントしUSBメモリをArmadillo-IoT(G3)から取り外す際には、アンマウントします。
root@armadillo:~# umount /mnt
SDブートの実行方法は製品マニュアルの下記の章を参照下さい。
Armadillo-IoT ゲートウェイ G3製品マニュアル
15.4. SDブートの実行