KUMICO

COLUMN

初心者のための組み込みLinux入門

別コラムでも解説しましたが、もともとLinux(リナックス)はPC/AT互換機(いわゆる皆さんが家庭で利用しているパソコン)に利用するためのOSとして発展してきました。しかし、ここ最近では組み込み(embedded)業界でも利用されるようになってきています。今では、組み込みソフトウェア開発やアプリケーション開発、そして組み込みシステム開発に携わる多くの組み込み技術者に浸透したといえるでしょう。

組み込み機器でも採用が増える組み込みLinux

なんといってもLinuxのメリットは、オープンソースかつ無償で利用でき、ディストリビューションも自由に選べるところでしょう。Linuxディストリビューションは、Linuxを一般の利用者がインストールし、利用できる形式にまとめたもので、カーネル(カーネルモジュール等)のほか、UNIXのツールやユーティリティ、サーバ向けやデスクトップ環境向け、ソフト開発向けのアプリケーションなどがあります。

メリットをさらに付け加えるなら、Linuxは性能の低いコンピューターでも軽快な動作が期待できるという点でしょう。これは、近年の携帯端末やスマートフォンの普及に従って、コンパクトな機器であっても軽快な動作が求められるという背景があります。

組み込みLinuxの基礎的な知識に入る前に、まず「組み込みシステムとは?」というところを簡単に述べておきましょう。組み込みシステムがWindowsを搭載したパソコンをベースとしたシステムのような汎用的な情報システムと違うのは、機器特有のシステム構成(ハードウェアとソフトウェアの組合せ)になる事が殆どであるため、非常に数種類が多いということです。ソフトウェアはもちろん、ハードウェアの開発も行う場合があり、そのハードウェアに対応したデバイスドライバを作る必要も出てきます。機械を制御したい場合には、リアルタイム性のある制御が求められます。

こういった組み込みシステムの性質が、Linuxとどのように親和性をもってくるのかについても、後々解説したいと思います。

次からは、家庭用パソコンへのLinux導入と、組み込みLinuxの場合の例を挙げながら、実際にLinuxを使ってみるところまでをご紹介いたします。

さっそくパソコン(ハードウェア)を準備

もともとは家庭用のパソコンに搭載される事を想定して作られたLinuxですが、家庭用パソコンに利用されているOSのシェアという点でみればMicrosoft社のWindowsが圧倒的、というのが現状ではないでしょうか。今私がコラムを書いている時期は2014年5月なのですが、ちょうどWindows XPが4月のタイミングでサポートを終了するという出来事がありました。これにより多くのパソコンユーザーの方はWindowsXPをバージョンアップして、Windows7や8に乗り換える必要に迫られました。しかし、家庭用ノートパソコンの価格も低価格化が進んでおりますので、バージョンアップするのではなく新しいOSの搭載されたパソコンに買い替える人も数多くいるかと思います。こうなってくるとパソコン(ハードウェア)はまだまだ使えるのにOSが古いから使えないというパソコンが手元に残ったりします。このようなタイミングこそLinuxに入門してみるには良いタイミングかと思います。

ちなみに組み込み機器開発では、当然ながら開発対象の組み込み機器ごとにハードウェアを開発、準備する事になりますが、別コラムにも記載しているLinux対応のマイコンボードというものが出ていますので、組み込みLinuxを試す方にはそちらを購入して利用する事をお勧めします。

Linuxの入手

Linuxはフリーでオープンソースなソフトウェアとなりますので、無償でソースコードを入手することができますし、GNUライセンスのもとにおいて、非営利・営利に関わらず誰でも自由に使用・修正・頒布が可能です。ソースコードの入手は、Linuxのサイトhttps://www.kernel.orgから可能なのですが、家庭用パソコンにLinuxを導入する際には、上記に記載したソースコードを入手してくるのではなく、ディストリビューションを選ぶ方が一般的です。
ディストリビューションは、ドライバ、OS、ミドルウェア、アプリケーションの中でよく使うもの、あると便利なものを1つのパッケージとして提供しているものになります。WindowsもOSをインストールすると初期状態にもかかわらず、メモ帳が入っていたり電卓が入っていたりUSBメモリーが使えたりすると思います。あれは提供元であるMicrosoft社が使いやすい形にパッケージしているのです。Linuxは正確に言うとOSの核、いわゆるカーネルと呼ばれる部分に過ぎないため、実用のためには当然パッケージが必要になります。ディストリビューションもそう捉えていただければ問題ないかと思います。パソコン用のディストリビューションの代表としては、Fedora(旧Red Hat Linux)、ubuntu、国産ディストリビューションであるVine Linuxなどが有名かと思います。それぞれのディストリビューションのWEBサイトにアクセスすることで、ソースコードの入手が可能です。

組み込みLinuxの場合には、ディストリビューションと明確に言われてはいませんが、利用する基板を製造しているメーカーから同様に入手することが可能です。Linuxに対応していないマイコンボードを使う場合には基板メーカーから入手する事はできませんので、Linuxのサイトから入手しカスタマイズする事になりますが、数多くの手間がかかるため、ぜひLinux対応のマイコンボードを利用しましょう。

Linuxの組み込み(インストール)

