開発環境の整備と運用

Armadillo用の標準開発環境をATDE(Atmark Techno Development Environment)といいます。ATDEは仮想マシン上で動作するLinuxデスクトップ環境(Debian GNU/Linux)で、開発に必要なソフトウェア一式がプリインストールされています。ATDEはVMwareイメージとして提供されているため、作業用PCのOSがWindowsであるかLinuxであるかを問わず、VMware Playerを実行できる環境であれば、ATDEを実行することができます。

Armadillo-400シリーズ用の標準開発環境は、ATDE5となっています。ATDE5のベースはDebian GNU/Linux 7.0 (コードネーム "wheezy")です。ATDE5 のインストール及び基本的な設定方法については、第1部「開発環境の構築」を参照してください。

この章では、第1部で触れなかったATDE5の設定方法や運用方法について説明をおこないます。

2.1. ATDE5でUSBメモリを使用する

この章では、作業用PCに接続したUSBメモリをATDE5で使用する方法について説明します。シリアルポートや共有フォルダを使う方法は、第1部を参照してください。

2.1.1. ホストOSがWindowsの場合

本章では、作業用PCのOSがWindowsの場合について説明します。作業用PCのOSがLinuxの場合は、「ホストOSがLinuxの場合」を参照してください。

まず、USBメモリを作業用PCに接続してください。USBメモリが作業用PCで認識されると、VMware Playerの「仮想マシン」-「取り外し可能デバイス」メニューに「デバイス名[5]」が追加されます。「接続(ホストから切断)」と表示されている場合は、メニューを選択してください[6]。そうすると、VMware Player側(ATDE5)でUSBメモリを使用できるようになります。

USBメモリの接続

図2.1 USBメモリの接続


しばらくしてATDE5がUSBメモリを認識すると、USBメモリは自動で/mediaディレクトリ以下のボリュームラベル名のディレクトリにマウントされます。また、Nautilus(ファイルマネージャ[7])が起動します。

USBメモリのアイコン

図2.2 USBメモリのアイコン


[ティップ]USBメモリを切断する

VMware Player側でUSBメモリを使用している間は、作業用PCでは使用できません。作業用PCでUSBメモリを使用する場合は、一度VMware PlayerからUSBメモリを切断する必要があります。

VMware PlayerからUSBメモリを切断するにはVMware Playerの「仮想マシン」- 「取り外し可能デバイス」-「デバイス名」-「切断(ホストに接続)」メニューを選択してください。

2.1.2. ホストOSがLinuxの場合

本章では、作業用PCのOSがLinuxの場合について説明します。作業用PCのOSがWindowsの場合は、「ホストOSがWindowsの場合」 を参照してください。

まず、USBメモリを作業用PCに接続してください。USBメモリが作業用PCで認識されると、VMware Playerの「VM」-「Removable Devices」メニューに「デバイス名[8]」が追加されます。「Connect」と表示されている場合は、メニューを選択してください[9]。そうすると、VMware Player側(ATDE5)でUSBメモリを使用できるようになります。

USBメモリの接続

図2.3 USBメモリの接続


しばらくしてATDE5がUSBメモリを認識すると、USBメモリは自動で/mediaディレクトリ以下のボリュームラベル名のディレクトリにマウントされます。また、Nautilus(ファイルマネージャ[10])が起動します。

USBメモリのアイコン

図2.4 USBメモリのアイコン


[ティップ]USBメモリを切断する

VMware Player側でUSBメモリを使用している間は、作業用PCでは使用できません。作業用PCでUSBメモリを使用する場合は、一度VMware PlayerからUSBメモリを切断する必要があります。

VMware PlayerからUSBメモリを切断するにはVMware Playerの「VM」-「Removable Devices」-「デバイス名」-「Disconnect」メニューを選択してください。

2.2. ATDE5にソフトウェアを追加する

Debian GNU/Linuxではアプリケーションプログラムやライブラリなどのソフトウェアの管理はDebianパッケージと呼ばれるパッケージ単位で行います。この章では、Debianパッケージを検索し、それをATDE5へインストールする方法について説明します。

2.2.1. ソフトウェアが含まれるパッケージを検索する

まず、インストールしたいアプリケーションプログラムやライブラリが含まれるパッケージのパッケージ名を知る必要があります。パッケージ名を調べる一般的な方法には、以下のものがあります。

  • Debianのパッケージページ[11]から検索する。
  • apt-cache searchを使用しパッケージを検索する。
  • すでにインストールされているファイルからパッケージ名を検索する。

本章ではこれらの方法について、説明します。

2.2.1.1. Debianパッケージページで検索する

debian.org(Debian GNU/Linuxの公式サイト)のパッケージページでDebianパッケージの検索をすることができます。Debianのパッケージページでのパッケージの検索方法としては以下の方法があります。

  • パッケージ名
  • パッケージ説明文
  • ソースパッケージ名
  • パッケージに含まれるファイルのパス

