Raspberry Pi type Bでシリアル接続でOSをインストールできるか調べた

Raspberry Pi type Bが発売されてから、1年半くらい経っているということで、ネタとしては古いのですが、はじめは品薄で、最近になって入手性がよくなって、手を出す人が多くなったようなので、ブログを書きます。Raspberry Piのインストール用NOOBSは比較的インストールが楽ですが、HDMIかDVI入力のあるディスプレイへの出力が必要です。インストール作業を行う勉強会などでは、ディスプレイを用意するのは現実的ではないので、Windows、Mac OS X、Ubuntu、それぞれで、SDカードにRaw ImagesであるRaspbian “wheezy”( http://www.raspberrypi.org/downloads )を書きこんで、シリアル接続でRaspberry Piを起動する方法を調べました。

シリアル接続には、USBシリアルケーブル 半導体,TTL-RS232コンバータ,TTL-232R-Rpi,for Raspberry Piなどを使用するといい。このケーブルの場合、http://kantired.tumblr.com/post/44730456768/raspberry-leaf-raspberry-piにある写真を見て、GNDに黒色の端子を、TXDに黄色の端子を、RXDに赤の端子をつなぐといい。
また、SDカードリーダー・ライターは、ビックカメラで、ELECOM カードリーダライタ USB2.0対応 SD+MS+CF対応 ホワイトFACE MR-A39HWHF1をポイントを使って、300円ちょっとで買いました。これは、Ubuntu、Windows、Macで使えました。

1. Ubuntu 12.4
2013-07-26-wheezy-raspbian.zip を展開。

$ unzip 2013-07-26-wheezy-raspbian.zip

1.1 ddコマンドでイメージをSDカードに書き込む方法
SDカードをカードリーダー・ライターにさして、/var/log/syslogを見て、SDカードのデバイス名を知る。ここでは、/dev/sdxとして

$ sudo dd bs=4M if=2013-07-26-wheezy-raspbian of=/dev/sdx

結構、時間がかかる。書き込み後、SDカードをRaspberry Piにさす。Raspberry PiとUbuntu PCをシリアル接続した状態で、Ubuntuでターミナルエミュレータを起動して、

$ screen /dev/ttyUSB0 115200

を打ち、Raspberry Piを起動。デバイス名は環境依存かもしれない。起動画面を見れない。ddコマンドで、SDカードにイメージを書き込む方法はダメ。

1.2 usb-imagewriterを使う方法
usb-imagewriterをインストール

$ sudo apt-get install usb-imagewriter

SDカードにイメージを書き込む。

$ sudo imagewiter

書きこんで、SDカードをRaspberry Piにさして、起動。シリアル接続した時、起動画面を見れない。

1.3 NOOBSをSDカードにコピーする方法
gpartedでSDカードをFAT32でフォーマット。

$ sudo gparted

http://www.raspberrypi.org/downloadsのNOOBSを展開して、中身をSDカードにコピー。
SDカードをRaspberry Piにさして、シリアル接続して、起動。ユーザ名 root、パスワード rasberryを入力すると、rescue modeに入れるが、OS導入前の状態で、Raspbianをインストールする方法がわからず。

2. Windows
Vistaでテスト。USBシリアルケーブル 半導体,TTL-RS232コンバータ,TTL-232R-Rpi,for Raspberry Piを用いてシリアル接続を行う場合、Windowsで、ドライバーソフトをインストールしておく。

2.1 Win32DiskImagerを使う方法
Win32DiskImagerをダウンロード、展開。Win32DiskImager.exeを実行。イメージを選択して、SDカードのドライブを選択して、SDカードに書き込み。SDカードをRaspberry Piにさす。

Tera Term Proで接続。シリアル接続を選び、ポート(私の場合、COM11: USB Srial Port(COM11)、多分環境依存)を選択。通信速度を115200に設定。Raspberry Piを起動するも、起動画面を見れない。

2.2 DD for Windowsを使う方法
DD for Windowsをダウンロード。インストール。DD for Windowsを起動。SDカードを認識できず。

2.3 flashnulを使う方法
flashnulにアクセスできず、試せず。

3. Mac OS X(Moutain Lion)
USBシリアルケーブル 半導体,TTL-RS232コンバータ,TTL-232R-Rpi,for Raspberry Piを用いてシリアル接続を行う場合、Macで、ドライバーソフトをインストールしておく。

3.1 ddコマンドでSDカードにイメージを書き込む方法
/var/log/syslogを見て、SDカードのドライブ名を知る。

$ sudo dd bs=1m if=2013-07-26-wheezy-raspbian of=/dev/disk1

ディスク番号は環境によって違うかもしれないので、注意。SDカードをRaspberry Piにさして、Raspbery Piをシリアル接続して、起動。

$ screen /dev/tty.usbserial-XXXX 11520

起動画面を見れず。デバイス名は、SDカードをさしていない状態で、USBケーブルをさした時、

$ ls /dev/tty.usbserial*

として、知ることができる。私の環境では、/dev/tty.usbserial-FTGQVWQ6となったが、環境依存かもしれない。

3.2 diskutilを使う方法
$ sudo diskutil umount /dev/disk1s1
$ sudo dd bs=1m if=2013-07-26-wheezy-raspbian.img of=/dev/disk1
$ sudo diskutil eject /dev/disk1

ディスク番号は環境によって違うかもしれないので、注意。
SDカードをRaspberry Piにさして、Raspbery Piをシリアル接続して、起動。

$ screen /dev/tty.usbserial-XXXX 115200

起動画面を見れた。ユーザ名 pi、パスワード raspberryでログインできた。

4. 結論
ディスプレイなしで、SDカードにイメージを書きこんで起動するには、現状、Mac OS X環境でしかできない。勉強会でインストール作業をやるには、Macノートを持って行ってやるしかないだろう。

5. Raspberry Pi type B、シリアルケーブル入手先
jp.rs-online.comで買うと、Raspberry Pi本体が安いし、注文して翌営業日に届く。

6. 参考url
RPi Easy SD Card Setup

7. 追加情報
Ubuntuでも、ddコマンドで、SDカードにイメージを書きこんで、Raspberry Piを起動できるらしい。http://cryptlab.blog.fc2.com/blog-date-20130123.html。gpartedでパーティションをリサイズするのがキモなのかな?
→UubntuでddコマンドでイメージをSDカードに書き込み、gpartedを起動して、bootではないパーティション(ext4フォーマット)を拡張してみたけど、Raspberry Piは起動せず。パーティションの拡張は空きを全部使うのと、5.82GB(大きさは適当)に拡張してみたが、どちらもダメ。Ubuntuでddを使うのは地雷だな。

Raspberry Piで阿鼻叫喚

こんにちは、先日、日経LinuxのRaspberry Pi付きムック本を買いました。
昨日、ビックカメラで、SDカード、micro USBの電源、HDMIケーブルを買ってきて、セットアップをしました。
自分は普段、UbuntuとMacを使っているので、Ubuntuで、2013-07-26-wheezy-raspbian.zipを展開して、imgファイルをddコマンドでSDカードに書き込みました。SDカードを読み書きできるPCは家では、Ubuntuを入れたThinkPad X60のみだったので、そこで作業しました。SDカードは元はパーティションが2つ切ってありましたが、念のため、fdiskコマンドで、パーティションを削除してから行いました。しかし、SDカードをRaspberry Piにさして、東芝レグザにつなげても、起動画面が全く現れませんでした。facebookでそれを書いたら、村長から、HDMIのポートが複数あるが、使えたり使えなかったりするので、ポートを変えてみたらと助言を受けました。しかし、全てのポートを試してみましたが、全く起動画面が現れませんでした。

今日、再度作業をしました。次の方法を試しました。普段PCの画面表示に使っている液晶モニターがHDMIをサポートしていることがわかって、液晶モニターにつなげることにしました。

  • SDカードに2013-07-26-wheezy-raspbian.imgをUbuntuのddで書き込んで起動してみたが、起動しない。
  • SDカードをUbuntuのgpartedでFAT16でパーティションを切って、noobsを展開して得られたディレクトリの中身をコピーして起動してみた。ラズベリーのマークは拝めるけど、cmdline.txtを開けないと英語で表示され、リストにインストールできるディストリビューションが出ず、インストールできない。
  • Win32DiskImagerはThinkPad X60(Windows Vista)では、SDカードを認識できず、イメージを書き込めなかった。
  • 最終的に、ThinkPad X60(Windows Vista)にSD Formatterをインストールして、SD Formatter 4.0 ユーザーマニュアルに従ってSDカードをフォーマット。そして、ThinkPad X60 Ubuntuでマウントして、noobsの中身をコピーして起動できた。

最後の方法で、起動できるようになったのですが、どうもLinuxでddコマンドでイメージファイルを書き込んだり、gpartedでパーティションを切って、フォーマットしてファイルコピーではダメなようですね。ダメと言っているウェブページ。私の場合、ThinkPad X60で、Win3DiskImagerでSDカードを認識できなかったので、2013-07-26-wheezy-raspbian.img でOKかどうかは確認できませんでした。また、SD Formatterでフォーマットした場合、Windowsでnoobsのファイルをコピーしても多分OKでしょう。あと、起動できるようになって、設定を終了してから、東芝レグザのHDMI4ポートにつなげてみましたが、画面がちゃんと表示されました。

今日は、これらの作業の前に、初回にモニターなしで起動できないかあがいてしまいました。Ubuntu Serverにisc-dhcp-serverを入れ、DHCPサーバを立てました。リースするIPアドレスのレンジを限って、2013-07-26-wheezy-raspbian.imgを書き込んだSDカードをさしたRaspberry Piを起動して、/var/log/syslogファイルを監視しました。しかし、IPアドレスがリースされませんでした。多分、Ubuntuでddコマンでイメージを書き込んでいたので、SDカードの状態が良くなかったのでしょう。あと、正常に書き込んでいたとしても、初回起動時には設定画面が出て、IPアドレスを取得できていないとか。noobsを使ったインストール方法では、初回起動時の設定で、SSHサーバを有効にするかどうかあるので、多分、全くモニターなしでは、起動できないか、起動できても、SSHでリモートログインできないのではないかなと思います。

Jenkins+maven+Sonarを動かすのに役立ったサイトリスト

ここ数日、IntelliJでAndroidアプリのテスト付きmavenプロジェクトを作り、Jenkinsでビルド、テスト、静的解析をする方法を研究していました。Jenkinsとmaven、Sonarを組み合わせる方法は、ググっても、古い情報が引っかかることが多く、苦労しました。以下に、役立ったサイトのリストをあげます。折を見て、方法を紹介する記事を書きたいと思います。