動作確認方法

本章では、ハードウェアの動作確認に使用するコマンドやその実行手順について説明します。

ハードウェアの動作確認以外が目的のコマンドや手順については 10章Howto を参照してください。

7.1. ネットワーク

ここでは、ネットワークの設定方法について説明します。

7.1.1. 接続可能なネットワーク

Armadillo-640 は、1つの Ethernet ポートが搭載されています。 Linuxからは、 eth0 に見えます。

表7.1 ネットワークとネットワークデバイス

ネットワーク ネットワークデバイス 出荷時の設定

Ethernet

eth0

DHCP


7.1.2. IP アドレスの確認方法

Armadillo-640 の IP アドレスを確認するには、ip addr コマンドを使用します。

[armadillo ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:11:0c:00:00:f3 brd ff:ff:ff:ff:ff:ff
    inet 192.0.2.0/24 brd 192.0.2.255 scope global dynamic noprefixroute eth0
       valid_lft 28786sec preferred_lft 28786sec
    inet6 2001:db8::/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

図7.1 IP アドレスの確認


inet となっている箇所が IP アドレスです。 特定のインターフェースのみを表示したい場合は、以下のようにします。

[armadillo ~]# ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:11:0c:00:0b:79 brd ff:ff:ff:ff:ff:ff
    inet 192.0.2.0/24 brd 192.0.2.255 scope global dynamic noprefixroute eth0
       valid_lft 28656sec preferred_lft 28656sec
    inet6 2001:db8::/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

図7.2 IP アドレス(eth0)の確認


7.1.3. ネットワークの設定方法

Armadillo-640 では、通常の Linux システムと同様、ネットワークインターフェースの設定は NetworkManager を使用します。 NetworkManager はすべてのネットワーク設定をコネクションとして管理します。コネクションには「どのようにネットワークへ接続するか」、 「どのようにネットワークを作成するか」を記述し、 /etc/NetworkManager/system-connections/ に保存します。 また、1つのデバイスに対して複数のコネクションを保存することは可能ですが、1つのデバイスに対して有効化にできるコネクションは1つだけです。

NetworkManager は、従来の /etc/network/interfaces を使った設定方法もサポートしていますが、本書では nmcli を用いた方法を中心に紹介します。

7.1.3.1. nmcli について

nmcli は NetworkManager を操作するためのコマンドラインツールです。 図7.3「nmcli のコマンド書式」nmcli の書式を示します。このことから、 nmcli は「オブジェクト (OBJECT) というものが存在し、 それぞれのオブジェクトに対してコマンド (COMMAND) を実行する。」という書式でコマンドを入力することがわかります。 また、オブジェクトそれぞれに help が用意されていることもここから読み取れます。

nmcli [ OPTIONS ] OBJECT { COMMAND | help }

図7.3 nmcli のコマンド書式


7.1.4. nmcli の基本的な使い方

ここでは nmcli の、基本的な使い方を説明します。

7.1.4.1. コネクションの一覧

登録されているコネクションの一覧を確認するには、次のようにコマンドを実行します。 [7]

[armadillo ~]# nmcli connection
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  a6f99120-b4ed-3823-a6f0-0491d4b6101e  ethernet  eth0

図7.4 コネクションの一覧


表示された NAME については、以降 [ID] として利用することができます。

7.1.4.2. コネクションの有効化・無効化

コネクションを有効化するには、次のようにコマンドを実行します。

[armadillo ~]# nmcli connection up [ID]

図7.5 コネクションの有効化


コネクションを無効化するには、次のようにコマンドを実行します。

[armadillo ~]# nmcli connection down [ID]

図7.6 コネクションの無効化


7.1.4.3. コネクションの作成

コネクションを作成するには、次のようにコマンドを実行します。

[armadillo ~]# nmcli connection add con-name [ID] type [type] ifname [interface name]

図7.7 コネクションの作成


[ID] にはコネクションの名前(任意)、[type] には ethernet、wifi といった接続タイプ、 [interfacename] にはインターフェース名(デバイス)を入力します。 これにより /etc/NetworkManager/system-connections/ に[ID]の名前でコネクション ファイルが作成されます。このファイルを vi などで編集し、コネクションを修正する ことも可能です。

Armadillo-640 を再起動したときにコネクションファイルが消えてしまわないように、 persist_file コマンドで永続化する必要があります。 persist_file コマンドに関する詳細は「overlayfs と persist_file について」を参照してください。

[armadillo ~]# persist_file /etc/NetworkManager/system-connections/<コネクションファイル名>

図7.8 コネクションファイルの永続化


[注記]

別の Armadillo-640 からコネクションファイルをコピーした場合は、コネクションファイルの パーミッションを 600 に設定してください。 600 に設定後、 nmcli c reload コマンドでコネクションファイルを再読込します。

[armadillo ~]# chmod 600 /etc/NetworkManager/system-connections/<コネクションファイル名>
[armadillo ~]# persist_file /etc/NetworkManager/system-connections/<コネクションファイル名>
[armadillo ~]# nmcli c reload

swu イメージを使用してコネクションファイルのアップデートを行う場合は、 swu イメージに含めるコネクションファイルのパーミッションを 600 に設定してから、 swu イメージを作成してください。 アップデート実行時には swu イメージ作成時のパーミッションが維持されるため、 上記のコマンド実行手順は不要です。 swu イメージに関しては 「Armadilloのソフトウェアをアップデートする」 を参考にしてください。

7.1.4.4. コネクションの削除

コネクションを削除するには、次のようにコマンドを実行します。

[armadillo ~]# nmcli connection delete [ID]

図7.9 コネクションの削除


これにより /etc/NetworkManager/system-connections/ のコネクションファイルも同時に削除されます。 コネクションの作成と同様に persist_file コマンドで永続化する必要があります。

[armadillo ~]# persist_file -d /etc/NetworkManager/system-connections/<コネクションファイル名>

図7.10 コネクションファイル削除時の永続化


7.1.4.5. 固定IPアドレスに設定する

表7.2「固定 IP アドレス設定例」の内容に設定する例を、 図7.11「固定 IP アドレス設定」に示します。

表7.2 固定 IP アドレス設定例

項目設定

IP アドレス

192.0.2.10

マスク長

24

デフォルトゲートウェイ

192.0.2.1


[armadillo ~]# nmcli connection modify [ID] \
ipv4.method manual ipv4.addresses 192.0.2.10/24 ipv4.gateway 192.0.2.1

図7.11 固定 IP アドレス設定


7.1.4.6. DNS サーバーを指定する

DNS サーバーを指定する例を、図7.12「DNS サーバーの指定」に示します。

[armadillo ~]# nmcli connection modify [ID] ipv4.dns 192.0.2.1

図7.12 DNS サーバーの指定


7.1.4.7. DHCP に設定する

DHCP に設定する例を、図7.13「DHCP の設定」に示します。

[armadillo ~]# nmcli connection modify [ID] ipv4.method auto

図7.13 DHCP の設定


[注記]

-ipv4.addresses のように、プロパティ名の先頭に "-" を付けることで設 定したプロパティを削除することができます。反対に "+" を付けることで プロパティを追加することができます。

7.1.4.8. コネクションの修正を反映する

有効化されているコネクションを修正した場合、かならず修正したコネクションを再 度有効化してください。

[armadillo ~]# nmcli connection down [ID]
[armadillo ~]# nmcli connection up [ID]

図7.14 コネクションの修正の反映


7.1.4.9. デバイスの一覧

デバイスの一覧(デバイス名、タイプ、状態、有効なコネクション)を確認するには、次のようにコマン ドを実行します。

[armadillo ~]# nmcli device
DEVICE  TYPE      STATE        CONNECTION
eth0    ethernet  connected    Wired connection 1
lo      loopback  unmanaged    --

図7.15 デバイスの一覧


7.1.4.10. デバイスの接続

デバイスを接続するには、次のようにコマンドを実行します。

[armadillo ~]# nmcli device connect [ifname]

図7.16 デバイスの接続


[注記]

デバイスを接続するには、接続しようとしているデバイスの有効なコネク ションが必要です。"Error: neither a valid connection nor device given" というメッセージが表示された場合には、 nmcli connection など で有効なコネクションがあるかを確認してください。

7.1.4.11. デバイスの切断

デバイスを切断するには、次のようにコマンドを実行します。

[armadillo ~]# nmcli device disconnect [ifname]

図7.17 デバイスの切断


7.1.5. 有線 LAN

有線 LAN で正常に通信が可能か確認します。設定を変更した場合、必ず変更したインターフェースを再度有効化してください。

同じネットワーク内にある通信機器と PING 通信を行います。以下の例では、通信機器が「192.0.2.20」という IP アドレスを持っていると想定しています。

[armadillo ~]# ping -I eth0 -c 3 192.0.2.20 1
PING 192.0.2.20 (192.0.2.20): 56 data bytes
64 bytes from 192.0.2.20: seq=0 ttl=64 time=3.056 ms
64 bytes from 192.0.2.20: seq=1 ttl=64 time=1.643 ms
64 bytes from 192.0.2.20: seq=2 ttl=64 time=1.633 ms

--- 192.0.2.20 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 1.633/2.110/3.056 ms

図7.18 有線 LAN の PING 確認


1

-I オプションでインターフェースを指定できます。

[注記]

有線 LAN 以外のインターフェースが有効化されている場合、ルーティングの設定などにより、ネットワーク通信に有線 LAN が使用されない場合があります。 設定を必ず確認してください。確実に有線 LAN の接続確認をする場合は、有線 LAN 以外のインターフェースを無効化してください。

7.2. ストレージ

Armadillo-640 でストレージとして使用可能なデバイスを次に示します。

表7.3 ストレージデバイス

デバイス種類 ディスクデバイス先頭パーティションインターフェース

オンボード eMMC

/dev/mmcblk0

/dev/mmcblk0p1

オンボード

オンボード eMMC (GPP)

/dev/mmcblk0gp3

なし

オンボード

microSD/microSDHC/microSDXCカード

/dev/mmcblk1

/dev/mmcblk1p1

microSDスロット(CON1)

USBメモリ

/dev/sd* [a]

/dev/sd*1

USB ホストインターフェース (CON5)

[a] USBハブを利用して複数のUSBメモリを接続した場合は、認識された順に sdasdbsdc … となります。


[ティップ]GPP(General Purpose Partition)について

GPP は、eMMC の通常の記憶領域を割譲して eMMC 内部に作られた記憶領域です。 eMMC の通常の記憶領域とはアドレス空間が異なるため、/dev/mmcblk0 および /dev/mmcblk0p* に対してどのような書き込みを行っても /dev/mmcblk0gp* のデータが書き換わることはありません。

Armadillo-640 では、8 MiB の GPP を4つ作成しています。各領域の用途を表7.4「eMMCのGPPの用途」に示します。

表7.4 eMMCのGPPの用途

ディスクデバイス 用途

/dev/mmcblk0gp0

ライセンス情報等の為の予約領域

/dev/mmcblk0gp1

動作ログ領域

/dev/mmcblk0gp2

動作ログ予備領域[a]

/dev/mmcblk0gp3

ユーザー領域

[a] 詳細は「ログ用パーティションについて」を参照ください。


7.2.1. ストレージの使用方法

ここでは、microSDHC カードを接続した場合を例にストレージの使用方法を説明します。 以降の説明では、共通の操作が可能な場合に、microSD/microSDHC/microSDXCカードを microSD カードと表記します。

Linux では、アクセス可能なファイルやディレクトリは、一つの木構造にまとめられています。あるストレージデバイスのファイルシステムを、 この木構造に追加することを、マウントするといいます。マウントを行うコマンドは、 mount です。

mount コマンドの典型的なフォーマットは、次の通りです。

mount [-t fstype] device dir

図7.19 mount コマンド書式


-t オプションに続く fstype には、ファイルシステムタイプを指定します。ファイルシステムタイプの指定は省略可能です。 省略した場合、mount コマンドはファイルシステムタイプを推測します。この推測は必ずしも適切なものとは限りませんので、 事前にファイルシステムタイプが分かっている場合は明示的に指定してください。 FAT32 ファイルシステムの場合は vfat 、EXT3 ファイルシステムの場合は ext3 を指定します。

[注記]

通常、購入したばかりの microSDHC カードは FAT32 または exFAT ファイルシステムでフォーマットされています。

device には、ストレージデバイスのデバイスファイル名を指定します。microSD カードのパーティション1の場合は /dev/mmcblk1p1 、 パーティション2の場合は /dev/mmcblk1p2 となります。

dir には、ストレージデバイスのファイルシステムをマウントするディレクトリを指定します。

microSDスロット (CON1) に microSD カードを挿入し、以下に示すコマンドを実行すると、 /mnt ディレクトリに microSD カードのファイルシステムをマウントすることができます。 microSDカード内のファイルは、/mnt ディレクトリ以下に見えるようになります。

[armadillo ~]# mount -t vfat /dev/mmcblk1p1 /mnt
[armadillo ~]# ls /mnt
  :
  :

図7.20 ストレージのマウント


ストレージを安全に取り外すには、アンマウントという作業が必要です。アンマウントを行うコマンドは、 umount です。 オプションとして、アンマウントしたいデバイスがマウントされているディレクトリを指定します。

[armadillo ~]# umount /mnt

図7.21 ストレージのアンマウント


7.2.2. ストレージのパーティション変更とフォーマット

通常、購入したばかりの microSD カードや USB メモリは、一つのパーティションを持ち、FAT32ファイルシステムでフォーマットされています。

パーティション構成を変更したい場合、 fdisk コマンドを使用します。 fdisk コマンドの使用例として、 一つのパーティションで構成されている microSD カードのパーティションを、2つに分割する例を図7.22「fdiskコマンドによるパーティション変更」に示します。 一度、既存のパーティションを削除してから、新たにプライマリパーティションを二つ作成しています。先頭のパーティションには 100MByte、 二つめのパーティションに残りの容量を割り当てています。先頭のパーティションは /dev/mmcblk1p1 、二つめは /dev/mmcblk1p2 となります。

[armadillo ~]# fdisk /dev/mmcblk1

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


Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-15138815, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-15138815, default 15138815): +100M