Linuxのソースコードが入手できたところで、早速Linuxをハードウェアに組み込んでいきましょう。
実は前工程のLinuxを入手するフェーズにおいて、パソコンに導入するLinuxと組み込み機器に導入するLinuxとでは、入手するものが違っている事が多いです。パソコンに組み込む用のLinuxはインストーラが付属しているCDイメージが準備されている場合がほとんどであり、ソースコードを入手することはそこまで多くありません。それに対し組み込み機器向けに提供されているLinuxはソースコードのみが提供されていることがほとんどで、インストーラが付属する事はほぼありません。このインストーラの有り・無しにより、以降の組み込み作業自体が大きく変わってきます。

インストーラが提供されているパソコン版Linuxでは、ダウンロードしたイメージをCDに焼いた後、Windowsと同じようにパソコンにCDを入れた状態で起動すれば、インストーラが走り、簡単な質問に答えるだけでインストールが完了し、デスクトップ画面が表示されます。一方、組み込み機器の場合にはインストーラは存在しませんので、インストーラがやってくれる作業を1つ1つ手作業にて実行していきます。実際にはソースコードをイメージ化し、イメージを利用するハードウェア(基板)へと組み込みを行います。別コラムでも紹介したLinux対応のマイコンボードを利用する場合であれば、マイコンボードメーカーからマニュアルが提供されていますので、その通りに実行していけば問題はありません。多くの場合には、パソコンと利用する基板をUSBなどで接続し、イメージ化したブートローダーとカーネル、アプリケーションを、利用する基板のFLASHメモリーに焼き込んだり、SDカードにイメージを書き込み、そのSDカードを基板に差し込む形で組み込みます。
実際の製品を開発するのが目的の場合には、機器によってハードウェアが違いますので、ハードウェアに合わせてLinuxの設定を変更したり、必要なドライバを組み込んだりする作業(ポーティング)が必要となりますが、ここの話は少々細かい話になりますので、割愛します。

さっそくLinuxを使ってみよう

UNIXを利用したことがある方、POSIXに慣れている方であればLinuxを使う事に対しての敷居は高くないかと思いますが、Windowsしか使ったことがないユーザーには少々敷居が高いのかもしれません。というのも、Windowsではほとんどの作業がマウスを使ってGUI(グラフィカルユーザーインタフェース)にて実現できてしまいます。ファイルの移動1つにしても、「ここからここへ」なんて具合にマウスでカチカチッとやればできるわけです。パソコン版のLinuxでも同様に、GUIを搭載して同じような操作で使えるようになってきていますが、組み込み版Linuxはそうはいきません。組み込み機器は口が酸っぱくなるぐらい話に出していますが、パソコンと比較すればハードウェアの資源(メモリーの容量、ハードディスクの容量など)は豊富でない事がほとんどですし、多くの場合にはそもそもGUIを表示する画面が存在しないなんて事の方が多いわけです。よって組み込みLinuxの多くはCLI(コマンドラインインタフェース)、要は映画なんかでパソコンに詳しい人なんかがカチャカチャと文字列を打ち込みながら操作しているシーンを見ると思いますが、あのような形でコマンドを組合わせて操作を行う事になります。この辺が少々敷居が高いかも?と思うかもしれませんが、マニュアルはインターネットで検索すれば多く見つかりますし、一度慣れてしまえばほとんどのCLIが使えるようになりますので、恐れずにトライしてみてください。

組み込みLinuxを実践してみましょう

Linuxが動いてしまえば、パソコンであろうと組み込み機器であろうとコマンドラインから操作する分には大きな違いはありませんし、アプリケーションの使い方なども当然ながら同じです。

組み込みLinuxでのシステム開発は、おおまかに言って3つの層に分けることができます。ブートローダー、Linuxカーネル、アプリケーションです。それぞれに選択肢が多く、入門段階では驚く方も多いと思いますが、この選択肢の多さこそがニーズにあった開発環境やユーザ環境が構築できるメリットとなるのです。
また、Linux系製品としては、その多くが組み込み開発とリアルタイム市場に対応できるものとなってきています。例えば、RTLinux (Real-Time Linux)、ARM-Linux (ARM上のLinux)、uclinux (MMUを持たないデバイス用のLinux)、Montavista Linux (MIPS、PPC、ARM対応版のLinux)などが挙げられます。

組み込みLinuxを利用した組み込み機器開発では、多くの場合にはLinux対応のマイコンボードを利用したお試しを実施した後に、製品開発ではそのマイコンボードにちょい足し、ちょい削りのカスタマイズを施したものを利用することが多く、マイコンボードの製造メーカーが利用するLinuxをそのまま製品に搭載してしまうケースもあります。カスタマイズの部分はこのコラムでは触れておりませんが、組み込みLinuxの組み込み方法さえ理解していれば、実践の際には大きな力になることは間違いないでしょう。
パソコンへのLinux導入でCLIに慣れ、Linux対応のマイコンボード+Linuxで組み込み方を習得するぐらいのところまでを実践してみてはいかがでしょうか。

個別相談も承っております。下記よりお申し込みください。

個別相談会申し込み

関連記事

OTHER COLUMN

MORE  

まこちゃんブログ

NEWS

MORE  

PARTNER

  • Intel
  • Xilinx

お探しの組み込み製品はキーワードで検索!