Raspberry Pi
Raspberry Pi (RPi) は ARMv6 アーキテクチャを搭載したミニマルなコンピュータです。プロジェクトの詳細 と 技術仕様。
目次
前書き
この記事は完全なセットアップガイドではなく、読者が既に Arch システムを構築していることを前提としています。ユーザーの作成やシステムの管理など、基本的な作業の方法がよくわからない場合、Arch 初心者はビギナーズガイドを読むことが推奨されています。
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
オーディオ
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 の電圧
軽量なモニタリングスイート
monitorixAUR は 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 記事を見て下さい。
新しい設定を適用するには再起動が必要です。
次のコマンドで現在の CPU の周波数を確認できます:
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
SD カードのパフォーマンスを最大化するヒント
一般的なパフォーマンスを上げる方法についてはパフォーマンスの最大化を見て下さい。
起動時に 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 に移動する
次のエントリを /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-gpioAUR か python2-raspberry-gpioAUR のどちらかをインストールしてください。
参照
- 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