レベル: 初級 Jeffrey M. Osier-Mixon, Embedded Developer and Writer, MontaVista Software, Inc.
2009年 8月 18日 Beagle Board はオープン・ハードウェアによるシングルボード・コンピューターであり、安価であると同時に、満足できる程度の速さで Linux® を実行することができます。この記事では、Beagle Board について学ぶと同時に、Linux 開発環境を安価で手に入れる方法も学びましょう。
Beagle Board はポケットに入る大きさのリファレンス・ボード (図 1) であり、このボードには 600MHz で動作する Texas Instruments の OMAP3530 という SoC (System-on-a-Chip) プロセッサー (ARM Cortex A-8 コア) が搭載されています (この記事の後の方にある「参考文献」にはシステムの詳細仕様に関するリンクを挙げてあります)。小型のリファレンス・ボード自体は必ずしもニュースに値するものではありません。Gumstix などの会社では似たようなボードを数年前から販売しており、その中には OMAP3530 プロセッサーをベースにするものもあります。私が Beagle Board を選んだ理由は、このボードが、Linux や簡単なシステムがどのように動作するかを学ぶための安価なプラットフォームになるからです。Beagle Board は手軽な選択肢として、ホビーストが自分自身のプロジェクトを設計するために、教師が大学の授業で使用するプロジェクトを作成するために、そして専門家が安価な装置やシン・クライアントを設計するために、使用することができます。
図 1. Beagle Board
独自の開発環境を構築する
 |
