ひっきぃのメモ帳

趣味で作るプラモデル製作の過程と作品、日々の資格取得へ向けての活動、Apple中心のIT関連ネタを書いています。

32GB越えのSDカードを使ってMindstormEV3 上のleJOSを動かす

MindstromEV3にleJOSを導入したい

leJOSはMindstormEV3をjavaで制御したい時に導入するOSです。授業でも使おうと思ったりして。

Windowsで行う標準的なインストールはこちらが詳しいです。
LeJOS EV3 実行/Netbeans開発環境構築メモ(Windows版)

以前にインストールした時は、素直にWindowsでインストールできました。指示通り進めばそれほど苦労もなくインストールできるはずです。


さて授業に展開しようと思い、SDカードをまとめて入手しました。
amazonで買ったのは以下の製品。

授業用に12枚まとめて購入しました。容量は32GBも必要ないのですが、別な用途に転用するときに大は小を兼ねるかなという理由で。この判断に悩まされるとはこの段階では思っていませんでしたが。

32GBのSDカードでleJOSの環境構築が停止する

ここではまってしまいました。インストールは終わりますが、初回起動時の環境構築が途中で停止します。これは想定外の動きです。

インストールからの動きを観察していくとこんな感じでした。

  • FATフォーマットされたSDカードに必要なファイルを保存
  • 初回起動時にFATフォーマット領域を500MBまで縮小
  • 残りの領域を ext2 フォーマットで構築
    • この作業から先に進まない様子

いろいろ情報を調べてみましたが、「カードが対応していないのでは」とか「フォーマットしなおしてからやってみよ」とか「インストールファイルに含まれるsd500.imgを書き込め」とか書いてありました。いろいろ試してみましたがどれもうまくいきません。

そう高いものでもないので容量が小さいSDカードを使えばそれで済むのですが、なにしろ12枚も買ってしまった。なんとしてもこれで使えるようにしたいところです。

あらかじめ小さい容量で作ったSDカードをイメージコピーする

環境さえあればわりと簡単にできます。

Macなら標準でddコマンド使えますので、それでコピーしてみましょう。

環境構築済みのSDカードをセットして、ターミナルでdfコマンドを使ってSDカードのデバイス名を探します。
うちでは /dev/disk1が該当するようです。

サイズも大きいのでイメージは圧縮して保存します。
# sudo dd if=/dev/disk1 bs=5120 | gzip -c > lejos.img.gz

新しいSDカードをセットして、圧縮されたイメージを展開しながら書き込みます。
# gzip -dc < lejos.img.gz | dd of=/dev/disk1 bs=5120

これならいけますね。コピー先が32GB越えの容量でも、コピー元の容量として動作します。

欠点は容量丸ごとイメージにしなければならないので、結構大きな容量のイメージを作らないとダメなところでしょうか。
SDカードの書き込みもかなり時間がかかります。

そもそも、大きな容量のSDカードしかない時はこの方法は使えません。

パーティションさえ事前に作れば先に進めるのでは?

この仮説で進めてみます。ext2ということはlinuxベースのOSですね。
WindowsもMacも標準ではext2に対応していません。
さらに都合よくSDカードが読めるlinuxマシンが身近にはありません。

OSに拘らないならlinuxのライブブートを利用するのが簡単でしょうか。
どのディストリビューションでも良いですが、ライブブートしてパーティションを切るだけなので、これが便利かもしれないです。

GParted -- Download

GPartedというパーティション操作をするツールが入っています。
Windows機でもMacでも起動できます。

EFIブートに対応している機種ならISOからブートCDを作らなくても、zipで圧縮されているものをUSBメモリのルートに保存しておけば起動できるはずです。


linuxライブでブートしたら2つのパーテョションを作りましょう

  • 500MB以上のfat32領域
    • インストーラでは515MBの領域が自動的に作られます。
  • 残りがext2領域
    • そんなに大きな領域がいらなければ小さめでも良い。ただし、3つ目の領域があると起動しないので、未使用にしておくこと。

今回は32GBのSDカードを半々に分けてfat32とext2にしてみました。
f:id:m_hikichi_1969:20160121151541j:plain

leJOSの手動インストール

Macで作業していますのでWindowsのインストーラは使わず手動でインストールします。

sourceforge.net
ここから leJOS_EV3_0.9.1-beta.tar.gz をダウンロードして展開します。
Running Java SE Embedded on LEGO® Mindstorms® EV3からJava SE Embedded version 7 をダウンロード

  • 展開したleJOS_EV3_0.9.1-betaのlejosimage フォルダの中身をFAT領域にコピー
  • ダウンロードしたjavaをFAT領域にコピー
  • SDカードをEV3にセットして起動

無事初回起動で環境が構築されます。
これでSDカードを買い直さなくても済みそうです。