体験!マイコンボードで組込みLinux

第4回 RAMベースのコンパクトなLinuxルートファイルシステム

この記事を読むのに必要な時間:およそ 3 分

RAMベースLinux

ルートファイルシステム

T-SH7706LSRでの標準的なLinuxシステムは,メモリカードをルートファイルシステムにして稼働させる形態となっています。

一般的なPC-Linuxではルートファイルシステムはハードディスクに置くことが多いので,ハードディスクの内容をT-SH7706LSRではメモリカードに置くようなイメージとなっています。T-SH7706LSRになってからはメモリカードとしてSDカードだけでなくSDHCカードもサポートされたので,T-SH7706LSRでも大規模なルートファイルシステムを構築することができます。

SDHCの容量についての制限はないですが,現状では32GバイトのSDHCカードについてT-SH7706LSRにおいて動作確認済みとなっています。それとは反対方向にT-SH7706LSRではルートファイルシステムとしてメモリカードではなく,ボードオンボードメモリ上に小さなルートファイルシステムに置いて,メモリカードを完全にフリーにした状態でLinuxシステムを起動し稼働させることもできます。

RAMベースでLinuxシステムを構築する場合,オンボードメモリの容量はメモリカードにくらべて少ないので,ルートファイルシステムにおけるファイルサイズの総量をできるだけ削減するようにしなければなりません。また,起動するたびにRAM上にルートファイルシステムを展開するので,ファイルシステムそのものは内容を更新可能ですが,RAMは揮発性メモリのため,次回起動時にはその更新内容は失われることに注意しなければいけません。

逆にこのことはRAMベースでLinuxシステムが構築されている場合は,UNIX系システムのウィークポイントである突然の電源断によるファイルシステムの破壊を気にしなくてもよくなります。もともとルートファイルは揮発性RAMの上に構築されているので,いきなり電源を落としてもファイルシステム破壊が次回起動時に持ち越されないので,突然の電源断が当たり前の組込みの世界では相性がいいと思います。

Linuxカーネルの対応

RAM上にファイルシステムを構築する場合は,Linuxカーネルで物理メモリに対応したブロックデバイスに対応する必要がありますが,T-SH7706LSR用で標準に公開されているLinuxカーネルでは,MTD(Memory Technology Device)といわれる物理メモリに対応したブロックデバイスが有効になっています。

MTDはメモリデバイスとしてオンボードメモリ,PCMCIAデバイス,CFI(Common Flash Interface)対応フラッシュメモリ,コンパクトフラッシュなどが対象となっていますが,T-SH7706LSR用で標準に公開されているLinuxカーネルでは,メモリデバイスのうちオンボードメモリが有効になっています。他のメモリデバイスもLinuxカーネル再構築を行うことにより有効にすることができます。

T-SH7706LSR用で標準に公開されているLinuxカーネルでは,オンボードメモリの利用に関する柔軟性を持たせるために,具体的なオンボードメモリの場所やサイズを指定する情報は一切持っていません。Linuxブート時に指定するカーネルパラメータで,MTDの具体的なメモリアドレスとメモリサイズの値を指定します。

RAM上にファイルシステムを構築しない場合はMTDは不要なので,LinuxカーネルでMTDが有効であってもカーネルパラメータでメモリアドレスとメモリサイズの値を指定しなけば実際にもMTDが確保されないのでその分だけLinuxカーネル本体でメモリを有効利用することができます。

ブートローダ

RAMベースLinuxを実際に実現させるものはLinuxカーネルでなく,Linuxカーネルを起動させるブートローダとなります。

T-SH7706LSRで標準で公開されてブートローダでは何もオプションを指定しないとメモリカードをルートファイルシステムとして起動しますが,ブートローダのオプション指定により,メモリカード上にあるRAMディスクイメージのファイルをそのままオンボードメモリ上に展開します。Linuxブート時に指定するカーネルパラメータの設定もブートローダで行うので,MTDにおけるメモリアドレスとメモリサイズの値の設定とルートデバイスの指定をカーネルパラメータに設定をするのもブートローダの役割となります。

これらもT-SH7706LSRで標準で公開されてブートローダでオプション指定により行います。また,ブートローダに関してはソースコードがすべて公開されているので,そのソースコードを参考にネットワーク経由でルートファイルシステムのイメージやLinuxカーネルをダウンロードして,Linuxを起動することもできます。その場合は完全にメモリカードなしでLinuxを稼働させることができます。

ファイルシステムイメージの作成

概要について

RAMベースでのファイルシステムの作成は,基本的には前回に解説したメモリカード上へのルートファイルシステム構築方法と同じように行います。

前回に解説したメモリカード上へのルートファイルシステムのファイル容量で圧倒的に大きな比重を占めるのが共有ライブラリファイル群となります。したがって,共有ライブラリファイル群を除外するだけで,コンパクトでRAMベースに収まるようなファイルシステムになります。共有ライブラリファイル群が存在しないとBusyBoxを含むアプリケーションプログラムが動作をしなくなり,ファイルシステムとして機能をすることができません。幸いなことに,BusyBoxはコンパイルメニューで共有ライブラリファイル群が不要になるオプションがあるので,そうすれば共有ライブラリファイル群が不要となります。

昔のBusyBoxは機能が完全に揃っておらず,追加のコマンド等が必要になっていましたが,2010年9月現在のBusyBoxはそれだけで標準的なサーバシステムが構築できるまでに完成度が上がっています。ユーザ独自のプログラムが必要な場合は,BusyBoxに追加することもできるので,そうすれば,ルートファイルシステムのファイル容量で圧倒的に大きな比重を占める共有ライブラリファイル群は不要となります。

著者プロフィール

みついわゆきお

1986年日立製作所入所,その3年後に自社ワークステーションでの開発業務をきっかけにBSDを経てLinux利用を始める。

1991年日立を退社し,その後,ボランティアでLinux関連ツールの整備と開発しながらWindows否定運動およびLinux普及運動を開始し,Linuxディストリビューション草創期にはPlamoLinuxのメンテナンスにもかかわる。

2001年ごろより非営利ベースでボードコンピュータの開発を開始し,やがて,無償によりハードとソフトを開発したH8マイコンボードの販売を秋月電子にて開始した。

現在,ボードコンピュータ用基本ソフトMES2.5や,SHプロセッサ向けLinuxパッチおよびTOPPERS/JSPパッチを無償で一般に提供しながら,ティーエーシーやエムイーシステムより原価率100%を目標(ただし,販売店の営業・販売費用や開発・製造の際の差損を除く)としたSuperHボードコンピュータを販売中。

また,現在でも頑固にMS社否定及びWindows撲滅運動に邁進中。

コメント

  • どういう意味での標準?

    「T-SH7706LSR用で標準に公開されているLinuxカーネルでは」という記述があるが、どういう意味で「標準」という言葉を使っておられるのでしょうか?
    通常「標準」とは何らかの規格に準拠している事を意味し、その場合、準拠規格を示す必要があるが示されていない。文面各所で筆者はコモンセンスから外れた「私的意味」を持たせた言葉を事前説明なく使ってしまっておられるので、当然その「私的意味」を共有していない人には翻訳しながら意味を理解するような作業が強いられ、大変わかりづらい文章になってしまっているように感じます。内容が面白いだけに残念です。
    p.s.
    以前、ここにコメントして以降、それまで全くと言っていいほどなかったジャンクメールがガンガン入ってくるようになりました。
    要員のモラル教育を含めたセキュリティ対策を行ってください。

    Commented : #1  kkmr (2012/12/18, 12:44)

コメントの記入