ホスト・プラットフォームに関する注意
ホスト・プラットフォーム (つまり開発マシン) は、インターネットから得られるデータを (通常はカード・リーダーを使用することで) SD カードに転送できる必要があり、従ってインターネットへの接続機能も必要です。
シリアル・ポートを介して通信できる限り、ホスト・プラットフォームが Linux を実行するのか、あるいは Windows®、BSD、Solaris、その他のオペレーティング・システムを実行するのかは無関係です。ただし、コミュニティー・メンバーの大半の人が Linux を使用しているため、そうした人達が協力してくれる内容は Linux に関するものがほとんどです。
最近のシステムでの注意点として、1980年代のスタイルの 9 ピン RS-232 によるシリアル・ポートが必要な点が問題になるかもしれません。2009年初めの時点では、ほとんどすべてのマシンはシリアル・アクセス用に USB を提供しており、RS-232 は必要なくなっています。その結果、新しいマシンの多くには RS-232 が用意されていません。コミュニティーのメンバーによれば、ポートを /dev/ttyS0 (Linux の場合) または COM1 (Windows の場合) に設定してあれば、RS-232 と USB の変換アダプターを使って問題なく通信できるとのことであり、実際に Texas Instruments もその方法を推奨しています。この問題を皆さんがどのように解決するにせよ、この記事では、Beagle Board からホスト・プラットフォームに対して何らかのシリアル接続がセットアップできるものとします。
|
|
Beagle Board をブートするためには下記の 3 つが必要です。
- シリアル・ポートを持つデスクトップ・コンピューターまたはラップトップ・コンピューター (囲み記事「ホスト・プラットフォームに関する注意」を参照)。
- シリアル・コネクター
- 標準 A からミニ A への USB ケーブル
Beagle Board にはケーブルもコネクターも付属していません。必ず必要なものやオプションとして必要なもののリスト、それらへのリンクは Beagle Board Shopping List にあります (「参考文献」を参照)。この記事で使用するものの大部分は個別に、あるいはパッケージとして入手可能です。
シリアル接続
シリアル接続用として、以下のものが必要です。
- IDC10 から DB9 オスへのシリアル・ケーブル
- DB9 メスから DB9 メスへのヌルモデム・ケーブル
- DB9 オスから USB へのケーブル (ホスト・プラットフォームに RS-232 ポートがある場合にはオプション)
- USB ミニ B オスから USB A オスへのケーブル
最初の 3 本のケーブルを組み合わせることでシリアル接続を実現することができます。シリアルで接続できると、ホスト・プラットフォーム上のターミナル・エミュレーション・プログラムを使って、ボードのブートローダーやオペレーティング・システムをモニタリングしたり、操作したりできるようになります。
入力と出力
入力および出力用として、以下のものが必要です。
- 電源付きでイーサネット接続機能を持つ 3 ポートの USB ハブ
- 一方が DC 電源プラグ (外径 5.5 ミリ) で他方が USB A オスのケーブル
- USB ミニ A から USB A メスへの OTG (On-The-Go) ケーブル (このケーブルによる USB 接続で電力供給する場合のオプション。)
これらを用意することで、Beagle Board 上で Linux ディストリビューションを使用するメリットを最大限に活用することができます。またイーサネット機能を組み込むことで、ネットワークに接続することができます。ハブ自体は、外径 5.5 ミリの電源プラグによって Beagle Board に電力を供給するための USB ポートとして機能します。
キーボード、モニター、マウス
KVM (キーボード、ビデオ (モニター)、マウス) 機能用として、以下のものが必要です。
- HDMI オスから DVI-D オスへのケーブル
- デジタル・モニター
- USB キーボード
- USB マウス
PS/2 キーボードを変換アダプターで接続したいと思う人がいるかもしれませんが、私は USB キーボードの購入をお勧めします。この記事でデモを行う Ångström Linux ディストリビューションでは PS/2 キーボードでもおそらく動作しますが、皆さんは将来、この記事の内容以上のことをするかもしれません。そうした場合、すべての Linux ディストリビューションに PS/2 ドライバーが含まれているとは限りません。
また、アナログ (VGA) モニターや DVI-D から VGA への変換ケーブルを使いたいと思う人もいるかもしれません。Beagle Board は、そうした設定のためのアナログ信号を出力しません。そのため、変換ケーブルやアナログ・モニターを使おうとしても無駄です。モニターがデジタル入力 (HDMI または DVI-D) を受け付けない場合には、テレビと 4 ピンの S ビデオ・ケーブルを使うことを検討してください。また、Ångström ではまだ音声が適切に動作しないことにも注意してください。そのため、スピーカーやヘッドホンを詳しく調べるために時間をかけすぎないようにしてください。
SD カード
Linux と Linux のブートローダーを保存するために、少なくとも 1 枚の SD カードが必要です。ソフトウェアのダウンロードやカードのパーティショニングの手間を省きたい場合には、Ångström のデモをプリロードした 4GB の SD カードを Special Computing (「参考文献」のリンクを参照) から購入することができます。
コンポーネントを接続する
すべての部品が揃ったら、接続を開始します。まず、以下のステップに従ってシリアル・ポートを接続します。
- IDC10 ケーブルを Beagle Board に接続します (ケーブルの 1 ピンとコネクターの 1 ピンを接続します。フラットケーブルのピンクの線がボードの外側の角を向きます。)
- そのケーブルの DB9 オス側を DB9 メス/DB9 メスのヌルモデム・ケーブルに接続します。
- DB9 メス/DB9 メスのケーブルをホスト・プラットフォームに接続します (ホスト・プラットフォームに DB9 ポートがある場合)。DB9 ポートがない場合には、DB9 メス/DB9 メスのケーブルを、DB9 オス/USB ケーブルを使ってホストに接続します。
次に、USB と電源を接続します。
- USB ミニ A/USB A メスのケーブルの USB ミニ A 側を Beagle Board の USB ミニ A コネクターに接続します。
- そのケーブルの USB A メス側に、電源付きの USB ハブを接続します。
- 5 ミリ DC プラグ/USB ケーブルの USB 側を USB ハブに接続します。
- 5 ミリ DC プラグ側を Beagle Board の電源コネクターに接続します。
注意: まだハブの電源は入れないでください。
今度はキーボード、マウス、モニターを接続します。
- モニター (ビデオ) ケーブルの HDMI 側を Beagle Board の HDMI コネクターに接続します。
- DVI-D 側をモニターに接続します。
- USB キーボードをハブに接続します。
- USB マウスをハブに接続します。
図 2 は接続が完了したコンポーネントを示しています。
図 2. 接続が完了した Beagle Board
今度はコンソールをセットアップします。
コンソールをセットアップする
Beagle Board 上で何が起きているかを知るための唯一の方法は、コンソールから Beagle Board のシリアル・ポートをモニタリングし、シリアル・ポートとやり取りすることです。そのためにはターミナル・エミュレーション・プログラムをセットアップする必要があります。ホスト・プラットフォーム上でシリアル・ポートが構成されると、ブートローダー・コマンドのプロンプト、オペレーティング・システムのログイン・プロンプト、エラー・メッセージなどをはじめとする Beagle Board 上のアクティビティーは、すべてコンソールに表示されます。
Linux でコンソールをセットアップする
Linux でシリアル・コンソールをセットアップするためには、minicom などのターミナル・エミュレーション・プログラムを使用する必要があります。このセットアップ方法は以下のとおりです。
- システムに minicom をインストールします (「参考文献」のリンクを参照)。
sudo minicom -s コマンドを実行し、root としてセットアップを起動します。
- Serial Port Setup を選択し、Return を押します。
- シリアル・ポートを設定するために、
A と入力して Serial Device を選択し、/dev/ttyS0 ディレクトリーに変更し、Return を押します。
- 通信の設定 (
E) が 115200 8N1 であることを確認します。
F を入力して Hardware Flow Control をオフにします。
- また Software Flow Control も必ずオフにします。
- Return を押してメイン・メニューに戻ります。
- これらの設定をデフォルトで使用するために、Save Setup as dfl を選択します。
- Exit を選択してセットアップ・セクションを終了し、これらの設定を使って minicom を起動します。
Windows でコンソールをセットアップする
Windows XP または Vista をオペレーティング・システムに使用して、シリアル・コンソールをセットアップするための推奨の方法として、無料で入手できる Windows 用のターミナル・エミュレーション・プログラム、PuTTY をダウンロードします (「参考文献」を参照)。シリアル用に PuTTY を構成するためには、Session ウィンドウで Serial をクリックします。次に、Category ペインの一番下にある Serial をクリックします。速度を 115200、データ・ビットを 8、パリティーを None、ストップ・ビットを 1、そしてフロー制御を None に設定します。
セットアップを確認する
コンソールのセットアップが適切かどうかを確認するためには Beagle Board に電源を供給します。そのためには、図 2 のようにケーブルを接続するか、あるいは単純に USB 標準 A からミニ A へのケーブルを Beagle Board に直接接続し、OTG パワーを利用してケーブルから電源を供給します。すべてが適切に設定されていると、リスト 1 のテキストがコンソール上に表示されます。
リスト 1. ブートローダーの出力
Texas Instruments X-Loader 1.41
Starting OS Bootloader...
U-Boot 1.3.3 (Jul 10 2008 - 16:33:09)
OMAP3530-GP rev 2, CPU-OPP2 L3-165MHz
OMAP3 Beagle Board + LPDDR/NAND
DRAM: 128 MB
NAND: 256 MiB
In: serial
Out: serial
Err: serial
Audio Tone on Speakers ... complete
Hit any key to stop autoboot: 0
OMAP3 beagleboard.org #
|
この出力の最後にあるプロンプトは第 2 段階のブートローダーから出力されたものであり、オペレーティング・システムをロードするための指示が入力されるのを待機しています。
オペレーティング・システムをセットアップする
ホスト・システムの準備が整い、Beagle Board がセットアップされました。あとはオペレーティング・システムをセットアップすればよいだけです。
Beagle Board 上で実行する Linux ディストリビューションには、Ångström、Maemo、Ubuntu、Android など、さまざまなものがあり、それらのバイナリーはダウンロードして入手することができます。最もよく使われるディストリビューションは Ångström です。どのディストリビューションもアクティブに開発が行われており、またどれも専門家やホビーストなどによる動作確認の結果が公開されています。この記事では Ångström ディストリビューションを取り上げます。Ångström は、Beagle Board を有効な Linux デスクトップ・マシンやそれほどシンではないクライアントとして使う上では十分にテストされており、また十分軽量に作られています。「参考文献」には、映像によるデモへのリンクや、Ångström のバイナリーをダウンロードするためのリンクを挙げてあります。
Ångström Linux ディストリビューション
 |
