Raspberry Pi のまとめ (2012/11/01)

2012年10月15日以降の出荷分から Raspberry Pi (Model B) のメモリが 256MB から 512MB に増え、10月30日に Raspberry Pi の メモリ 512MB に対応したファームウェアを含む Debian派生の Linux ディストリビューション、Raspbian の新イメージ 2012-10-28-wheezy-raspbian公開されました。Raspberry Pi Model B の メモリ 512MB 版をサポートしたマイナーなリリースだそうですが、メモリ 512MB 版ラズベリーパイを入手した人には重要なリリースです。自動的にメモリー容量を把握して64MBをGPU、残りをARMに割り当ててくれます。 また、raspi-config から GPUへのメモリ割り当て量を自由に設定できるようになっています。

以前に比べると入手もし易くなって、ちょっと落ち着いてきた感があり、ハード、ソフトともに、しばらく大きな変更も無さそうなので、起動までの手順に関して「Raspberry Pi メモ」のあちこちに書いてきたことを2012-10-28-wheezy-raspbian 用に改訂してまとめてみました。

Raspberry Pi のスペック

Raspberry Pi は子供たちにコンピュータサイエンスと電子工学の基礎を学んでもらうために ケンブリッジ大学のコンピュータ研究所 にある Raspberry Pi Foundation が開発した超小型で非常に安価($35)なコンピュータです。

Raspberry Pi (Model B)
CPU Broadcom BCM2835 (ARM1176JZFS, 700MHz - 1GHz)
GPU Dual Core VideoCore IV (OpenGL ES 1.1/2.0)
メモリ 512MB (2012/10/15以前は256MB)
USB 2ポート
NET 10/100BaseT Ethernet
サイズ 85.60mm x 53.98mm x 17mm
電源 5V 700mA
消費電力 3W (ワットチェッカー による実測値)

用意したもの

Raspberry Pi自体はCPUとメモリ付きのマザーボード単体と同じなので電源やケーブルを用意する必要があります。HDMI入力可能なテレビとスマートフォン用AC充電器、SDカードがあれ動作させることができます。以下は私が用意したものです。


2012-10-28-wheezy-raspbian のインストール

すでにRaspberry Pi で Raspbian を使っていれば、次のコマンドでも新イメージと同じ環境がインストールできるはずです。 しかし、使用中のSDカードに問題が発生するのも嫌なので、別のSDカードに 2012-10-28-wheezy-raspbian をインストールすることにします。

sudo apt-get update
sudo apt-get install raspi-config libraspberrypi*

MacBook Pro17 の MacOSX 10.8.2 でインストール作業した記録です。 MacOS X ではデバイス名の指定方法が異なるだけで、Linuxと同じく dd コマンドを使ってSDカードに ディスクイメージを書き込みます。まずは SDカードのデバイス名を調べます。以下の例は、私のMacBookでの例です。適宜読み替えてください。

dd コマンドのデバイスの指定を間違えると最悪ハードディスクがすべて消えるなどの悲惨な結果が待っています。十分に注意して行なってください。

$ uname -rsv
Darwin 12.2.0 Darwin Kernel Version 12.2.0: Sat Aug 25 00:48:52 PDT 2012;
 root:xnu-2050.18.24~1/RELEASE_X86_64

「sudo apt-get update && apt-get upgrade」でもほとんどの機能がインストールされるようですが、安全に別のSDカードに 2012-10-28-wheezy-raspbian をインストールしました。 ダウンロードしたディスクイメージは以下のサイズです。

$ ls -lt 2012-10-28-wheezy-raspbian.zip
-rw-r--r--@ 1 jun  staff  455505411 10 29 22:10 2012-10-28-wheezy-raspbian.zip

イメージのハッシュが 3ee33a94079de631dee606aebd655664035756be であることを確認しました。

$ shasum 2012-10-28-wheezy-raspbian.zip
3ee33a94079de631dee606aebd655664035756be  2012-10-28-wheezy-raspbian.zip

いつものようにMacBook Pro17 にUSB接続のmicroSDカードリーダを接続して、SDカードをアンマウント。

$ diskutil unmount /dev/disk1s1
Volume (null) on disk1s1 unmounted

古いイメージが入っていた 16GBのclass 10 microSDカード のパーティションレコードを一応初期化しました。

$ sudo fdisk -i /dev/disk1
fdisk: could not open MBR file /usr/standalone/i386/boot0: No such file or directory

  -----------------------------------------------------
  ------ ATTENTION - UPDATING MASTER BOOT RECORD ------
  -----------------------------------------------------

Do you wish to write new MBR and partition table? [n] y

パーティションを確認。

$ sudo fdisk /dev/disk1
Password:
Disk: /dev/disk1  geometry: 1947/255/63 [31291392 sectors]
Signature: 0xAA55
         Starting       Ending
 #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
------------------------------------------------------------------------
*1: AB    0   1   1 - 1023 254  63 [        63 -      16384] Darwin Boot
 2: AF 1023 254  63 - 1023 254  63 [     16447 -   31274945] HFS+
 3: 00    0   0   0 -    0   0   0 [         0 -          0] unused
 4: 00    0   0   0 -    0   0   0 [         0 -          0] unused

