| | 本章では、USB メモリから起動(以降「USB ブート」と表記します)する手順を示します。 | |
---|
USB ブート時、 eMMC のブートローダーを利用しています。その為、eMMC のブートローダーの修復は USB ブートではできません。 eMMC ブートローダーの復旧は SD ブートで実施ください。SD ブートに関する詳細は、16章SDブートの活用を参照ください。 |
USBブートを活用すると、USBメモリを取り替えることでシステムイメージを変更することができます。
本章に示す手順を実行するためには、容量が2Gbyte以上のUSBメモリを必要とします。
例としてDebian GNU/Linux 10(コードネームbuster)をUSBブートする手順を示しますが、他のOSをUSBブートすることも可能です。 USBメモリに対する作業は、ATDEで行います。そのため、ATDEにUSBメモリを接続する必要があります。詳しくは「取り外し可能デバイスの使用」を参照してください。 ATDEにUSBメモリを接続すると、自動的に/media/ディレクトリにマウントされます。本章に記載されている手順を実行するためには、次のようにUSBメモリをアンマウントしておく必要があります。 本章で使用するブートローダーイメージファイルの最新版ファイルは、Armadilloサイトでダウンロードすることができます。新機能の追加や不具合の修正などが行われているため、最新バージョンを利用することを推奨します。 ATDEでブートディスクを作成します。 表15.1「ブートディスクの構成例」に示します。 表15.1 ブートディスクの構成例 パーティション番号 | パーティションサイズ | ファイルシステム | 説明 |
---|
1 | 128MByte | FAT32 | 第2パーティションにルートファイルシステムを構築するため、第1パーティションを作成します。 | 2 | 残り全て | ext4 | ルートファイルシステムを構築するためにext4ファイルシステムを構築しておきます。 |
USBメモリに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 0xc659ba45
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-60868607, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-60868607, default 60868607): +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-60868607, default 264192):
Last sector, +sectors or +size{K,M,G,T,P} (264192-60868607, default 60868607):
Created a new partition 2 of type 'Linux' and of size 28.9 GiB.
Command (m for help): t
Partition number (1,2, default 2): 1
Hex code (type L to list all codes): b
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 ~]$ |
USBメモリのパーティションテーブル操作を開始します。他にリムバーブルデバイスなどを接続している場合は、USBメモリのデバイスファイルがsdcやsddなど本実行例と異なる場合があります。
| |
新しく空のDOSパーティションテーブルを作成します。
| |
新しくパーティションを追加します。
| |
パーティション種別にはデフォルト値(p: プライマリ)を指定するので、そのまま改行を入力してください。
| |
パーティション番号にはデフォルト値(1)を指定するので、そのまま改行を入力してください。
| |
開始セクタにはデフォルト値(使用可能なセクタの先頭)を使用するので、そのまま改行を入力してください。
| |
最終シリンダは、128MByte分を指定します。
| |
新しくパーティションを追加します。
| |
パーティション種別にはデフォルト値(p: プライマリ)を指定するので、そのまま改行を入力してください。
| |
パーティション番号にはデフォルト値(2)を指定するので、そのまま改行を入力してください。
| |
開始セクタにはデフォルト値(第1パーティションの最終セクタの次のセクタ)を使用するので、そのまま改行を入力してください。
| |
最終セクタにはデフォルト値(末尾セクタ)を使用するので、そのまま改行を入力してください。
| |
パーティションのシステムタイプを変更します。
| |
第1パーティションを指定します。
| |
パーティションのシステムタイプに0xb(Win95 FAT32)を指定します。
| |
変更をUSBメモリに書き込みます。
|
パーティションリストを表示し、2つのパーティションが作成されていることを確認してください。
[ATDE ~]$ sudo fdisk -l /dev/sdb
Disk /dev/sdb: 29 GiB, 31164727296 bytes, 60868608 sectors
Disk model: USB DISK
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: 0xc659ba45
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 264191 262144 128M b W95 FAT32
/dev/sdb2 264192 60868607 60604416 28.9G 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 7575552 4k blocks and 1896832 inodes
Filesystem UUID: 0eb75985-a5c5-497c-8939-a3f96be2000e
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
[ATDE ~]$ |
第1パーティションにFAT32ファイルシステムを構築します。
| |
第2パーティションにext4ファイルシステムを構築します。
|
「ブートディスクの作成」で作成したブートディスクにルートファイルシステムを構築します。
Debian GNU/Linuxのルートファイルシステムを構築することができます。ルートファイルシステムの構築に使用するファイルを次に示します。 表15.2 ルートファイルシステムの構築に使用するファイル Linuxディストリビューション | ファイル名 | ファイルの説明 |
---|
Debian GNU/Linux | debian-buster-armhf-aiota6-[version].tar.gz | ARM(armhf)アーキテクチャ用Debian GNU/Linux 10(コードネームbuster)のルートファイルシステムアーカイブ |
15.2.1. Debian GNU/Linuxのルートファイルシステムを構築するDebian GNU/Linuxルートファイルシステムアーカイブから、ルートファイルシステムを構築する手順を次に示します。 15.2.1.1. 手順:Debian GNU/Linuxルートファイルシステムアーカイブからルートファイルシステムを構築する
ルートファイルシステムをブートディスクの第2パーティションに構築します。
[ATDE ~]$ mkdir work
[ATDE ~]$ sudo mount -t ext4 /dev/sdb2 work
[ATDE ~]$ sudo tar zxf debian-buster-armhf-aiota6-[version].tar.gz -C work
[ATDE ~]$ sudo umount work
[ATDE ~]$ rmdir work |
USBメモリをマウントするためのwork/ディレクトリを作成します。
| |
第2パーティションをwork/ディレクトリにマウントします。
| |
ルートファイルシステムアーカイブをwork/ディレクトリに展開します。
| |
work/ディレクトリにマウントしたブートディスクの第2パーティションをアンマウントします。
| |
work/ディレクトリを削除します。
|
| |
---|
アンマウントが完了する前にUSBメモリを作業用PCから取り外すと、USBメモリのデータが破損する場合があります。 |
15.3. LinuxカーネルイメージとDTBの配置「ブートディスクの作成」で作成したブートディスクにLinuxカーネルイメージおよびDTB(Device Tree Blob)を配置します。使用するファイルを次に示します。
以降、DTB(Device Tree Blob)をDTBと表記します。 表15.3 ブートディスクの作成に使用するファイル ファイル | ファイル名 |
---|
Linuxカーネルイメージ | uImage-aiotg-a6-v4.14-at_[version]_ | DTB | armadillo-iot-a6-v4.14-at_[version]_.dtb |
USBメモリにLinuxカーネルイメージおよびDTBを配置する際は、次の条件を満たすようにしてください。
この条件から外れた場合、ブートローダーがLinuxカーネルイメージまたはDTBを検出することができなくなる場合があります。 表15.4 ブートローダーがLinuxカーネルを検出可能な条件 項目 | 条件 |
---|
ファイルシステム | ext4 | 圧縮形式 | 非圧縮 | Linuxカーネルイメージファイル名 | uImage | DTBファイル名 | a640.dtb |
LinuxカーネルイメージおよびDTBをブートディスクに配置する手順を次に示します。 15.3.1. 手順:LinuxカーネルイメージおよびDTBの配置
LinuxカーネルイメージおよびDTBを準備しておきます。
[ATDE ~]$ ls
uImage-aiotg-a6-v4.14-at[version] armadillo-iotg-a6-v4.14-at[version].dtb
Linuxカーネルイメージをブートディスクの第2パーティションに配置します。
[ATDE ~]$ mkdir work
[ATDE ~]$ sudo mount -t ext4 /dev/sdb2 work
[ATDE ~]$ sudo cp uImage-aiotg-a6-v4.14-at[version] work/boot/uImage
[ATDE ~]$ sudo cp armadillo-iotg-a6-v4.14-at[version].dtb work/boot/a640.dtb
[ATDE ~]$ sudo umount work
[ATDE ~]$ rmdir work |
USBメモリをマウントするためのwork/ディレクトリを作成します。
| |
第2パーティションをwork/ディレクトリにマウントします。
| |
Linuxカーネルイメージをwork/ディレクトリにコピーします。
| |
DTBをwork/ディレクトリにコピーします。
| |
work/ディレクトリにマウントしたブートディスクの第2パーティションをアンマウントします。
| |
work/ディレクトリを削除します。
| |
---|
アンマウントが完了する前にUSBメモリを作業用PCから取り外すと、USBメモリのデータが破損する場合があります。 |
|
「ブートディスクの作成」で作成したブートディスクから起動する方法を説明します。 -
Armadilloに電源を投入する前に、ブートディスクをCON5(USB Type-A コネクタ)に挿入します。
SW1(ユーザースイッチ)を押しながら電源を投入します。
U-Boot 2018.03-at8 (Feb 17 2020 - 19:19:11 +0900)
CPU: Freescale i.MX6ULL rev1.0 at 396 MHz
Reset cause: POR
I2C: ready
DRAM: 512 MiB
MMC: FSL_USBHC: 0, FSL_USBHC: 1
Loading Environment from MMC... OK
In: serial
Out: serial
Err: serial
PMIC: PFUZE3000 DEV_ID=0x30 REV_ID=0x11
Net: FEC
=>
以下のコマンドを入力し USB メモリからの起動を実行します。
=> run usbboot
以下のようにログが表示され USB メモリからの起動が実行されます。
starting USB...
USB0: USB EHCI 1.00
scanning bus 0 for devices... 1 USB Device(s) found
USB1: USB EHCI 1.00
scanning bus 1 for devices... 2 USB Device(s) found
scanning usb for storage devices... 1 Storage Device(s) found
7249760 bytes read in 314 ms (22 MiB/s)
26390 bytes read in 130 ms (198.2 KiB/s)
stopping USB..
## Booting kernel from Legacy Image at 82000000 ...
Image Name: Linux-4.14-at28-ge97480002d52-di
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 7249696 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 9eef9000, end 9ef02715 ... OK
Starting kernel ...
| |
| | | |
| |