# Raspberry Pi (日本語)

Raspberry Pi (RPi) は ARMv6 アーキテクチャを搭載したミニマルなコンピュータです。プロジェクトの詳細 と 技術仕様。

## 前書き

この記事は完全なセットアップガイドではなく、読者が既に Arch システムを構築していることを前提としています。ユーザーの作成やシステムの管理など、基本的な作業の方法がよくわからない場合、Arch 初心者はビギナーズガイドを読むことが推奨されています。

Note: ARM アーキテクチャのサポートは公式 Arch Linux フォーラムではなく http://archlinuxarm.org で提供されています。ARM 固有の問題に関する投稿は Arch Linux Distribution Support ONLY ポリシーに従って直ちにクローズされます。

## Arch Linux ARM のインストール

Arch Linux ARM のドキュメント を見て下さい。

### ファイルシステムのリサイズ

イメージサイズは 2GB です。(2GB より大きい) SD カード全体を使うように root ファイルシステムを拡大するには、既存のガイド に従って下さい。

## 無線 LAN

デフォルトで新しくインストールすると dhcpcd で有線の LAN に接続されます。始めから wlan を使って Raspberry Pi にアクセスしたい場合、SD カードに必要なファイルを作成してください。netctl のプロファイルを作って systemd ユニットの netctl-auto を有効にする必要があります。

- sdcard-partition5 をマウント

    # mount /dev/mmcblk0p5 /mnt

- netctl プロファイルを作成、メインマシンで netctl を使っている場合はそのプロファイルをコピー

    # cp /etc/netctl/profilename /mnt/etc/netctl/

もしくは /examples ディレクトリ `/etc/netctl/examples` からプロファイルを持ってきて修正してください。プロファイルの使用するインターフェイスは `wlpsXsX` ではなく `wlan0` です。

- 利用可能なネットワークに自動接続するには systemd ユニットの netctl-auto を有効にしてください。

    # ln -s /usr/lib/systemd/system/netctl-auto@.service /mnt/etc/systemd/system/multi-user.target.wants/netctl-auto@wlan0.service

- sd カードをアンマウント

    # umount /mnt

- sd カードを rpi に挿入して起動してください。
- `ssh root@alarmpi` で接続、パスワードは `root`

## オーディオ

Note: 必須モジュール `snd-bcm2835` はデフォルトで自動ロードされます。

alsa-utils, alsa-firmware, alsa-lib, alsa-plugins パッケージをインストールしてください:

    # pacman -S alsa-utils alsa-firmware alsa-lib alsa-plugins

任意で、`alsamixer` を使ってデフォルトのボリュームを調整してください。唯一の音源 "PCM" がミュートされていないことを確認してください (ミュートされている場合は `MM` と表示されます、ミュートを解除するには `M` を押して下さい)。

音源の出力を選択するには:

    $ amixer cset numid=3 x

`x` は以下のどれかになります:

- 0 は自動
- 1 はアナログ出力
- 3 は HDMI

### HDMI オーディオの注意

アプリケーションによっては音声を HDMI で出力するために `/boot/config.txt` に設定が必要です:

    hdmi_drive=2

## ビデオ

### HDMI / アナログ TV 出力

HDMI やアナログ TV 出力のオン・オフを切り替えるには、次を見て下さい:

    /opt/vc/bin/tvservice

-s パラメータでディスプレイの状態を確認し、-o パラメータでディスプレイをオフに、-p パラメータで優先設定を使って HDMI をオンにします。

オーバースキャン・アンダースキャンを適切に修正するには調整が必要で、多くの設定がある `boot/config.txt` で簡単に行うことができます。修正するには、コメントの指示に従って適切な行の設定をアンコメントしてください:

    # uncomment the following to adjust overscan. Use positive numbers if console
    # goes off screen, and negative if there is too much border
    #overscan_left=16
    overscan_right=8
    overscan_top=-16
    overscan_bottom=-16

アナログビデオ出力を使いたいユーザーは NTSC 以外の出力のオプションを含んでいるこの設定ファイルを見て下さい。

新しい設定を適用するには再起動が必要です。

### X.org ドライバー

Raspberry Pi の X.org ドライバーは xf86-video-fbdev パッケージでインストールできます:

    # pacman -S xf86-video-fbdev

## オンボードのハードウェアセンサー

### 温度

温度センサーは raspberrypi-firmware-tools パッケージにあるユーティリティで使うことができます。RPi は BCM2835 SoC (CPU/GPU) 上にセンサーを搭載しています:

    $ /opt/vc/bin/vcgencmd measure_temp

    temp=49.8'C

また、ファイルシステムから読み取ることもできます:

    $ cat /sys/class/thermal/thermal_zone0/temp

    49768

人間が読めるように出力するには:

    awk '{printf "%3.1f°C\n", $1/1000}' /sys/class/thermal/thermal_zone0/temp

    54.1°C

### 電圧

同じように `/opt/vc/bin/vcgencmd` で4つの異なる電圧をチェックすることができます:

    $ /opt/vc/bin/vcgencmd measure_volts <id>

