本章では、工場出荷状態のArmadillo-IoTのユーザーランドの基本的な仕様について説明します。
Armadillo-IoTの標準ルートファイルシステムは、Atmark Distで作成されたinitrdです。PCなどで動作する Linux システムでは、initrd は HDD などにあるルートファイルシステムをマウントする前に一時的に使用する「ミニ」ルートファイルシステムとして使用されます。Armadillo-IoT では、initrd をそのままルートファイルシステムとして使用します。
initrdはメモリ上に配置されるため、ファイルに加えた変更は再起動すると全て元に戻ってしまいます。例外として/etc/config/
ディレクトリ以下のファイルは、flatfsd
コマンドを利用してフラッシュメモリに保存することができます。このフラッシュメモリ領域をコンフィグ領域と呼びます。
コンフィグ領域を利用することで、設定ファイルなどへの変更を再起動後も保持することができるようになっています。コンフィグ領域のより詳細な情報については7章コンフィグ領域 − 設定ファイルの保存領域を参照してください。
Armadillo-IoTのユーザーランドの起動処理について説明します。ユーザーランドの起動処理は大きく分けて次の手順で初期化が行われています。
Linuxカーネルが/sbin/init
を実行し/etc/inittab
のsysinitに登録されている/etc/init.d/rc
スクリプトを実行
rcスクリプトの中で、「/etc/rc.d/
」ディレクトリの起動スクリプトを順次実行
ローカル起動スクリプト(/etc/config/rc.local
)を実行
/etc/inittab
のrespawnタブに登録されたものを実行
Linuxカーネルは、ルートファイルシステムをマウントすると、/sbin/init
を実行します。initプロセスは、コンソールの初期化を行い/etc/inittab
に記載された設定に従ってコマンドを実行します。
デフォルト状態のArmadillo-IoTの/etc/inittab
は次のように設定されています。
inittabの書式は、次のようになっています。
Armadillo-IoTのinitでは、"id"フィールドに起動されるプロセスが使用するコンソールを指定することができます。省略した場合は、システムコンソールが使用されます。"runlevel"フィールドは未対応のため利用できません。
"action"フィールド及び"process"フィールドは、どのような状態(action)のときに何(process)を実行するかを設定することができます。actionフィールドに指定可能な値を表9.1「inittabのactionフィールドに設定可能な値」に示します。
表9.1 inittabのactionフィールドに設定可能な値
値 | processを実行するタイミング |
---|
sysinit | initプロセス起動時 |
respawn | sysinit終了後。このアクションで起動されたプロセスが終了すると、再度processを実行する |
shutdown | シャットダウンする時 |
ctrlaltdel | Ctrl-Alt-Deleteキーの組み合わせが入力された時 |
rcスクリプトでは、システムの基礎となるファイルシステムをマウントしたり、「/etc/rc.d/
」ディレクトリ以下にあるSから始まるスクリプト(初期化スクリプト)が実行できる環境を構築します。その後、初期化スクリプトを実行していきます。初期化スクリプトは、Sの後に続く2桁の番号の順番で実行します。
9.2.3. /etc/rc.d/Sスクリプト(初期化スクリプト)
初期化スクリプトでは、システムの環境を構築するもの、デーモン(サーバー)を起動するものの2つの種類があります。Armadillo-IoTのデフォルト状態で登録されている初期化スクリプトを表9.2「/etc/rc.dディレクトリに登録された初期化スクリプト」に示します。
表9.2 /etc/rc.dディレクトリに登録された初期化スクリプト
スクリプト | 初期化内容 |
---|
S03udevd | udevdを起動し、Linuxカーネルから発行されたueventをハンドリングします |
S04flatfsd | flatfsdを使いコンフィグ領域(/etc/config/)を復元します |
S05checkroot | システム関連のファイルのパーミッション設定や、オーナーを設定します |
S06checkftp | FTPが利用するファイルやライブラリの配置、パーミッションの設定をします |
S06mountdevsubfs | udevd起動後にマウントする必要のあるファイルシステムをマウントします |
S10syslogd, S20klogd | ログデーモンを起動します |
S25module-init-tools | /etc/modulesに記載されたカーネルモジュールをロードします |
S30firewall | ファイヤーウォールの設定を行います |
S30hostname | hostnameを設定します |
S40networking,S60inetd | ネットワーク関連の初期化を行い、インターネットスーパーサーバー(inetd)を起動します |
S70lighttpd, S71avahi | ネットワークデーモンを起動します |
S99misc | 各種設定や初期化を行います |
S99rc.local | コンフィグ領域(/etc/config/)に保存されたrc.localを実行します |
9.2.4. /etc/config/rc.local
コンフィグ領域に保存されたrc.local
は、ユーザーランドイメージを変更することなく、起動時に特定の処理を行うことができるようになっています。
Armadill-IoTでは、システム起動時に自動的に各種状態監視アプリケーションを起動するために利用しています。出荷状態では状態監視アプリケーションを起動しない設定になっています。/etc/config/rc.local
を編集することで、自動起動するように設定を行うことができます。
デフォルト状態の/etc/config/rc.localは
次のように記載されています。
/etc/config/rc.localから起動させることのできる状態監視アプリケーションについて説明します。
ifplugd
コマンドを使用して3Gの接続状態を監視します。
3G接続が切断されると、/etc/ifplugd/ifplugd.action
内に記載された処理が実行され、3Gの再接続を行います。
thermalmonitor
はArmadillo-IoTの筐体内温度を監視するアプリケーションです。thermalmonitor
の実行中はthermaltrigger
コマンドを実行することができません。 thermaltrigger
コマンドについては、「温度を監視する」を参照してください。
Armadillo-IoTの筐体内温度が75℃以上になると、故障等を避けるため3Gモジュールを機内モードに設定し温度上昇を抑えます。その後、筐体内温度が70℃以下まで下がると3Gの再接続を行います。
thermalmonitor
の設定はコンフィグ領域に保存された/etc/config/thermalmonitor
を編集すると変更することができます。変更後、設定を保存したい場合はコンフィグ領域を保存してください。
vinmonitor
はArmadillo-IoTの電源電圧を監視するアプリケーションです。主にArmadillo-IoTをバッテリー駆動させた場合を想定しています。vinmonitor
の実行中はvintrigger
コマンドを実行することができません。vintrigger
コマンドについては、「電源電圧を監視する」を参照してください。
Armadillo-IoTの電源電圧が7V以下になると、突然の動作停止による保存データ破壊等を避けるためシステムをシャットダウンします。
vinmonitor
の設定はコンフィグ領域に保存された/etc/config/vinmonitor
を編集すると変更することができます。変更後、設定を保存したい場合はコンフィグ領域を保存してください。
デフォルトのユーザーランドにインストールされているアプリケーションを一覧します。
/bin
/usr/bin
/sbin
/usr/sbin
デフォルトのユーザーランドにインストールされているアプリケーションの中から、いくつかをピックアップし概要を説明します。
表9.3 アプリケーション概要説明
アプリケーション | 概要 |
---|
Ruby | オブジェクト指向スクリプト言語です。 |
Java | オブジェクト指向プログラミング言語です。Armadillo-IoTではOracle Javaが使用可能です。 |
Lua | C言語等のホストプログラムに組み込まれることを目的に設計されたスクリプト言語です。高速な動作と、高い移植性、組み込みの容易さが特徴です。 |
Wget | ウェブサーバーからコンテンツを取得するコマンドラインツールです。wget コマンドにて実行が可能です。 |
cURL | ファイルを送信または受信するコマンドラインツールです。幅広いインターネットプロトコルをサポートします。Armadillo-IoTでは、curl コマンドにて実行が可能です。 |
Mosquitto | MQTTブローカー/クライアントです。Armadillo-IoTでは、mosquitto_pub コマンド、mosquitto_sub コマンドをプリインストールしています。 |