Created a new partition 1 of type 'Linux' and of size 100 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): p
Partition number (2-4, default 2): 2
First sector (206848-15138815, default 206848):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (206848-15138815, default 15138815):

Created a new partition 2 of type 'Linux' and of size 7.1 GiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
[  305.798606]  mmcblk1: p1 p2
Syncing disks.

図7.22 fdiskコマンドによるパーティション変更


FAT32 ファイルシステムでストレージデバイスをフォーマットするには、 mkfs.vfat コマンドを使用します。 また、EXT2 や EXT3、EXT4 ファイルシステムでフォーマットするには、mkfs.ext2mkfs.ext3mkfs.ext4 コマンドを使用します。 microSD カードのパーティション1を EXT4 ファイルシステムでフォーマットするコマンド例を次に示します

[armadillo ~]# mkfs.ext4 /dev/mmcblk1p1

図7.23 EXT4 ファイルシステムの構築


7.3. LED

Armadillo-640 の LED は GPIO で接続されているため、ソフトウェアで制御することができます。

利用しているデバイスドライバは LED クラスとして実装されているため、 LED クラスディレクトリ以下のファイルによって LED の制御を行うことができます。 LEDクラスディレクトリと LED の対応を次に示します。

表7.5 LED クラスディレクトリと LED の対応