Ångström とは何か
Ångström は、小型のコンピューター・システム用に (特に SoC 用に) 最適化された Linux ディストリビューション (カーネル、ブートローダー、そしてアプリケーション・スタック) です。Ångström は数多くの汎用コンポーネントを含んでいるため、技術的には組み込みオペレーティング・システムではありませんが、特定の製品の中に組み込みオペレーティング・システムを作成するためのベースとして使用できるように設計されています。Ångström ディストリビューションの詳細については「参考文献」のリンクを参照してください。
|
|
Ångström ディストリビューションには、主なコンポーネントが 4 つあります。この 4 つを以下に挙げますが、これらを、この順序で SD カードにコピーする必要があります (カードの最初にブートローダーが存在している必要があります)。
- 第 1 段階のブートローダー
- 第 2 段階のブートローダー
- Linux ブート・イメージ (uImage)
- Linux ファイルシステム
Beagle Board のファームウェアには、X-loader という第 1 段階のブートローダーが含まれています。また X-loader は、リムーバブル・ストレージ領域 (SD カードなど) から、MLO という署名付きファイルとしてロードすることもできます。X-loader は第 2 段階のブートローダーをロードするために必要なだけ、システムのブートストラップを行います。このようにしない限り、第 2 段階のブートローダーをメモリーに格納することはできません。
Beagle Board のフラッシュ・メモリーの中に提供されている第 2 段階のブートローダーは U-boot ですが、ほとんどのディストリビューションには、u-boot.bin というファイルの中に独自のバージョンの U-boot が用意されています。U-boot はシステムを初期化し、Linux カーネルをブートします。U-boot をコンソールから実行することもできます。
そしていよいよ、uImage という名前の Linux ブート・イメージが、/boot ディレクトリーの Linux ファイルシステムの中にある Linux カーネルをブートします。
ファイルシステムのセットアップ方法はいくつかあります。ここで紹介する方法は、最初に少し作業が必要ですが、柔軟です。また、ビルド済みの Ångström をインストールした SD カードを Special Computing に注文した場合には、ここでその SD カードを使うことに注意してください。
ディストリビューションをダウンロードする
Ångström ディストリビューションをアセンブルするためには、以下のファイルが必要です。
- Angstrom-Beagleboard-demo-image-glibc-ipk-2009.X-test-20090326-beagleboard.rootfs.tar.bz2
- MLO
- README.txt
- md5sums
- u-boot.bin
- uImage
これらの各ファイルが適切にダウンロードできたかどうか、ダブルチェックします。ターミナル・ウィンドウのダウンロード・ディレクトリーまでナビゲートして md5sum * と入力し、各ファイルの値を md5sum ファイルの内容と比較します。
カードをパーティショニングする
ここで説明する方法によって、SD カード上に 2 つのパーティションが作成されます。第 1 のパーティションは、ブートローダーとカーネル・イメージをホストする FAT パーティションです。カード上の残りの空間は ext3 (第 3 世代拡張ファイルシステム) パーティション専用です。
SD カード上には、2 つのディスク・パーティションを作成する必要があります。FAT パーティションにはブートローダーと、そのままの Linux カーネル・イメージが含まれます。FAT がブート・パーティションに使われる理由は、FAT が非常に基本的なファイルシステムであり、単純な上、Beagle Board がデフォルトで FAT に十分対応しているからです。そのため、ブートローダーやオペレーティング・システムからの情報を何も必要としません。
ただし Linux ルート・ファイルシステムには、Linux カーネルが対応している任意のファイルシステム・フォーマットを使用することができます。この例では ext3 を使用しますが、JFFS2 (Journaling Flash File System バージョン 2) や SquashFS も、特にフラッシュ・ベースのストレージ・システムでは選択肢として適切です。
では、ホスト・プラットフォームに SD カードを挿入し、適当なパーティション・ツールを使って SD カードに 2 つのパーティションを作成してみましょう。ブート可能な小さな FAT パーティションを作成し、その後に大きな ext3 パーティションを作成します。このプロセスを fdisk ユーティリティーを使用して行うための詳細な手順が Beagle Board コミュニティーのページに説明されています。その手順に厳密に従い、FAT パーティションの名前を BeagleBoot に、ext3 パーティションの名前を BeagleRootFS に設定します。
挿入したカードを引き抜いて再度挿入すると、この 2 つの新しいパーティションがホスト・プラットフォームにマウントされるはずです。
ディスクにファイルをコピーする
これで、ディスクにファイルをコピーする準備が整いました。必ず、以下の特定の順序でコピーします。
- ブート可能 FAT パーティションに MLO をコピーします。
- ブート可能 FAT パーティションに u-boot.bin をコピーします。
- ブート可能 FAT パーティションに uImage をコピーします。
- ルート・ファイルシステムを ext3 パーティションに抽出します。このために最も容易な方法は、コマンドラインから下記を実行する方法です。
cd ext3FileSystem; tar xvjf downloadLocation/Angst*.tar.bz2
パーティションをアンマウントする
パーティションをアンマウントするためには、下記のコマンドを実行します。
cd ~; sync; sudo umount BeagleBoot; sudo umount BeagleRootFS
|
最後に、SD カードを引き抜き、そのカードを Beagle Board に挿入します。
Linux をブートする
 |