zipファイルを展開します。

$ unzip 2012-10-28-wheezy-raspbian.zip
Archive:  2012-10-28-wheezy-raspbian.zip
  inflating: 2012-10-28-wheezy-raspbian.img

$ ls -lt 2012-10-28-wheezy-raspbian*
-rw-r--r--@ 1 jun  staff   455505411 10 29 22:10 2012-10-28-wheezy-raspbian.zip
-rw-r--r--@ 1 jun  staff  1939865600 10 29 08:01 2012-10-28-wheezy-raspbian.img

SDカードに書き込みます。

$ sudo time dd bs=1m if=2012-10-28-wheezy-raspbian.img of=/dev/rdisk1
Password:
1850+0 records in
1850+0 records out
1939865600 bytes transferred in 109.425982 secs (17727651 bytes/sec)
      109.45 real         0.00 user         1.59 sys

ブート領域のファイルを確認します。

$ cd /Volumes/Untitled
$ ls -lt
total 33744
-rwxrwxrwx  1 jun  staff      137 10 28 23:01 issue.txt
-rwxrwxrwx  1 jun  staff      142 10 28 22:11 cmdline.txt
-rwxrwxrwx  1 jun  staff     1180 10 28 22:11 config.txt
-rwxrwxrwx  1 jun  staff    17764 10 28 17:40 bootcode.bin
-rwxrwxrwx  1 jun  staff     5282 10 28 17:40 fixup.dat
-rwxrwxrwx  1 jun  staff     2020 10 28 17:40 fixup_cd.dat
-rwxrwxrwx  1 jun  staff  2695192 10 28 17:40 kernel.img
-rwxrwxrwx  1 jun  staff  2104952 10 28 17:40 kernel_cutdown.img
-rwxrwxrwx  1 jun  staff  9522048 10 28 17:40 kernel_emergency.img
-rwxrwxrwx  1 jun  staff  2347828 10 28 17:40 start.elf
-rwxrwxrwx  1 jun  staff   523144 10 28 17:40 start_cd.elf

これまで (2012-09-18-wheezy-raspbianまで) のブートイメージと異なってメモリサイズ毎に「start.elf」が用意されていません。loader.bin も無くなくなっています。

/boot/config.txt を確認してみます。とくに変更されていません。

$ cat -n config.txt
     1  # uncomment if you get no picture on HDMI for a default "safe" mode
     2  #hdmi_safe=1
     3
     4  # uncomment this if your display has a black border of unused pixels visible
     5  # and your display can output without overscan
     6  #disable_overscan=1
     7
     8  # uncomment the following to adjust overscan. Use positive numbers if console
     9  # goes off screen, and negative if there is too much border
    10  #overscan_left=16
    11  #overscan_right=16
    12  #overscan_top=16
    13  #overscan_bottom=16
    14
    15  # uncomment to force a console size. By default it will be display's size minus
    16  # overscan.
    17  #framebuffer_width=1280
    18  #framebuffer_height=720
    19
    20  # uncomment if hdmi display is not detected and composite is being output
    21  #hdmi_force_hotplug=1
    22
    23  # uncomment to force a specific HDMI mode (this will force VGA)
    24  #hdmi_group=1
    25  #hdmi_mode=1
    26
    27  # uncomment to force a HDMI mode rather than DVI. This can make audio work in
    28  # DMT (computer monitor) modes
    29  #hdmi_drive=2
    30
    31  # uncomment to increase signal to HDMI, if you have interference, blanking, or
    32  # no display
    33  #config_hdmi_boost=4
    34
    35  # uncomment for composite PAL
    36  #sdtv_mode=2
    37
    38  #uncomment to overclock the arm. 700 MHz is the default.
    39  #arm_freq=800
    40
    41  # for more options see http://elinux.org/RPi_config.txt

新しいイメージで起動

インストールしたSDカードをRaspberry Piにセットして、再起動。

最初の起動時に表示される設定画面

起動すると、最初の1回だけ初期設定を行う以下の画面が表示されます。Linuxのデスクトップが表示されると思っているとちょっと面食らいます。

上下のカーソルキーで項目を移動して、[TAB]キーで <Select> を選択、[Return]キーを押して各項目の設定画面に移動します。