LEDクラスディレクトリインターフェースデフォルトトリガ

/sys/class/leds/red/

ユーザーLED赤

default-on

/sys/class/leds/green/

ユーザーLED緑

default-on

/sys/class/leds/yellow/

ユーザーLED黄

none


以降の説明では、任意のLEDを示すLEDクラスディレクトリを /sys/class/leds/[LED]/ のように表記します。 [LED] の部分を適宜読みかえてください。

7.3.1. LED を点灯/消灯する

LED クラスディレクトリ以下の brightness ファイルへ値を書き込むことによって、LED の点灯/消灯を行うことができます。 brightness に書き込む有効な値は 0〜255です。

brightness に 0 以外の値を書き込むと LED が点灯します。

[armadillo ~]# echo 1 > /sys/class/leds/[LED]/brightness

図7.24 LEDを点灯させる


[注記]

Armadillo-640 の LED には輝度制御の機能がないため、0(消灯)、1〜255(点灯)の2つの状態のみ指定することができます。

brightness に0を書き込むとLEDが消灯します。

[armadillo ~]# echo 0 > /sys/class/leds/[LED]/brightness

図7.25 LEDを消灯させる


brightness を読み出すと LED の状態が取得できます。

[armadillo ~]# cat /sys/class/leds/[LED]/brightness

