| | 本章では、microSDカードから直接起動(以降「SDブート」と表記します)する手順を示します。
SDブートを活用すると、SDカードを取り替えることでシステムイメージを変更することができます。
本章に示す手順を実行するためには、容量が2Gbyte以上のmicroSDカードを必要とします。
例としてDebian GNU/Linux 10(コードネームbuster)をSDブートする手順を示しますが、他のOSをSDブートすることも可能です。 | |
---|
SDブートを行った場合、ブートローダーの設定はeMMCに保存されます。 |
microSDカードに対する作業は、ATDEで行います。そのため、ATDEにmicroSDカードを接続する必要があります。詳しくは「取り外し可能デバイスの使用」を参照してください。 ATDEにmicroSDカードを接続すると、自動的に/media/ディレクトリにマウントされます。本章に記載されている手順を実行するためには、次のようにmicroSDカードをアンマウントしておく必要があります。 本章で使用するブートローダーイメージファイルの最新版ファイルは、Armadilloサイトでダウンロードすることができます。新機能の追加や不具合の修正などが行われているため、最新バージョンを利用することを推奨します。 ATDEでブートディスクを作成します。ブートディスクの作成に使用するファイルを次に示します。 表16.1 ブートディスクの作成に使用するファイル ファイル | ファイル名 |
---|
ブートローダーイメージ | u-boot-a600-console-uart3-v2018.03-at_[version]_.imx |
表16.2「ブートディスクの構成例」に示します。 表16.2 ブートディスクの構成例 パーティション番号 | パーティションサイズ | ファイルシステム | 説明 |
---|
1 | 128MByte | FAT32 | 第2パーティションにルートファイルシステムを構築するため、第1パーティションを作成します。 | 2 | 残り全て | ext4 | ルートファイルシステムを構築するためにext4ファイルシステムを構築しておきます。 |
ブートローダーイメージファイルを取得し、ATDE内に配置しておきます。
[ATDE ~]$ ls
u-boot-a600-console-uart3-v2018.03-at[version].imx
SDカードに2つのプライマリパーティションを作成します。
[ATDE ~]$ sudo fdisk /dev/sdb
Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): o
Created a new DOS disklabel with disk identifier 0x2b685734.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (1-4, default 1):
First sector (2048-7761919, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-7761919, default 7761919): +128M
Created a new partition 1 of type 'Linux' and of size 128 MiB.
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (2-4, default 2):
First sector (264192-7761919, default 264192):
Last sector, +sectors or +size{K,M,G,T,P} (264192-7761919, default 7761919):
Created a new partition 2 of type 'Linux' and of size 3.6 GiB.
Command (m for help): t
Partition number (1,2, default 2): 1
Hex code (type L to list all codes): b
If you have created or modified any DOS 6.x partitions, please see the fdisk documentation for additional information.
Changed type of partition 'Linux' to 'W95 FAT32'.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
[ATDE ~]$ |
SDカードのパーティションテーブル操作を開始します。USBメモリなどを接続している場合は、SDカードのデバイスファイルがsdcやsddなど本実行例と異なる場合があります。
| |
新しく空のDOSパーティションテーブルを作成します。
| |
新しくパーティションを追加します。
| |
パーティション種別にはデフォルト値(p: プライマリ)を指定するので、そのまま改行を入力してください。
| |
パーティション番号にはデフォルト値(1)を指定するので、そのまま改行を入力してください。
| |
開始セクタにはデフォルト値(使用可能なセクタの先頭)を使用するので、そのまま改行を入力してください。
| |
最終シリンダは、128MByte分を指定します。
| |
新しくパーティションを追加します。
| |
パーティション種別にはデフォルト値(p: プライマリ)を指定するので、そのまま改行を入力してください。
| |
パーティション番号にはデフォルト値(2)を指定するので、そのまま改行を入力してください。
| |
開始セクタにはデフォルト値(第1パーティションの最終セクタの次のセクタ)を使用するので、そのまま改行を入力してください。
| |
最終セクタにはデフォルト値(末尾セクタ)を使用するので、そのまま改行を入力してください。
| |
パーティションのシステムタイプを変更します。
| |
第1パーティションを指定します。
| |
パーティションのシステムタイプに0xb(Win95 FAT32)を指定します。
| |
変更をSDカードに書き込みます。
|
パーティションリストを表示し、2つのパーティションが作成されていることを確認してください。
[ATDE ~]$ sudo fdisk -l /dev/sdb
Disk /dev/sdb: 3.7 GiB, 3974103040 bytes, 7761920 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: 0x2b685734
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 264191 262144 128M b W95 FAT32
/dev/sdb2 264192 7761919 7497728 3.6G 83 Linux
それぞれのパーティションにファイルシステムを構築します。
[ATDE ~]$ sudo mkfs.vfat -F 32 /dev/sdb1
mkfs.fat 4.1 (2017-01-24)
[ATDE ~]$ sudo mkfs.ext4 /dev/sdb2
mke2fs 1.44.5 (15-Dec-2018)
Creating filesystem with 937216 4k blocks and 234320 inodes
Filesystem UUID: AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
[ATDE ~]$ |
第1パーティションにFAT32ファイルシステムを構築します。
| |
第2パーティションにext4ファイルシステムを構築します。
|
ブートローダーイメージファイルをmicroSDカードに書き込みます。
[ATDE ~]$ ls
u-boot-a600-console-uart3-v2018.03-at[version].imx
[ATDE ~]$ sudo dd if=u-boot-a600-console-uart3-v2018.03-at[version].imx of=/dev/sdb bs=1k seek=1 conv=fsync
「ブートディスクの作成」で作成したブートディスクにルートファイルシステムを構築します。
Debian GNU/Linuxのルートファイルシステムを構築することができます。ルートファイルシステムの構築に使用するファイルを次に示します。 表16.3 ルートファイルシステムの構築に使用するファイル Linuxディストリビューション | ファイル名 | ファイルの説明 |
---|
Debian GNU/Linux | debian-buster-armhf-aiota6-[version].tar.gz | ARM(armhf)アーキテクチャ用Debian GNU/Linux 10(コードネームbuster)のルートファイルシステムアーカイブ |
16.2.1. Debian GNU/Linuxのルートファイルシステムを構築するDebian GNU/Linuxルートファイルシステムアーカイブから、ルートファイルシステムを構築する手順を次に示します。 16.2.1.1. 手順:Debian GNU/Linuxルートファイルシステムアーカイブからルートファイルシステムを構築する
ルートファイルシステムをブートディスクの第2パーティションに構築します。
[ATDE ~]$ mkdir sd
[ATDE ~]$ sudo mount -t ext4 /dev/sdb2 sd
[ATDE ~]$ sudo tar zxf debian-buster-armhf-aiota6-[version].tar.gz -C sd
[ATDE ~]$ sudo umount sd
[ATDE ~]$ rmdir sd |
SDカードをマウントするためのsd/ディレクトリを作成します。
| |
第2パーティションをsd/ディレクトリにマウントします。
| |
ルートファイルシステムアーカイブをsd/ディレクトリに展開します。
| |
sd/ディレクトリにマウントしたブートディスクの第2パーティションをアンマウントします。
| |
sd/ディレクトリを削除します。
|
| |
---|
アンマウントが完了する前にSDカードを作業用PCから取り外すと、SDカードのデータが破損する場合があります。 |
16.3. LinuxカーネルイメージとDTBの配置「ブートディスクの作成」で作成したブートディスクにLinuxカーネルイメージおよびDTB(Device Tree Blob)を配置します。使用するファイルを次に示します。
以降、DTB(Device Tree Blob)をDTBと表記します。 表16.4 ブートディスクの作成に使用するファイル ファイル | ファイル名 |
---|
Linuxカーネルイメージ | uImage-a600-v4.14-at_[version]_ | DTB | armadillo-iot-a6-v4.14-at_[version]_.dtb |
microSDカードにLinuxカーネルイメージおよびDTBを配置する際は、次の条件を満たすようにしてください。
この条件から外れた場合、ブートローダーがLinuxカーネルイメージまたはDTBを検出することができなくなる場合があります。 表16.5 ブートローダーがLinuxカーネルを検出可能な条件 項目 | 条件 |
---|
ファイルシステム | ext4 | 圧縮形式 | 非圧縮 | Linuxカーネルイメージファイル名 | uImage | DTBファイル名 | a640.dtb |
LinuxカーネルイメージおよびDTBをブートディスクに配置する手順を次に示します。 16.3.1. 手順:LinuxカーネルイメージおよびDTBの配置
LinuxカーネルイメージおよびDTBを準備しておきます。
[ATDE ~]$ ls
uImage-a600-v4.14-at[version] armadillo-iotg-a6-v4.14-at[version].dtb
Linuxカーネルイメージをブートディスクの第2パーティションに配置します。
[ATDE ~]$ mkdir sd
[ATDE ~]$ sudo mount -t ext4 /dev/sdb2 sd
[ATDE ~]$ sudo cp uImage-a600-v4.14-at[version] sd/boot/uImage
[ATDE ~]$ sudo cp armadillo-iotg-a6-v4.14-at[version].dtb sd/boot/a640.dtb
[ATDE ~]$ sudo umount sd
[ATDE ~]$ rmdir sd |
SDカードをマウントするためのsd/ディレクトリを作成します。
| |
第2パーティションをsd/ディレクトリにマウントします。
| |
Linuxカーネルイメージをsd/ディレクトリにコピーします。
| |
DTBをsd/ディレクトリにコピーします。
| |
sd/ディレクトリにマウントしたブートディスクの第2パーティションをアンマウントします。
| |
sd/ディレクトリを削除します。
| |
---|
アンマウントが完了する前にSDカードを作業用PCから取り外すと、SDカードのデータが破損する場合があります。 |
|
「ブートディスクの作成」で作成したブートディスクから起動する方法を説明します。 -
Armadilloに電源を投入する前に、ブートディスクをCON1(microSDスロット)に挿入します。 また、サブユニット SW1(ユーザー スイッチ) を microSD 側に設定します。 サブユニット SW1(ユーザースイッチ) の設定に関しては「スライドスイッチの設定について」を参照ください。
電源を投入すると、以下の様にブートディスクから起動します。
U-Boot 2018.03-at8 installer+ (Mar 05 2021 - 18:01:07 +0900)
CPU: Freescale i.MX6ULL rev1.1 at 396 MHz
Reset cause: POR
I2C: ready
DRAM: 512 MiB
MMC: FSL_SDHC: 0, FSL_SDHC: 1
In: serial
Out: serial
Err: serial
PMIC: PFUZE3000 DEV_ID=0x30 REV_ID=0x11
Net: FEC
Hit any key to stop autoboot: 0
7253576 bytes read in 367 ms (18.8 MiB/s)
26390 bytes read in 54 ms (476.6 KiB/s)
## Booting kernel from Legacy Image at 82000000 ...
Image Name: Linux-4.14-at31
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 7253512 Bytes = 6.9 MiB
Load Address: 82000000
Entry Point: 82000000
Verifying Checksum ... OK
## Flattened Device Tree blob at 83000000
Booting using the fdt blob at 0x83000000
Loading Kernel Image ... OK
Loading Device Tree to 9eefa000, end 9ef03715 ... OK
Starting kernel ...
| |
| | | |
| |