info
このツールの情報が表示されますが、特に内容はありません。
expand_rootfs
【重要】容量の大きいSDカードを使用しても、最初は先頭の2GB程度のパーティションを使うだけになっていて無駄になるため、このコマンドを選択してSDカードの容量全体を使うように設定できます。設定後に再起動が必要ですが、処理に時間がかかるため、ハングアップと間違えないように注意して下さい。
overscan
画面の周囲をちょっと空けるオーバースキャンを設定します。画面周囲が切れるような場合(テレビ?)に使用します。
configure_keyboard
キーボードの配列を指定します。普通は「Generic 105-key (Intl) PC」を選択して「Japanese - Japanese (OADG 109A) 」でいいでしょう。
change_pass
【重要】'pi' ユーザのパスワードを変更
change_locale
ロケールの設定です。最初は設定しないほうがいいでしょう。 「ja_JP.UTF-8 UTF-8」を選択するとメニューなどが日本語化されますが、最初は日本語フォントがインストールされていないため、文字化けします。
change_timezone
時間の設定です。日本時間は 「Asia」、「Tokyo」 と指定します。
memory_split
CPUとGPUへのメモリの配分を変更します。ここで設定した値 (MB単位) が GPU へ割り当てられ、残りは CPU (ARM) に割り当てられます。512MB版が登場したため、未設定の場合の GPU への割り当てが 32MB から 64MB に変更されています。
overclock
CPU、GPU、メモリのクロックの初期設定はそれぞれ700MHz、250MHz、400MHzですが、高付加になった場合、オーバークロックして最大CPUは 1GHz、GPU は 500MHz、メモリは 600MHz まで高速化する事が出来ます。 過度のオーバークロックはシステムの寿命を短くする可能性、SDカード(の内容)を壊す可能性があるという警告が表示されるので、「自己責任で」ということになります。
ssh
ネットワーク越しにコマンドラインに接続する場合には「Enable」を選択します。最初から「Enable」になっています。ネットワーク越しに操作するだけの使い方ならば、キーボードもマウスもディスプレイも不要です。
boot_behaviour
起動時に直接GUIな画面(Xのデスクトップを表示)に移行する場合は「Yes」を選択します。しばらくは、コンソールでログインしてから、「startx」コマンドで X を起動することをオススメします。
update
この raspi-config の新しいバージョンがあれば取得します。

2番めの「expand_rootfs」と「change_pass」で'pi' ユーザのパスワード変更は実行しておいたほうがいいでしょう。「sudo raspi-config」でいつでも実行できるので、後からでも設定できます。

メモリ割り当ての変更方法

CPUとGPUへのメモリの配分を変更します。ここで設定した値 (MB単位) が GPU へ割り当てられ、残りは CPU (ARM) に割り当てられます。


これまでが3種類の決められた割り当てから選択する形式でしたが、 2012-10-28-wheezy-raspbian の raspi-config から MB単位の数値を入力する形式に変更されています。



オーバークロックの設定

raspi-config の「overclock」という項目を選択するとオーバークロックの程度を変更できます。


選択すると、「オーバークロックするとRaspberry Piの寿命を縮める可能性があります。もしオーバークロックしてシステムが不安定になったら、もっとマイルドな設定を試して下さい。詳細は http://elinux.org/RPi_Overclocking を参照してね。」という感じの注意書きが表示されます。

デフォルトの 700MHz から 1GHz までの選択肢が表示されます。「0 overvolt」 は 1.2V、「6 overvolt」は電圧を1.35Vに設定することを示します。ここで選択した設定には CPU が85%以上の負荷になると切り替わります。CPUがアイドル状態になると元 (700MHz) に戻ります。また、CPU の温度が 85 ℃を超えると 700MHz に戻ります。


最も速い設定に変更すると「警告:ここまでオーバークロックするとSDカードが壊れたという報告があるよ」と表示されます。



raspi-configを使ったオーバークロック設定では、オーバークロック状態でブートすることはないと思いますが、万一システムが不安定になってブートに失敗する場合でも、起動時にシフトキーを押し続けることで遅いクロックで起動させる事が出来るようです。

新しい config.txt

raspi-config で上記の設定をすると /boot/config.txt の内容が以下のように変更されます。

pi@raspberrypi /boot $ cat -n config.txt

略

    34
    35  # uncomment for composite PAL
    36  #sdtv_mode=2
    37
    38  #uncomment to overclock the arm. 700 MHz is the default.
    39  arm_freq=1000
    40
    41  # for more options see http://elinux.org/RPi_config.txt
    42  gpu_mem=64
    43  core_freq=500
    44  sdram_freq=600
    45  over_voltage=6

config.txt の後ろに設定が追加されています。 ARMとGPUのメモリの割り当てはgpu_mem で指定されていて、gpu_mem に設定した値 (MB単位) が GPU へ割り当てられ、残りは CPU (ARM) に割り当てられます。 デフォルトは64MBです。gpu_mem_256 という設定を追加するとメモリが256MBの場合には gpu_mem より優先して (最大192) 使用され、メモリが512MBの場合には無視されます。同様に gpu_mem_512 を設定するとメモリが512MB の場合には gpu_mem より優先して (最大448) 使用され、メモリが256MBの場合には無視されます。

sambaのインストール

別マシンからファイルにアクセスできる方がバックアップなど何かと便利なので samba をインストールしました。Linuxに慣れていても、最初は「smbpasswd」コマンドが無くて途方に暮れたので、これも記録しておきます。

root@raspberrypi:~# apt-get update
root@raspberrypi:~# apt-get install samba
root@raspberrypi:~# vi /etc/samba/smb.conf

sambaのユーザの追加にはこれまで「smbpasswd」コマンドを使っていましたが、wheezyでは「smbpasswd」コマンドは普通にsambaをインストールしても使えないので、代わりに「pdbedit」を使います。

root@raspberrypi:~# pdbedit -a -u pi

「Tiny BASIC と ASLR」に続く...