図7.26 LED の状態を表示する


7.3.2. トリガを使用する

Linux では、LED をある特定のタイミングで光らせることができます。これを「トリガ」と呼びます。 LEDクラスディレクトリ以下の trigger ファイルへ値を書き込むことによってLEDの点灯/消灯にトリガを設定することができます。 trigger でサポートされている主な値は以下の通りです。

表7.6 LEDトリガの種類

設定 説明

none

トリガを設定しません

mmc0

eMMC のアクセスランプにします

mmc1

microSD スロットのアクセスランプにします

timer

任意のタイミングで点灯/消灯を行います。この設定にすることにより、LEDクラスディレクトリ以下にdelay_on, delay_offファイルが出現し、それぞれ点灯時間, 消灯時間をミリ秒単位で指定します

heartbeat

心拍のように点灯/消灯を行います

default-on

主に Linux カーネルから使用します。LED が点灯します


trigger ファイルを読み出すとサポートしているトリガと、現在有効のトリガが表示されます。 [] が付いているものが現在のトリガです。

[armadillo ~]# cat /sys/class/leds/[LED]/trigger
[none] rfkill-any rfkill-none kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalo
ck kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock kbd-shift
rlock kbd-ctrlllock kbd-ctrlrlock timer oneshot heartbeat backlight gpio default
-on mmc1 mmc0