ブートとは何か
ブートという用語はブートストラップの略語であり、新たにリセットされたコンピューターが、オペレーティング・システムをロードするためにそのコンピューター自身を準備するプロセスを指します。最近のデスクトップ・マシンでは、通常はこのプロセスを BIOS が行い、BIOS はコンピューターのハードウェアを自動的に検出して初期化します。
リソースに制約のある Beagle Board などのシステムでは、メモリーの制約から、そうした方法とは少し異なる複数ステップのプロセスを使います。このプロセスには多くの場合、3 つの段階があります。第 1 段階の簡単なブートローダーはシステム上に用意されている容量の小さな ROM に十分収まるものであり、第 1 段階よりも大きな第 2 段階のブートローダーを検出して RAM にロードします。第 2 段階のブートローダーはシステムを初期化して、オペレーティング・システムをブートします。
|
|
ホスト・プラットフォームでシリアル・コンソールを表示できるようになったら、USB ハブに電源ケーブルを接続します。すると、リスト 1 のテキストがコンソール上に表示されるはずです。(2009年3月以降に Beagle Board を購入した場合には、そのボードはおそらく Rev C またはそれ以降のはずであり、256MB 以上の DRAM を積んでいます。この記事の内容は、128MB の DRAM を積んだ Rev B7 Beagle Board を使って調べたものですが、ここで説明するプロセスはすべてのリビジョンに共通です。)
SD カードから Linux をブートするように Beagle Board に指示するためには、下記の 2 つの方法があります。
- 電源を抜いてから、ユーザー・ボタン (ボードの一番外側近くにあります) を押しながら再度電源を入れます。
- U-boot プロンプトから下記の行を入力し、SD カードからブートするように環境変数を設定します。
setenv bootargs 'console=ttyS0,115200n8 root=/dev/mmcblk0p2 rw rootwait'
setenv bootcmd 'mmcinit; fatload mmc 0 80300000 uImage.bin; bootm 80300000' boot
これらの環境変数をメモリーに書き込み、必ずフラッシュ・メモリーからブートするように Beagle Board に指示することもできます。そのためには boot コマンドの前に saveenv と入力してブートします。
Ångström は初めてブートする際、システムのバスを調べ、キーボード、モニター、マウス、イーサネット・アダプター、その他すべての周辺機器を初期化し、それから適切なドライバーを検索します。2 回目以降のブートは最初のブートよりもはるかに高速に行われます。
グラフィックがブートされると、やがてモニター上に図 3 の内容が表示されます。
図 3. Ångström のブート時にモニターに表示される内容
USB キーボードを使ってユーザー名とパスワードを入力します。シリアル・プロンプトからログインする場合には、ユーザー名として root を使用し、パスワードは空白にします。
おめでとうございます。これで十分に機能的な Linux システムが完成しました。この Linux システムは、Web ブラウザー (Mozilla Firefox)、E メール・クライアント (Evolution)、その他いくつかのアプリケーションを実行することができ、また、デスクトップ・ツールやパッケージ・マネージャー (opkg) 一式を実行することもできます。このシステムの最も優れた点は、合計消費電力が 4 ワットにも満たない、小型で安価なファンレスのコンピューター上で実行できることです。この消費電力は、おそらくモニターの消費電力の約 10分の1、ホスト・システムの 25分の1 です。これでシン・クライアントを構築できたので、今度はこのシン・クライアントを使って何かをすることができます。コミュニティーに加わり、皆さんのアイデアを他の人達と共有してください。
参考文献 学ぶために
製品や技術を入手するために
議論するために
著者について  | 
|  | Jeff Osier-Mixon は 1992 年から組み込みシステムの開発と執筆を行っています。彼は、ソフトウェア・プロジェクトに関しては GNU クロスコンパイル・ツールキットからモバイル・オペレーティング・システムのカーネルに至るまで、またハードウェア・プロジェクトに関してはベアメタル・マイクロプロセッサーからシングルボード・クラスターに至るまでを経験してきています。彼は現在、Meld コミュニティーを管理しており、またいくつかの組み込み Linux プロジェクトに従事しています。また彼は Linux に関するカンファレンスで頻繁に講演も行っており、オープンソース・ソフトウェア業界に関するブログも書いています。 |
記事の評価
|