それぞれの検索方法でパッケージを選択し、ダウンロードすることができます。

[注記]Debian GNU/Linuxのバージョンとアーキテクチャ

Debian GNU/Linuxには安定版(stable)、テスト版(testing)、不安定版(unstable)、旧安定版(oldstable)というリリースが存在します。それぞれ用途・更新頻度・サポート体制が違います。

ATDE5では、2015年10月現在の旧安定版(oldstable)であるDebian GNU/Linux 7.0(コードネーム "wheezy")をベースに開発環境を構築しています。

また、Debianでは各種アーキテクチャ用のパッケージが提供されています。

Intel x86系CPU用のアーキテクチャ名はi386です。ATDE5では、このアーキテクチャを使用します。

ARM CPU用には、armとarmelの二つのアーキテクチャがあります。それぞれABIが異なります。armがOABI用、armelがEABI用のアーキテクチャです。Armadillo-400シリーズはEABIですので、armelアーキテクチャ用のパッケージを使用します。

2.2.1.2. apt-cacheコマンドで検索する

apt-cacheコマンドの引数にsearchを付けて実行することでパッケージの検索ができます。パッケージ名やパッケージの説明に対して検索します。パッケージ名やパッケージの説明に対して検索できます。

例えば「coreutils」というlsコマンドやcpコマンドなどの基本的なコマンドが含まれるパッケージを検索する場合は以下のコマンドを実行します。

[ATDE ~]$ apt-cache search coreutils
inotail - tail replacement using inotify
policycoreutils - SELinux core policy utilities
realpath - Return the canonicalized absolute pathname
python-sepolgen - Python module used in SELinux policy generation
bsdmainutils - FreeBSD 由来のユーティリティ集
coreutils - GNU コアユーティリティ
libsemanage1 - SELinux ポリシー管理ライブラリ
mktemp - coreutils mktemp 過渡的なパッケージ
coreutils-armel-cross - GNU core utilities (for cross-compiling)
coreutils-armhf-cross - GNU core utilities (for cross-compiling)
libsemanage1-armel-cross - SELinux policy management library (for cross-compiling)
libsemanage1-armhf-cross - SELinux policy management library (for cross-compiling)

図2.5 apt-cache searchによるパッケージの検索


一番左に表示されているものが、パッケージ名です。

apt-cacheコマンドには他にもいろいろな機能が備わっています。詳しくはman apt-cacheを参照してください。

2.2.1.3. すでにインストールされているパッケージから逆引きする

ATDE5にはインストールされていないソフトウェアが、Debian GNU/Linux 7.0などがインストールされている作業用PCには入っている場合があります。この章では、ファイル名やコマンド名は分かるが、パッケージ名が分からないときに便利なコマンドを紹介します。

インストールされているファイル名や、コマンド名からパッケージを調べるにはdpkgコマンドに-Sオプションを付けて使用します。ここでは例としてlsコマンドがどのパッケージに含まれているかを調べます。

[PC ~]$ which ls
/bin/ls
[PC ~]$ dpkg -S /bin/ls
coreutils: /bin/ls

図2.6 lsコマンドが含まれているパッケージを調べる


whichコマンドを使ってlsコマンドのパスを調べた結果を、dpkgコマンドの引数として指定しています。dpkg -Sはファイルのパスで検索してくれます。ファイル名ではなく、パスを使用したほうが検索結果が少なく便利です。

dpkg -S /bin/lsを実行した結果から、lsコマンドはcoreutilsパッケージに含まれていることが分かります。

2.2.2. パッケージをインストールする

インストールしたいパッケージのパッケージ名が分かれば、apt-get installでパッケージをインストールできます。apt-get installは、指定されたパッケージ名のパッケージをダウンロードし、インストールまでを行います。

例として、SSHクライアントのsshパッケージをインストールする場合、図2.7「apt-get installによるパッケージのインストール」のようになります。

[ATDE ~]$ sudo apt-get install ssh
[sudo] password for atmark:
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  ssh
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 1 個。
1,248 B 中 0 B のアーカイブを取得する必要があります。
この操作後に追加で 29.7 kB のディスク容量が消費されます。
以前に未選択のパッケージ ssh を選択しています。
(データベースを読み込んでいます ... 現在 182220 個のファイルとディレクトリがインストールされています。)
(.../ssh_1%3a6.0p1-4+deb7u2_all.deb から) ssh を展開しています...
ssh (1:6.0p1-4+deb7u2) を設定しています ...

図2.7 apt-get installによるパッケージのインストール


apt-getコマンドにはいろいろな機能が備わっています。詳しくはman apt-getを参照してください。