図7.27 対応している LED トリガを表示


以下のコマンドを実行すると、LEDが2秒点灯、1秒消灯を繰り返します。

[armadillo ~]# echo timer > /sys/class/leds/[LED]/trigger
[armadillo ~]# echo 2000 > /sys/class/leds/[LED]/delay_on
[armadillo ~]# echo 1000 > /sys/class/leds/[LED]/delay_off

図7.28 LEDのトリガにtimerを指定する


以下のコマンドを実行すると、心拍のように点灯/消灯を行います。

[armadillo ~]# echo heartbeat > /sys/class/leds/[LED]/trigger

図7.29 LEDのトリガに heartbeat を指定する


7.4. ユーザースイッチ

Armadillo-640 のユーザースイッチのデバイスドライバは、インプットデバイスとして実装されています。 インプットデバイスのデバイスファイルからボタンプッシュ/リリースイベントを取得することができます。

ユーザースイッチのインプットデバイスファイルと、各スイッチに対応したイベントコードを次に示します。

表7.7 インプットデバイスファイルとイベントコード

ユーザースイッチインプットデバイスファイルイベントコード

SW1

/dev/input/by-path/platform-gpio-keys-event

28 (KEY_ENTER)


[警告]

インプットデバイスは検出された順番にインデックスが割り振られます。USBデバイスなどを接続してインプットデバイスを追加している場合は、 デバイスファイルのインデックスが異なる可能性があります。

7.4.1. イベントを確認する

ユーザースイッチのボタンプッシュ/リリースイベントを確認するために、ここでは evtest コマンドをインストールして使用します。 evtest を停止するには、Ctrl-c を入力してください。

[armadillo ~]# apk add evtest

図7.30 evtest コマンドのインストール


[armadillo ~]# evtest /dev/input/by-path/platform-gpio-keys-event
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
Input device name: "gpio-keys"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 148 (KEY_PROG1)
Properties:
Testing ... (interrupt to exit)
Event: time 1638343703.831011, type 1 (EV_KEY), code 28 (KEY_ENTER), value 1 1
Event: time 1638343703.831011, -------------- SYN_REPORT ------------
Event: time 1638343703.991022, type 1 (EV_KEY), code 28 (KEY_ENTER), value 0 2
Event: time 1638343703.991022, -------------- SYN_REPORT ------------

図7.31 ユーザースイッチ: イベントの確認


1

SW1 のボタン プッシュ イベントを検出したときの表示

2

SW1 のボタン リリース イベントを検出したときの表示



[7] nmcli connection show [ID] によって、より詳細な情報を表示することもできます。