CFイメージ

BusyBox

http://www.superh-linux.org/archive/bsp/sh7751r_r2d/rootfs-R2D+_20060906.tar.bz2
linux-2.6.14.4-R2D+で、とりあえず動作確認したいならこれ。
vanilla kernel(2.6.23.17以降)を使いたい場合は、/dev/hda1を/dev/sda1に、/dev/ttySC1を/dev/ttySC0に変更する必要がある。
具体的には/etc/inittabとか。
まともにnfs mountできなかったりとか色々困る。

Debian

シリコンリナックス株式会社が非公式にDebianSHを提供している。
http://www.si-linux.co.jp/wiki/silinux/index.php?DebianSH
ベースイメージを http://www.si-linux.co.jp/pub/debian-sh/base/etch/ からdebian-etch-sh4_日付.tgzをダウンロードしてCFに展開するだけ。簡単。
shutdownしたら電源が切れたのに感動した。

導入手順

下のrootfs-R2D+_またはdebian-etch-sh4の使い方。必要なものは以下の通り

  • Compact Flashを読み書きできるLinux環境(ホスト)
  • ターゲット(SH-4)用のsh-lilo
  • ホスト用のsh-lilo
  • lilo.conf(cross-lilo.conf)

liloについてはブートローダ編を参照。
以下の例ではホストマシン上でCFが/dev/sdbとして認識されるものとする。手順は以下の通り。

  1. fdiskをかける。pコマンドでLinuxパーティションがなかったら、dコマンドで削除してcコマンドで作成し、wコマンドで書き込み。

Command (m for help): p

Disk /dev/sdb: 1024 MB, 1024966656 bytes
32 heads, 62 sectors/track, 1009 cylinders
Units = cylinders of 1984 * 512 = 1015808 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 1 1009 1000927+ b W95 FAT32

Command (m for help): d
Selected partition 1

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1009, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1009, default 1009):
Using default value 1009

Command (m for help): w

  1. mkfsでファイルシステム作成。

# mkfs.ext2 /dev/sdb1

  1. マウントする。

# mount /dev/sdb1 /mnt

  1. 展開する。

# cd /mnt
# tar --bzip2 -xf ~/rootfs-R2D+_20060906.tar.bz2

  1. ブートセクタとカーネルをコピーする。ターゲット用のsh-liloが ~/target-sh-lilo/ にあるものとする。

# cp ~/target-sh-lilo/boot.b /mnt/boot/
# cp ~/linux-2.6.14.4/arch/sh/boot/zImage /mnt/boot/

  1. liloを実行。ホスト用のsh-liloが~/host-sh-lilo/ にあるものとする。

# cp ~/cross-lilo.conf /mnt/
# ~/host-sh-lilo/lilo -r /mnt -C /etc/cross-lilo.conf

cross-lilo.confの書き方は http://www.sh-linux.org/sh-linux-rpm-miniHOWTO.txt などを参考に。

linear
boot=/dev/sdb
disk=/dev/sdb
bios=0x80
install=/boot/boot.b
image=/boot/zImage
label="Debian Linux"
root=/dev/hda1
read-only

この例の場合、/mnt/dev/sdbがないと怒られる。その場合は/mnt/dev上でmknodするか、ホストの/dev/sdbをコピーする。
「*Added Debian Linux」のように表示されたら完了。

その他

CFがついているPCはあまりないので、USBのカードリーダを使えばよい。
最近だとSDカードが非常に安い(2GBで500円とか)ので、色んなブートイメージを試してみたい場合には、SD→CF変換アダプタを使うと安くつく。(抜き差しが面倒だが)