2.3. ATDE5にクロス開発用ライブラリをインストールする

Atmark Distに含まれないアプリケーションやライブラリをビルドする際に、付属DVDやダウンロードサイトには用意されていないライブラリパッケージが必要になることがあります。ここでは、クロス開発用ライブラリパッケージの作成方法およびそのインストール方法を紹介します。

2.3.1. dpkg-crossコマンドを使用する

まず、作成したいクロス開発用パッケージの元となるライブラリパッケージを取得します。取得するパッケージは、アーキテクチャをターゲットに、Debianディストリビューションのバージョンを開発環境に合わせる必要があります。Armadillo-400シリーズでは、アーキテクチャはarmel、Debianディストリビューションのバージョンは wheezy (2015年10月現在の旧安定版)になります。

例えば、libjpeg62の場合、ダウンロードするファイルは「libjpeg62_[version]_armel.deb」になります。Debianパッケージは、Debianのパッケージページから検索して取得することができます。

取得したライブラリパッケージをクロス開発用に変換するには、dpkg-crossコマンドを使用します。

[ATDE ~]$ dpkg-cross --build --arch armel -M libjpeg62_[version]_armel.deb
[ATDE ~]$ ls
libjpeg62-armel-cross_[version]_all.deb libjpeg62_[version]_armel.deb

--buildオプションはクロス開発用に変換されたDebianパッケージを作成することを意味します。--archオプションにはアーキテクチャを指定します。libjpeg62はMulti-Arch packageであるため-Mオプションを付加する必要があります。最後の引数には変換したいライブラリパッケージを指定します。

dpkg-crossはクロス開発用のライブラリパッケージパッケージの「libjpeg62-armel-cross_[version] _all.deb」を作成します。ファイル名の「armel-cross」はarmelクロス開発用を意味し、「_all」はすべてのアーキテクチャの開発用PCにインストールすることができることを意味します。

次に、dpkgコマンドを-iオプションを付けて実行し、クロス開発用に変換したパッケージをインストールします。

[ATDE ~]$ sudo dpkg -i libjpeg62-armel-cross_[version]_all.deb

dpkg-cross --build --arch armelで作成したクロス開発用ライブラリパッケージをインストールすると、ファイルは/usr/arm-linux-gnueabiディレクトリ以下にインストールされます。ライブラリファイルは/usr/arm-linux-gnueabi/libディレクトリに、ヘッダファイルは/usr/arm-linux-gnueabi/includeディレクトリに置かれます。

[ティップ]パッケージ名の最後が-devのパッケージ

パッケージ名の最後が-devになっているパッケージは開発用のものです。開発用パッケージにはヘッダーファイルなどが入っています。例えばlibjpeg62パッケージの開発用パッケージ名は、libjpeg62-devになります。libjpeg62を使用するソースコードをコンパイルする場合は、libjpeg62-devパッケージも必要になります。

クロス開発を行う場合はこのようなケースが多いので、新しいクロス開発用パッケージをインストールする場合、開発用パッケージもインストールしておくのが良いでしょう。

[ティップ]アプリケーションの場合

アプリケーションのパッケージには、ライブラリファイルもヘッダーファイルも含まれていないので、dpkg-crossコマンドでクロス開発用パッケージに変換することができません[12]

ARM用のDebianパッケージに含まれる、アプリケーションの実行ファイルをArmadilloで動作させたい場合、まず、dpkg -xを実行して、パッケージに入っているファイルを取り出します。該当のファイルを探し、Armadilloのユーザーランドに配置するだけでアプリケーションを使用することができます。

このようにして配置したアプリケーションを使用する場合に、ライブラリや設定ファイルが必要な場合もあります。うまく動作しなかった場合は、パッケージの依存関係や、設定ファイルの有無を調べてください。

また、4章Armadillo上にDebian GNU/Linuxを構築するで紹介する手順を行ない、Armadillo上にDebian GNU/Linuxを構築することでArmadillo上でもapt-getコマンドが使用できるようになります。



[5] USBメモリの名前が表示されます。

[6] 「切断(ホストに接続)」と表示されている場合は、すでにUSBメモリがVMware Playerに接続されていますので、この手順は不要です。

[7] ファイルシステムを扱うためのユーザーインターフェースを提供するソフトウェア。ファイラーと呼ばれることもあります。Windowsではエクスプローラなどがあります。

[8] USBメモリの名前が表示されます。

[9] 「Disconnect」と表示されている場合は、すでにUSBメモリがVMware Playerに接続されていますので、この手順は不要です。

[10] ファイルシステムを扱うためのユーザーインターフェースを提供するソフトウェア。ファイラーと呼ばれることもあります。Windowsではエクスプローラなどがあります。

[12] --convert-anywayオプションを使用して、中身が空のダミーパッケージを作成することはできます。