`<id>` は以下のどれかに置き換えてください:

- core はコアの電圧
- sdram_c は sdram Core の電圧
- sdram_i は sdram I/O の電圧
- sdram_p は sdram PHY の電圧

### 軽量なモニタリングスイート

monitorix は v3.2.0 から RPi をサポートしています。スクリーンショットはここ にあります。

## オーバークロック / アンダークロック

`/boot/config.txt` を編集することで RPi をオーバークロックさせることができます、例:

    arm_freq=800
    arm_freq_min=100
    core_freq=300
    core_freq_min=75
    sdram_freq=400
    over_voltage=0

xxx_min の行は任意で、それぞれの設定の最低値を定義します。システムの負担が低い時は、指定した値まで下がります。オプションの詳しい説明や例は elinux の Overclocking 記事を見て下さい。

新しい設定を適用するには再起動が必要です。

Note: The overclocked setting for CPU clock applies only when the governor throttles up the CPU, i.e. under load.

次のコマンドで現在の CPU の周波数を確認できます:

    $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

## SD カードのパフォーマンスを最大化するヒント

一般的なパフォーマンスを上げる方法については Maximizing Performance (日本語) を見て下さい。

### 起動時に fsck を有効にする

起動時の fsck を有効にするには、最初に root ファイルシステムを読み取り専用でマウントして、それから読み書き可能で再マウントする必要があります。

まず、起動時に root を読み取り専用になるようにしてください。`/boot/cmdline.txt` を編集して root パーティションのオプションに "ro" を追加します。

    ipv6.disable=1 selinux=0 plymouth.enable=0 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p5 ro rootfstype=ext4 elevator=noop rootwait

次に、起動中にパーティションを再マウントするように `/etc/fstab` に次の行を追加します。

    /dev/mmcblk0p5  /       ext4    remount,rw        0       0

### /var/log を RAM に移動する

Warning: All system logs will be lost on every reboot.

次のエントリを `/etc/fstab` に追加すると 16MiB の容量の RAM ディスクが作成されます:

    tmpfs   /var/log        tmpfs   nodev,nosuid,size=16M   0       0

既存のログディレクトリを削除してください:

    # rm -R /var/log

変更を適用するためにシステムを再起動してください。

## シリアルコンソール

ブートメッセージを見るには、デフォルトの `/boot/cmdline.txt` を編集して、`loglevel` を `5` に変更してください:

    loglevel=5

速度を 115200 から 38400 に変える:

    console=ttyAMA0,38400 kgdboc=ttyAMA0,38400

getty サービスを起動する:

    # systemctl start getty@ttyAMA0

ブート時に有効にする:

    # systemctl enable getty@ttyAMA0.service

適当な service リンクを作成する:

    # ln -s /usr/lib/systemd/system/serial-getty@.service /etc/systemd/system/getty.target.wants/serial-getty@ttyAMA0.service

そして接続 :)

    # screen /dev/ttyUSB0 38400

## Raspberry Pi カメラモジュール

カメラモジュールのコマンドは raspberrypi-firmware-tools パッケージに含まれています - このパッケージはデフォルトでインストールされています。以下のコマンドで使うことができます:

    $ /opt/vc/bin/raspistill
    $ /opt/vc/bin/raspivid

`/boot/config.txt` に以下を追加する必要があります:

    start_file=start_x.elf
    fixup_file=fixup_x.dat

LED をオフにする設定 (任意):

    disable_camera_led=1

以下のエラーが表示される場合:

    mmal: mmal_vc_component_enable: failed to enable component: ENOSPC
    mmal: camera component couldn't be enabled
    mmal: main: Failed to create camera component
    mmal: Failed to run camera app. Please check for firmware updates

`/boot/config.txt` に以下の値を設定してみてください:

    cma_lwm=
    cma_hwm=
    cma_offline_start=

## ハードウェア乱数生成器

Raspberry Pi 用の ArchLinux ARM には rng-tools パッケージがインストールされており、bcm2708-rng が起動時にロードされるように設定されています (こちら を参照) が、Hardware RNG Entropy Gatherer Daemon (rngd) にハードウェア乱数生成器の場所を教えてやる必要があります。

`/etc/conf.d/rngd` を編集することで設定します:

    RNGD_OPTS="-o /dev/random -r /dev/hwrng"

設定したら rngd デーモンを再起動してください:

    systemctl restart rngd

この設定で、ハードウェア乱数生成器からのデータがカーネルのエントロピープール (`/dev/random`) に取り入れられるようになります。

## GPIO

### Python

Python から GPIO ピンを使えるようにするために、RPi.GPIO ライブラリを使用することができます。AUR から python-raspberry-gpio か python2-raspberry-gpio のどちらかをインストールしてください。

## 参照

- RPi Config - Excellent source of info relating to under-the-hood tweaks.
- RPi vcgencmd usage - Overview of firmware command vcgencmd.
- Archlinux ARM on Raspberry PI - A FAQ style site with hints and tips for running Archlinux on the rpi

Category:

- ARM architecture (日本語)