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

第1回 組込みLinuxをはじめよう

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

ソフトウェアを用意する

T-SH7706LSRでLinuxを動作させるためのソフトウェア一式は,筆者の以下のサイトから無償でダウンロードができます。

Micro Embeded System/MES Ver 2.5
URL:http://mes.sourceforge.jp/mes24/

画像

Linuxのページに移るには,上部フレームの「SH-Linux/SH3」をクリックします。またダウンロードは,左フレーム内のメニューの「ダウンロード」をクリックします。Linuxを起動させるのに最低限必要なファイルは,以下のとおりです。

  • ① ルートファイルシステムのアーカイブ : rootfs.tar.gz
  • ② コンパイル済みカーネル/SH7706LSR対応 : vmlinux
  • ③ MES2.5対応Linuxローダのバイナリファイル : boot.exe
  • ④ 初期RAMDISK/initrd.img : initrd.img

コンパイル済みカーネルは旧版T-SH7706LAN用のものもありますので,必ずT-SH7706LSR用をダウンロードしてください。

Linuxのインストールと起動

SDカードへのセットアップ

PCのLinuxディストリビューションは複数ありますが,ここではVine Linux5.xで作業をすることにします。まず,新品のSDカード(Sandisk製/SDSDQ-8192-J95M)をカードリーダに差し込んでから,カードリーダをPCに接続します。SDカードを差し込むと,PCはSDカードを自動認識します。この状態でSDカードのデバイス名を調べるために,以下のようにdfコマンドを実行します。

# df
ファイルシステム     1K-ブロック  使用        空き 使用% マウント位置
/dev/sda2            342688356  13966308 311314416   5% /
none                    516156       172    515984   1% /dev/shm
/dev/sdb1              7746672         4   7746668   1% /media/disk

この例の場合,SDカードのパーティションは/dev/sdb1となっているので,SDカードのデバイス名は/dev/sdbとなります。

このままではSDカードのファイルシステムをマウントしたままになるので,SDカードのドライブをアンマウントします。SDカードにおけるデバイス名は環境によって異なりますので,デバイス名を正しく指定してください。SDカードのパーティションを新規作成する場合は以下のようにします。

# fdisk /dev/sdb

fdiskコマンドの操作画面に入ると,最初にdコマンドで既存パーティションを全て削除してから,新規にパーティション作成します。第1パーティションはおおむね16Mバイト程度に設定し,領域のシステムIDを「FAT16」に設定します。第2パーティションは残り容量全てに設定し,領域のシステムIDをデフォルトである「Linux」のままにしておきます。

新規にパーティションを作成したら,パーティション設定内容をpコマンドで確認します。たとえば,Sandisk製 / SDSDQ-8192-J95Mの場合は以下のようになります。

コマンド (m でヘルプ): p
Disk /dev/sdb: 7948 MB, 7948206080 bytes
81 heads, 10 sectors/track, 19165 cylinders
Units = シリンダ数 of 810 * 512 = 414720 bytes
Disk identifier: 0x00000000
デバイス Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          41       16600    6  FAT16
/dev/sdb2              42       19165     7745220   83  Linux

パーティション設定内容を確認したらwコマンドで内容を確定し,fdiskコマンドを抜けます。パーティションを作成したら,2つのパーティションをそれぞれ以下のようにフォーマットします。

# mkfs -t msdos /dev/sdb1
# mkfs -t ext3 /dev/sdb2

フォーマットをしたら,いったんカードリーダごとPCから取り外してから再度PCへ差し込むと,2つのパーティションが自動認識をして自動でマウントされます。

それぞれのマウント位置を確認するために以下のようにdfコマンドを実行します。

# df
ファイルシステム     1K-ブロック  使用        空き 使用% マウント位置
/dev/sda2            342688356  13966440 311314284   5% /
none                    516156       172    515984   1% /dev/shm
/dev/sdb1                16550      2568     13982  16% /media/disk
/dev/sdb2              7623468    148220   7087988   3% /media/disk-1

第1パーティションには以下のファイルのコピーをします。

  • vmlinux
  • initrd.img
  • boot.exe

第2パーティションにはrootfs.tar.gzをコピーした後,第2パーティションのマウント位置にフォルダを移動し,以下のように展開をします。

# tar xvzf rootfs.tar.gz

SDカードへのセットアップが終了したら,SDカードの全てのドライブをアンマウントします。

Linuxの起動

PCからT-SH7706LSRをシリアルポート経由で操作をするには適当なターミナルソフトを用い,通信速度は115200[bps]にします。T-SH7706LSRを起動するとMES2.5が起動しますので,以下のようにMESのコマンドでSDカードをマウントしてから,Linuxを起動します。

MES > mount mmc0
MES > cd /mmc0/
MES > boot.exe

おわりに

今回使用したLinuxブートローダやルートファイルシステムの起動関連部については,あくまでもLinux起動用のサンプル例として提供しています。

組込み機器の場合,その利用環境や方法が現場によって異なります。そのため,次回ではLinuxブートローダやルートファイルシステムの起動関連部をカスタマイズできるように,Linux起動の概要を解説します。

著者プロフィール

みついわゆきお

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

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

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

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

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