NetBSD/evbarm

投稿日:

Fedora上でNetBSD/evbarmをビルドしたのでその記録.ここを参照した.

Linux上でのクロスコンパイルなんだけど,見た目Linuxで動作させている感じが全く現れていない.というか何の問題もなくクロスビルドできちゃうところがすごい.

ソースの取得

CVSから.コマンドはこんな感じ.

$ cd work/netbsd/current
$ export CVSROOT=anoncvs@anoncvs.NetBSD.org:/cvsroot
$ export CVS_RSH=ssh
$ cvs checkout -P src

クロスビルド環境の構築

$ cd src
$ ./build.sh -O ../objarm -m evbarm -j 4 -u -U tools

./build.sh –help するといろいろ説明が出てくるけど,-uはcleanしない,-Uは非rootユーザーでビルドを実行する,の意味.

リリースビルド

$ cd src
$ ./build.sh -O ../objarm -m evbarm -j 4 -u -U release

初回ビルドだと結構時間がかかるが一度ビルドすると差分ビルドになるので時間はかなり短縮される.

ビルドが完了すると,../objarm/releasedir/evbarm/binary/gzimg/rpi.img.gz に SDカードのイメージができる.

SDカードの作成

Windows環境でイメージファイルをSDに焼くツールはいろいろあるけど,今回使ったのは win32diskimager というツール.USBメモリーやSDカードなどのフラッシュメモリの消去やチェックができるChkFlshというツールでも書き込み可能.

どのツールを使うにせよ,SDにパーティションが切られているとうまくかけないので,Windows標準(Vista以降?)のdiskpartコマンドでパーティションを消去する.

DISKPART> list disk

  ディスク      状態           サイズ   空き   ダイナ GPT
  ###                                          ミック
  ------------  -------------  -------  -------  ---  ---
  ディスク 0    オンライン     298 GB   0 B
  ディスク 1    オンライン     947 MB   0 B

ここでは1GBのSDカードを入れたのでディスク1を選択する.

DISKPART> select disk 1

ディスク 1が選択されました。

削除する前に,念のためパーティションを確認する.

DISKPART> list part

  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    プライマリ          56 MB    4096 KB

消して良さそうなら削除する (次のコマンドを実行した瞬間に反映されるのでEnterを押すときは慎重に)

DISKPART> clean

DiskPart はディスクを正常にクリーンな状態にしました。

いよいよrpi.imgの焼きこみ.ドライブ文字とファイルのパスを指定して書き込んでおしまい.

ファームウェアの入れ替え

このままSDカードに焼いても手元のRaspberry Piはブートせず.どうやらファームウェアがダメみたいなので,ファームウェアを最新のものに入れ替える.

ファームウェアはSD上のMSDOSファイルシステム(64MB)においてあるので,GitHubから持ってきて差し替える.

具体的には,bootフォルダのkernel.img以外をダウンロードしてSDに突っ込むだけ.

これで無事カーネルが起動してOSが立ち上がった.

以下,おまけ.

ソースを更新するには

$ cvs update -dP

カーネルを作り直すには?

src/sys/arch/evbarm/conf/ にコンフィグレーションファイルをおいて,

./build.sh -O ../objarm -m evbarm -j 4 -u -U kernel=<コンフィグレーションファイル名>

を実行すると,../objarm/sys/arch/evbarm/compile/<コンフィグレーション>/netbsd.bin ができるので,これを kernel.img にリネームしてSDカードに置く.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です