この章では、本格的な開発に入る前にターゲット側となるArmadilloの準備をおこないます。開発効率を上げるために、ArmadilloにDebian GNU/Linuxをインストールします。
Armadilloの標準ルートファイルシステムは、Atmark Distで作成されたinitrdです。initrdを使う方法は実環境での運用には向いていますが、ルートファイルシステムの空き容量が少ない、変更を簡単に保存できないなどの問題があるので開発段階には適切ではありません。
Armadillo-400シリーズでは、カーネルイメージはmicroSDカードに、ユーザーランドのルートファイルシステムはmicroSDカードまたはUSBメモリにも配置することができます。ここでは、例としてmicroSDカードにカーネルイメージとルートファイルシステム両方を配置する手順を説明します。microSDカードは、1GB以上の容量のものが必要です。
microSDカードにルートファイルシステムを構築し、/boot
ディレクトリにカーネルイメージファイルを配置します。どのデバイスからカーネルイメージをロードするかは、Hermit-Atのブートオプションで指定します。また、ルートファイルシステムがどこにあるかは、カーネルパラメーターで指定します。これも、Hermit-Atで設定します。
ArmadilloにDebian GNU/Linuxをインストールする具体的な手順は、以下のようになります。
- microSDカードにパーティションを作成しEXT3ファイルシステムでフォーマットする。
- カーネルイメージファイルをmicroSDカードにコピーする。
- ルートファイルシステムをmicroSDカードにコピーする。
- Hermit-Atの設定を行う。
| 注意: Hermit-Atのバージョンについて |
---|
ここで紹介する手順を適用するには、Hermit-Atブートローダー v2.0.3以降が必要です。Hermit-Atブートローダー v2.0.2以前では、EXT3でフォーマットされた起動パーティションを認識できないため、この手順は適用できません。Hermit-Atブートローダー v2.0.2以前を使用しなければならない場合は、「Armadillo-400シリーズ ソフトウェアマニュアル v1.2.0」の記述を参照してください。 |
まず、microSDに1つのパーティションを作成し、EXT3ファイルシステムでフォーマットします。
Armadillo-420/440/460のmicroSDスロットにmicroSDカードを挿入[] []した後、標準イメージで起動するとカードが認識され、以下のような表示がコンソール(シリアルインターフェース1)に表示されます。この表示は、microSDカードによって異なります。
「mmcblk0: p1」という表示から、microSDカードに対応するブロックデバイスが/dev/mmcblk0
に作成され、一つのパーティションがあることが分かります。microSDカードに二つのパーティションがある場合、「mmcblk0: p1」の次の行に「mmcblk0: p2」と表示されます。
カードが認識されたら、fdiskコマンドを使用してmicroSDカードのパーティションを構成しなおします。既存のパーティションをすべて削除して、一つのパーティションとします。
| まずは、既存のパーティションを削除します。複数のパーティションがある場合は、すべて削除してください。 |
| 新しくプライマリパーティションを作成します。 |
| 開始シリンダにはデフォルト値(1)を使用するので、そのままEnterキーを押してください。 |
| 最終シリンダにもデフォルト値(124277)を使用するので、そのままEnterキーを押してください。 |
| 変更をmicroSDに書き込みます。 |
作成したパーティションに対応するブロックデバイスは、/dev/mmcblk0p1
となります。
| パーティション作成での注意点 |
---|
使用するmicroSDカードによって仕様が異なるため、表示されるシリンダ数は手順通りとはならない場合があります。 |
続いて、作成したパーティションをEXT3ファイルシステムでフォーマットします。フォーマットにはmke2fsコマンドを使用します。-j
オプションを指定することで、EXT3ファイルシステムとして指定したブロックデバイスをフォーマットします。また、tune2fsコマンドでファイルシステムのオプションを変更します。-i 0
オプションを付けることで、時間経過によるファイルシステムのチェックを行わないようにします。これは、Armadilloのリアルタイムクロックが大きくずれていた際に、ファイルシステムチェックが行われるのを抑制するためです。
microSDから起動する場合は、起動パーティションの/boot
ディレクトリにカーネルイメージを配置する必要があります。対応しているカーネルイメージファイルの形式は、非圧縮カーネルイメージ(Image
、linux.bin
)または、圧縮イメージ(Image.gz
、linux.bin.gz
)のどちらかになります。
ここで説明する例では、カーネルイメージの取得にwgetコマンドを使用します。wgetコマンドで指定するURLは製品によって異なりますので、以下の表を参照し適宜読み替えてください。
尚、wgetコマンドを使用すためには、Armadilloのネットワーク設定が正しく行われている必要があります。ネットワーク設定が行われていない場合は、ご使用のネットワーク環境に合わせ、/etc/config/interfaces
及び、/etc/config/resolv.conf
を設定しておいて下さい。
ネットワークの設定方法については、第1部の「Armadilloの基本操作」「ネットワークを使う」を参照してください。
表4.1 カーネルイメージのダウンロード先URL
製品 | URL |
---|
Armadillo-420 | http://download.atmark-techno.com/armadillo-420/image/linux-a400-[バージョン] .bin.gz |
Armadillo-440 | http://download.atmark-techno.com/armadillo-440/image/linux-a400-[バージョン] .bin.gz |
Armadillo-460 | http://download.atmark-techno.com/armadillo-460/image/linux-a460-[バージョン] .bin.gz |
以下にArmadillo-440での例を示します。
Armadillo-400シリーズ用に設定済みのDebian GNU/Linuxルートファイルシステムのアーカイブは、付属DVDのdebian
ディレクトリか、弊社ダウンロードサイトから取得できます。アーカイブをmicroSDカードに展開することでルートファイルシステムを構築することができます。
ここで説明する例では、アーカイブの取得にwgetコマンドを使用します。wgetコマンドで指定するURLは製品によって異なりますので、以下の表を参照し適宜読み替えてください。
表4.2 Debianアーカイブのダウンロード先URL
製品 | URL |
---|
Armadillo-420/440/460 共通 | http://download.atmark-techno.com/armadillo-4x0/debian/debian-lenny-armel-# .tgz[] |
http://download.atmark-techno.com/armadillo-4x0/debian/debian-lenny-armel-a4x0.tgz[] |
4.1.4. ブートデバイスとカーネルパラメーターの設定
カーネルイメージをロードする場所は、Hermit-Atのブートデバイス設定で指定します。また、ユーザーランドの場所は、カーネルパラメーターで指定します。
Hermit-Atの設定は保守モードでおこないます。一度Armadilloの電源を切り、タクトスイッチ(SW1)を押しながら電源を投入し、Hermit-Atの保守モードで起動してください。
カーネルイメージをロードするデバイスの指定は、setbootdeviceコマンドを使用します。microSDカードのパーティション1に配置したカーネルイメージで起動するためには、以下のコマンドを実行してください。
カーネルパラメーターの指定は、setenvコマンドを使用します。ルートファイルシステムをmicroSDカードのパーティション1にする場合は、以下のコマンドを実行してください。
| Hermit-Atの設定を元に戻す |
---|
Hermit-Atの設定を初期状態に戻す(カーネルイメージをロードするデバイスとルートファイルシステムの場所をフラッシュメモリにする)には、以下のコマンドを実行してください。
|
以上の設定をおこない、bootコマンドを実行するか再起動すると、microSDカード上に構築されたDebian GNU/Linuxで起動します。
4.2. Debian GNU/Linuxインストール後にまずすること
Armadilloにインストールした直後のDebian GNU/Linuxは、最小限の設定しかされていない状態です。この章では、最低限行わなければならない設定について説明します。
インストール直後のDebian GNU/Linuxでは、特権ユーザーであるrootユーザーしかいません。そのため、ログインはrootユーザーで行います。パスワードなしでログインできます。
以降は、Armadillo上で動作するDebian GNU/Linuxのプロンプトとして、以下の表記を用います。
一般ユーザーがいないと何かと不便ですので、まずは一般ユーザーを追加します。一般ユーザーの名前はguest、パスワードもguestとしましょう。
あくまで開発用ですので、rootユーザーのパスワードは設定しません。
続いて、時刻の設定をおこないます。時刻を正しく設定しておかないと、apt-get installを実行する際にワーニングが大量に表示されるなど、色々な問題が発生します。
まずは、dpkg-reconfigure tzdataでタイムゾーンを設定します。テキストベースのメニュー画面が表示されますので、タイムゾーンをJSTに設定するには[Asia]-[Tokyo]を選択してください。
次に、システムクロックを設定します。この時点ではntpクライアントが使用できませんので、dateコマンドで手動設定します。リアルタイムクロックがArmadillo-420/440/460に接続されており、適切に設定されている場合、システムクロックは起動時に自動で設定されます。そのため、この手順は不要です。システムクロックが現在時刻と大きくずれている場合だけ実行してください。
システムクロックを設定した後は、それをハードウェアクロック(リアルタイムクロック)にも反映させます。ハードウェアクロックの設定はhwclockコマンドを使用しますが、DebianGNU/Linuxではそれをラップしたhwclock.shスクリプトがあるので、それを使用します。
Debian GNU/Linuxでは、セキュリティアップデートやバグフィックスのためパッケージが随時更新されています。ArmadilloにインストールしたDebian GNU/Linuxのアーカイブは最新の状態ではありませんので、パッケージをアップデートする必要があります。
パッケージの管理には、apt-getコマンドを使用します。apt-get updateでローカルに持っているパッケージのリストを最新のものに更新し、apt-get
upgradeで更新可能なパッケージをすべてインストールします。
ATDEとArmadilloで簡単にファイルを送受信するための方法の1つとしてFTPで転送する方法があります。この章ではArmadillo上のDebian GNU/LinuxにFTPサーバーを構築する方法について説明します。
パッケージのインストールには、apt-get installを使用します。FTPサーバーのパッケージ名は、ftpdです。
ftpdは、スーパーサーバー(inetd)を経由して起動されます。そのため、ftpdパッケージをインストールすると、openbsd-inetdパッケージも一緒にインストールされます。Armadillo上で動作するFTPサーバーに外部からアクセス可能にするには、inetdを起動しておく必要があります。なお、次回起動時からはinetdは自動起動されるように、インストールした時点で設定されています。
ATDE3などからFTPでArmadilloに接続する際、ユーザー名とパスワードを要求されます。ftpdが使用するユーザー名とパスワードは、一般ユーザーのものになります。そのため、ユーザー名guest、パスワードguestでアクセスすることができます。
| lftpの便利な使い方 |
---|
lftpコマンドでは、-e オプションでFTPコマンドを指定することができます。何度も同じファイルをArmadilloに転送する必要がある場合、一行でコマンドを書いておき、シェルのヒストリー機能を活用することで何度も同じコマンドを入力せずに済みます。 以下のコマンド例では、guestユーザーでログインし、ファイルを送信しています。一度ファイルを削除しているのは、lftpでは同じファイル名のファイルがある場合、上書きしないため何度も同じコマンドを実行してもファイルが更新されないためです。また、パスワードをコマンドラインに書いてしまっています。コマンドの履歴は同じコンピューターを使用する別のユーザーが見ることができるので、通常、コマンドラインに直接パスワードを書くことは望ましくありません。コンピューターを共有している場合は気をつけてください。
|
Armadillo上で動作するDebian GNU/LinuxにTelnetサーバーを動作させておくと、ATDEからネットワーク経由でArmadilloを操作できるようになります。シリアルインターフェースを端末として使用できない場合などに便利ですので、本章ではTelnetサーバーの構築方法について説明します。
Telnetサーバーのインストールは、いつものようにapt-get
installを使用します。パッケージ名はtelnetdです。
telnetdもftpdと同様に、inetdを介して起動されます。そのため、inetdが起動していない場合は、起動する必要があります。図4.17「inetdの起動」を参照してください。
ATDE3などからArmadilloのTelnetサーバーにアクセスするには、telnetコマンドを使用します。FTPサーバーと同様に、一般ユーザーguestでログインすることができます。
4.3. セルフコンパイル用ツールチェインのインストール
複雑な依存関係を持ったソフトウェアなどでは、クロスコンパイルが難しい場合もあります。そのような時のために、Armadillo上にツールチェインをインストールしてセルフコンパイルできるようにする方法を紹介します。
build-essentialパッケージをインストールすると、開発に最低限必要なパッケージをインストールすることができます。
依存関係に基づいて、gcc、g++、binutils、libc6-dev、makeなどがインストールされます。その他のライブラリなどは、必要に応じてインストールしてください。これは、ATDE3上でセルフコンパイルする場合と、変わりありません。
高速なCPUを搭載した作業用PCでクロスコンパイルする場合と比べ、Armadillo上でセルフコンパイルすると格段に時間がかかります。しかし、クロスコンパイルがどうしても難しいという場合もあるので、最後の手段として、このような方法もあることを覚えておいてください。本書では、これ以降セルフコンパイルについては取り上げません。