「Raspberry Pi」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(直接転送に変更)
タグ: 転送先変更
 
(2人の利用者による、間の2版が非表示)
1行目: 1行目:
[[Category:ARM アーキテクチャ]]
+
#redirect [[ArchWiki:アーカイブ]]
  +
[[Category:アーカイブ]]
[[cs:Raspberry Pi]]
 
[[en:Raspberry Pi]]
 
[[ru:Raspberry Pi]]
 
[[uk:Raspberry Pi]]
 
[[zh-hans:Raspberry Pi]]
 
[[Wikipedia:ja:Raspberry Pi|Wikipedia]] より:
 
:"''Raspberry Pi はクレジットカードサイズのシングルボードコンピュータのシリーズである。イギリスのラズベリーパイ財団によって開発されており、学校で基本的なコンピュータ科学の教育を促進することを意図している。''"
 
オリジナルモデルは Broadcom SoC BCM2835 ([[Wikipedia:ARM11|ARM11 マイクロアーキテクチャ]]) を使用していましたが、ラズベリーパイ財団は最近になってニューモデルの "Raspberry Pi 2" をリリースしました。RasPi 2 には BCM2836 SoC (クアッドコアの [[Wikipedia:ARM_Cortex-A7|ARM Cortex A7]] アーキテクチャ) が搭載されています。2016年2月には、BCM2837 SoC (クアッドコアの [[Wikipedia:ARM Cortex-A53|ARM Cortex-A53 アーキテクチャ]]) を搭載して WiFi と Bluetooth が組み込まれた Pi 3 が発売されました。2019年6月には、BCM2711 SoC(クアッドコアの [[Wikipedia:ARM Cortex-A72|ARM Cortex-A72 アーキテクチャ]])を搭載し、USB3.0、Bluetooth5.0、ギガビット・イーサネット、4k出力(4k60Hz×1または4k30Hz×2)に対応したmicro-HDMIポート2つが組み込まれた Pi 4 が発売されました。
 
 
== 前書き ==
 
この記事は完全なセットアップガイドではなく、読者が既に Arch システムを構築していることを前提としています。ユーザーの作成やシステムの管理など、基本的な作業の方法がよくわからない場合、Arch 初心者は[[一般的な推奨事項]]を読むことが推奨されています。
 
 
{{Note|ARM アーキテクチャのサポートは公式 Arch Linux フォーラムではなく https://archlinuxarm.org で提供されています。ARM 固有の問題に関する投稿は [[フォーラムエチケット#Arch Linux ディストリビューションのサポートオンリー|Arch Linux ディストリビューションのサポートオンリー]]ポリシーに従って直ちにクローズされます。}}
 
 
== システム構成 ==
 
 
Raspberry Pi は ARM ベースのデバイスであり、ARM アーキテクチャ用にコンパイルされたバイナリが必要になります。ARM 用のバイナリは Arch Linux を ARM ベースのデバイスに移植している [https://archlinuxarm.org/about Arch Linux ARM プロジェクト] によって提供されています。ALARM プロジェクトのウェブサイトには独自のコミュニティとフォーラムがあります。オリジナルの Arch のフォーラムでは ARM に関連する問題は''サポートされていません''。Raspberry Pi 2 が登場したことで、デバイスのアーキテクチャによって必要なパッケージは2つに分かれています:
 
* ARMv6 (BCM2835): Raspberry Pi Model A, A+, B, B+, Zero, Zero W
 
* ARMv7 (BCM2836): Raspberry Pi 2 (Model B+ ベース)
 
* ARMv8 (BCM2837): Raspberry Pi 3
 
* ARMv8 (BCM2711): Raspberry Pi 4
 
 
== Arch Linux ARM のインストール ==
 
 
=== Raspberry Pi ===
 
 
[https://archlinuxarm.org/platforms/armv6/raspberry-pi Arch Linux ARM Pi のドキュメント] を見てください。
 
 
=== Raspberry Pi 2 ===
 
 
[https://archlinuxarm.org/platforms/armv7/broadcom/raspberry-pi-2 Arch Linux ARM Pi2 のドキュメント] を見てください。
 
 
=== Raspberry Pi 3 ===
 
 
{{Note|
 
* Raspberry Pi 3 は Raspberry Pi 2 よりも使用電力が多くなっています。公式では 2.5A の電源供給が推奨されています。電源供給が不十分だと予期不可能なエラーやファイルシステムの破損が発生する可能性があります。
 
* RPi3 は ARMv7 (32ビット) または AArch64 (64ビット) アーキテクチャのどちらでも動作しますが、AArch64 にはメーカーによるライブラリや拡張、関連ソフトウェアなどのサポートが整っていません。また、一部のハードウェアが上手く動かなかったりする可能性があります。現時点では ARMv7 を使用することを推奨します。}}
 
 
[https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-3 Arch Linux ARM Pi3 のドキュメント] を見てください。
 
 
=== Raspberry Pi 4 ===
 
 
{{Note|
 
* Raspberry Pi 4 は Raspberry Pi 3 よりもさらに使用電力が多くなっています。公式では 5V, 3A の電源供給が推奨されています。電源供給が不十分だと予期不可能なエラーやファイルシステムの破損が発生する可能性があります。
 
* RPi4 は ARMv8 (64ビット) で動作します。}}
 
 
[https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-4 Arch Linux ARM Pi4 のドキュメント] を見てください。
 
 
==== ARM インストール ====
 
Raspberry Pi 2 以前でビルドされたソフトウェア、特にベンダーライブラリを必要とするソフトウェアと互換性を持っています。
 
 
以下のコマンドで使われる {{ic|sdX}} は実際にコンピュータで認識された SD カードのデバイス名に置き換えてください。
 
 
fdisk を起動して SD カードのパーティショニングを開始:
 
# fdisk /dev/sdX
 
fdisk プロンプトが表示されたら、古いパーティションを削除して新しいパーティションを作成します:
 
* o を押してください。ドライブ上の全てのパーティションが消去されます。
 
* p を押してパーティションを確認してください。パーティションがひとつも存在しないはずです。
 
* n を押してから、p でプライマリパーティションを選択、1 でドライブの一番最初のパーティションを選択し、最初のセクタは ENTER でデフォルトに、最後のセクタは +100M と入力します。
 
* t を押してから c を押して最初のパーティションのタイプを W95 FAT32 (LBA) に設定してください。
 
* n を押してから、p でプライマリパーティションを選択、2 でドライブの二番目のパーティションを選択し、最初・最後のセクタは ENTER を2回押してデフォルトに設定します。
 
* w を押してパーティションテーブルに書き込んで終了してください。
 
FAT ファイルシステムを作成・マウント:
 
# mkfs.vfat /dev/sdX1
 
# mkdir boot
 
# mount /dev/sdX1 boot
 
ext4 ファイルシステムを作成・マウント:
 
# mkfs.ext4 /dev/sdX2
 
# mkdir root
 
# mount /dev/sdX2 root
 
root ファイルシステムをダウンロードして展開 (sudo ではなく root ユーザーで実行してください):
 
# wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-4-latest.tar.gz
 
# bsdtar -xpf ArchLinuxARM-rpi-4-latest.tar.gz -C root
 
# sync
 
ブートファイルを一番目のパーティションに移動:
 
# mv root/boot/* boot
 
パーティションをアンマウント:
 
# umount boot root
 
Rasberry Pi に SD カードを挿入して、有線を接続し、5V 電力を供給してください。
 
 
シリアルコンソールあるいは SSH を使ってルーターからボードに割り当てられた IP アドレスに接続します。デフォルトのユーザー名は alarm でパスワードは同じく alarm です。デフォルトの root パスワードは root です。
 
 
==== AArch64 インストール ====
 
メインラインカーネルと U-Boot を使ってインストールすることができます。ベンダーが提供しているライブラリや拡張、ソフトウェアのサポートはありません。ボードに搭載されているハードウェアの一部が機能しなかったり、正しく動かなかったりすることがあります。
 
 
インストール手順は上記と同じですが、次の tarball を使ってください: http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-3-latest.tar.gz
 
 
== ネットワーク ==
 
 
ネットワークはあらかじめ設定されており、[[systemd-networkd]] によって dhcp モードでオンボードの NIC が使われます。ケーブルが接続されていれば、ほとんどのルーターで自動的に IP が取得されます。
 
 
最初から [[Secure Shell]] を使って SD カードにアクセスする場合は、Raspberry Pi をイーサネットケーブルで接続してルーターの設定を通して IP アドレスを割り当てるのが一番簡単です。デフォルトのホストネームは '''alarmpi''' です。root で直接アクセスすることができます (パスワード: root)。まず初めにパスワードを変更することを強く推奨します。任意で [[SSH 鍵]]も設定してください。
 
 
=== Ethernet を使わずに WLAN を設定 ===
 
 
無線インターネット接続を確立する必要がある場合、いくつかパッケージを追加でダウンロードして SD カードに保存する必要があります。[[netctl]] を使用する場合、最低でも [[WPA supplicant]] と依存パッケージの ''libnl'' が必要になります。また、''dialog'' と依存パッケージの ''ncurses'' もインストールしておいたほうが便利でしょう。
 
 
まとめると以下を実行する必要があります:
 
* 他のコンピュータから SD カードにパッケージをダウンロード
 
* Raspberry Pi にパッケージをインストール・設定
 
 
必要なパッケージは全て [https://archlinuxarm.org/packages Arch Linux ARM の公式ウェブサイト] で見つけることができ、[http://mirror.archlinuxarm.org Arch Linux ARM のリポジトリ] からダウンロードできます。
 
 
その後、Raspberry Pi を接続して立ち上げて、モニター/キーボードを使うか[[#シリアルコンソール|シリアルコンソール]]でログインします。そして、パッケージを[[パッケージのオフラインインストール|オフラインインストール]]してください。パッケージの依存パッケージが欠けている場合は、依存パッケージもダウンロードしてインストールしてください。
 
 
[[ワイヤレス設定]]も読んでください。
 
 
== オーディオ ==
 
{{Note|必須モジュール {{ic|snd-bcm2835}} はデフォルトで自動ロードされます。}}
 
 
'''alsa-utils''', '''alsa-firmware''', '''alsa-lib''', '''alsa-plugins''' パッケージをインストールしてください:
 
# pacman -S alsa-utils alsa-firmware alsa-lib alsa-plugins
 
 
ARM の Linux カーネルバージョン 4.4.x では ALSA とサウンドモジュールに大きな変更があります。最新のカーネルで {{ic|alsamixer}} などのツールを使用するには {{ic|/boot/config.txt}} を編集して以下の行を記述してください:
 
dtparam=audio=on
 
 
任意で、{{ic|alsamixer}} を使ってデフォルトのボリュームを調整してください。唯一の音源 "PCM" がミュートされていないことを確認してください (ミュートされている場合は {{ic|MM}} と表示されます、ミュートを解除するには {{ic|M}} を押して下さい)。
 
 
音源の出力を選択するには:
 
$ amixer cset numid=3 ''x''
 
 
{{ic|''x''}} は以下のどれかになります:
 
*0 は自動
 
*1 はアナログ出力
 
*2 は HDMI
 
 
=== HDMI オーディオの注意 ===
 
アプリケーションによっては音声を HDMI で出力するために {{ic|/boot/config.txt}} に設定が必要です:
 
hdmi_drive=2
 
 
=== アナログ出力の注意 ===
 
3.5mm のアナログ出力からの音声がかすれることがあります。以下を {{ic|/boot/config.txt}} に追加することで問題は解決します:
 
audio_pwm_mode=2
 
 
== ビデオ ==
 
 
=== CPU/GPU のメモリ分割 ===
 
SoC に搭載されている CPU と GPU のメモリの振り分けは {{ic|boot/config.txt}} 内の {{ic|gpu_mem}} パラメータで設定できます。GPU から利用できるメモリの量を MB 単位で指定してください (最低 16 MB、デフォルトは 64 MB)。残りは全て ARM CPU から使用されます。
 
 
=== HDMI / アナログ TV 出力 ===
 
デフォルト設定では、Raspberry Pi は [[wikipedia:ja:HDMI|HDMI]] モニターが接続されているときは HDMI を使うようになっています。接続されていない場合はアナログ TV 出力 (コンポジット出力あるいは RCA) が使われます。
 
 
HDMI やアナログ TV 出力のオン・オフを切り替えるには、次を見て下さい:
 
 
/opt/vc/bin/tvservice
 
 
''-s'' パラメータでディスプレイの状態を確認し、''-o'' パラメータでディスプレイをオフに、''-p'' パラメータで優先設定を使って HDMI をオンにします。
 
 
オーバースキャン・アンダースキャンを適切に修正するには調整が必要で、多くの設定がある {{ic|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
 
 
もしくは、TV やモニターに「画面に合わせる」オプションが存在して、オーバースキャンを無効化したい場合:
 
 
disable_overscan=1
 
 
アナログビデオ出力を使いたいユーザーは NTSC 以外の出力のオプションを含んでいる[https://raw.github.com/Evilpaul/RPi-config/master/config.txt この]設定ファイルを見て下さい。
 
 
新しい設定を適用するには再起動が必要です。
 
 
=== アナログ TV 出力の注意事項 ===
 
 
Raspberry Pi 1 モデル B+ と Raspberry Pi 2 モデル B から、コンポジットビデオ端子はなくなって、代わりに 3.5mm の動画/音声ジャックからコンポジット信号を出力するようになっています。RCA ケーブルによっては赤や白の音声端子で動画を接続する Raspberry Pi の規格に対応していない場合があります [http://www.raspberrypi-spy.co.uk/2014/07/raspberry-pi-model-b-3-5mm-audiovideo-jack/]。
 
 
=== X.org ドライバー ===
 
 
Raspberry Pi の X.org ドライバーは '''xf86-video-fbdev''' あるいは ''xf86-video-fbturbo-git'' パッケージでインストールできます:
 
# pacman -S xf86-video-fbdev
 
 
== オンボードのハードウェアセンサー ==
 
=== 温度 ===
 
温度センサーは '''raspberrypi-firmware''' パッケージにあるユーティリティで使うことができます。RPi は BCM2835 SoC (CPU/GPU) 上にセンサーを搭載しています:
 
 
{{hc|$ /opt/vc/bin/vcgencmd measure_temp|2=
 
temp=49.8'C
 
}}
 
 
また、ファイルシステムから読み取ることもできます:
 
{{hc|$ cat /sys/class/thermal/thermal_zone0/temp|2=
 
49768
 
}}
 
 
人間が読めるように出力するには:
 
{{hc|$ awk '{printf "%3.1f°C\n", $1/1000}' /sys/class/thermal/thermal_zone0/temp|2=
 
54.1°C
 
}}
 
 
=== 電圧 ===
 
同じように {{ic|/opt/vc/bin/vcgencmd}} で4つの異なる電圧をチェックすることができます:
 
 
$ /opt/vc/bin/vcgencmd measure_volts ''<id>''
 
 
{{ic|''<id>''}} は以下のどれかに置き換えてください:
 
*core はコアの電圧
 
*sdram_c は sdram Core の電圧
 
*sdram_i は sdram I/O の電圧
 
*sdram_p は sdram PHY の電圧
 
 
=== ウォッチドッグ ===
 
BCM2708 にはハードウェアウォッチドッグが搭載されており {{ic|bcm2708_wdog}} [[カーネルモジュール]]を有効にすることで利用できます。
 
 
適切に扱うには {{ic|watchdog}} デーモンをインストールして設定する必要があります ({{ic|/etc/watchdog.conf}} 内の "watchdog-device" 行をアンコメントしてください)。それからデーモンを[[有効化]]してください。
 
 
Raspberry Pi 2 の場合は {{ic|bcm2709_wdog}} モジュールを、Raspberry Pi 3 の場合は {{ic|bcm2835_wdt}} モジュールを使用してください。
 
 
=== 軽量なモニタリングスイート ===
 
{{AUR|monitorix}} は v3.2.0 から RPi をサポートしています ({{ic|/etc/monitorix/monitorix.conf}} に {{ic|1=raspberrypi = y}} を設定してください)。温度・電圧・周波数などが記録されます。スクリーンショットは[http://www.monitorix.org/screenshots.html ここ] にあります。
 
 
== オーバークロック / アンダークロック ==
 
{{ic|/boot/config.txt}} を編集することで RPi をオーバークロックさせることができます、RPi 1 の設定例:
 
 
arm_freq=800
 
arm_freq_min=100
 
core_freq=300
 
core_freq_min=75
 
sdram_freq=400
 
over_voltage=0
 
 
RPi 3 の設定例:
 
 
arm_freq=1350
 
core_freq=500
 
sdram_freq=500 # test required
 
over_voltage=4
 
 
{{ic|*_min}} の行は任意で、それぞれの設定の最低値を定義します。システムの負担が低い時は、指定した値まで下がります。オプションの詳しい説明や例は elinux の [https://elinux.org/RPiconfig#Overclocking Overclocking] 記事を見て下さい。
 
 
新しい設定を適用するには再起動が必要です。
 
 
CPU のオーバークロック設定は、負担が高い時にガバナーが CPU の周波数を上げる場合にだけ適用されます。次のコマンドで現在の CPU の周波数を確認できます:
 
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
 
 
スケーリングガバナーの詳細は [[CPU 周波数スケーリング]]を見てください。
 
 
{{Tip|以下のスクリプトを実行すると RPi に設定された全ての周波数が表示されます:
 
{{bc|<nowiki>
 
#/bin/bash
 
for src in arm core h264 isp v3d uart pwm emmc pixel vec hdmi dpi ; do
 
echo -e "$src:\t$(/opt/vc/bin/vcgencmd measure_clock $src)"
 
done
 
</nowiki>}}
 
}}
 
 
== SD カードのパフォーマンスを最大化するヒント ==
 
 
システムのレスポンスは SD メディアの速度に大きな影響を受けます。特にシステムのアップデートなどディスク I/O に関する処理を行っている際はそれが際立つでしょう。pacman がファイルシステムにファイルを書き出すときに [https://archlinuxarm.org/forum/viewtopic.php?f=64&t=9467 頻繁に停止する] ような場合、RPi や RPi2 の接続バスが足を引っ張っているというよりは、SD (あるいはマイクロ SD) カードがボトルネックとなっている可能性があります。詳しくは[[ベンチマーク#フラッシュメディア]]を参照。UHS-I U3 以上の "Pro" クラスのカードを使うことを推奨します。
 
 
一般的なパフォーマンスを上げる方法については[[パフォーマンスの最大化]]や[[ソリッドステートドライブ#SSD の読み書きを最小化するヒント]]を見て下さい。
 
 
=== 起動時に fsck を有効にする ===
 
 
[[fsck#ブート時のチェック]]を見てください。カーネルパラメータは {{ic|/boot/config.txt}} で指定するようにしてください。
 
 
== シリアルコンソール ==
 
ブートメッセージを見るには、デフォルトの {{ic|/boot/cmdline.txt}} を編集して、{{ic|loglevel}} を {{ic|5}} に変更してください:
 
loglevel=5
 
 
{{Note|カーネルのバージョンによっては Pi3 でブートメッセージを表示するには {{ic|1=enable_uart=1}} を {{ic|/boot/cmdline.txt}} に追加する必要があります。他のバージョン (4.9.35 など) では設定によって正しく起動できなくなる場合があります。}}
 
 
速度を 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
 
 
そして PC から接続:
 
# screen /dev/ttyUSB0 38400
 
 
== Raspberry Pi カメラモジュール ==
 
カメラモジュールのコマンドは '''raspberrypi-firmware''' パッケージに含まれています - このパッケージはデフォルトでインストールされています。以下のコマンドで使うことができます:
 
$ /opt/vc/bin/raspistill
 
$ /opt/vc/bin/raspivid
 
 
{{ic|/boot/config.txt}} に以下を追加する必要があります:
 
gpu_mem=128
 
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
 
 
{{ic|/boot/config.txt}} に以下の値を設定してみてください:
 
cma_lwm=
 
cma_hwm=
 
cma_offline_start=
 
 
以下のエラーが表示される場合:
 
 
mmal: mmal_vc_component_create: failed to create component 'vc.ril.camera' (1:ENOMEM)
 
mmal: mmal_component_create_core: could not create component 'vc.ril.camera' (1)
 
mmal: Failed to create camera component
 
mmal: main: Failed to create camera component
 
mmal: Only 64M of gpu_mem is configured. Try running "sudo raspi-config" and ensure that "memory_split" has a value of 128 or greater
 
 
{{ic|/etc/modprobe.d/blacklist.conf}} に以下の行を追加してください:
 
blacklist i2c_bcm2708
 
 
({{ic|/dev/video0}} を使用する) 標準的なアプリケーションを使うには V4L2 ドライバーをロードする必要があります。以下のように自動ロードファイルを作成することで起動時に自動的にロードさせることが可能です:
 
{{hc|/etc/modules-load.d/rpi-camera.conf|bcm2835-v4l2}}
 
 
デフォルトでは V4L2 ドライバーを使って録画できる動画の解像度は 1280x720 が最大です。それ以上にしようとすると動画が 4 fps 以下にまで落ち込みます。制限を取り払いたい場合、以下のオプションを追加してください:
 
{{hc|head=/etc/modprobe.d/rpi-camera.conf|output=options bcm2835-v4l2 max_video_width=3240 max_video_height=2464}}
 
 
== ハードウェア乱数生成器 ==
 
Raspberry Pi 用の Arch Linux ARM には '''rng-tools''' パッケージがインストールされており、{{ic|bcm2835-rng}} (カーネル 4.4.7 から Raspberry Pi 2 と Raspberry Pi 3 では {{ic|bcm2835_rng}} モジュールに置き換えられています) が起動時にロードされるように設定されています ([https://archlinuxarm.org/forum/viewtopic.php?f=31&t=4993#p27708 こちら] を参照) が、Hardware RNG Entropy Gatherer Daemon ('''rngd''') にハードウェア乱数生成器の場所を教えてやる必要があります。
 
 
{{ic|/etc/conf.d/rngd}} を編集することで設定します:
 
RNGD_OPTS="-o /dev/random -r /dev/hwrng"
 
設定したら '''rngd''' デーモンを[[再起動]]してください:
 
# systemctl restart rngd
 
 
この設定で、ハードウェア乱数生成器からのデータがカーネルのエントロピープール ({{ic|/dev/random}}) に取り入れられるようになります。エントロピーを確認するには:
 
 
# cat /proc/sys/kernel/random/entropy_avail
 
 
{{Note|古いイメージからカーネルを更新すると旧式の {{ic|bcm2708-rng}} を見つけられず {{ic|systemd-modules-load.service}} の起動に失敗していることがあります。その場合には {{ic|/etc/modules-load.d/raspberrypi.conf}} を設定し直し、 {{ic|systemd-modules-load.service}} を再起動すると解決します ([https://archlinuxarm.org/forum/viewtopic.php?f&#61;64&t&#61;10153 こちら] を参照)。}}
 
 
== I/O ピン ==
 
=== GPIO ===
 
Python から GPIO ピンを使えるようにするには [https://pypi.python.org/pypi/RPi.GPIO RPi.GPIO] ライブラリを使用します。{{AUR|python-raspberry-gpio}} パッケージをインストールしてください。
 
 
=== SPI ===
 
{{ic|/dev/spidev*}} デバイスを有効にするには、以下の行をアンコメントしてください:
 
{{hc|head=/boot/config.txt|output=
 
device_tree_param=spi=on
 
}}
 
 
=== I2C ===
 
 
''i2c-tools'' パッケージをインストールしてください。
 
 
{{ic|/boot/config.txt}} に以下を追加することで i2c ハードウェアを有効にするようにブートローダーを設定します:
 
dtparam=i2c_arm=on
 
 
{{ic|i2c-dev}} と {{ic|i2c-bcm2708}} モジュールを起動時にロードするように設定:
 
 
{{hc|/etc/modules-load.d/raspberrypi.conf|i2c-dev
 
i2c-bcm2708}}
 
 
Raspberry Pi を再起動してから次のコマンドを実行してハードウェアアドレスを取得:
 
# i2cdetect -y 0
 
 
{{Note|I2C0 ではなく I2C1 ポートを使用する場合、{{ic|i2cdetect -y 1}} を実行して、以下のコマンドで使われている {{ic|i2c-0}} を {{ic|i2c-1}} に置き換える必要があります。}}
 
 
そしてデバイスを初期化するように Linux を設定します。以下のコマンドのハードウェアアドレスは先のコマンドで取得したアドレスに置き換えてください ('0x' を前に付けます、例: 0x48)。デバイス名は自由に決めて下さい:
 
# echo <devicename> <hardware address> >/sys/class/i2c-adapter/i2c-0/new_device
 
 
dmesg コマンドを使ってカーネルメッセージを確認すると、以下のような新しいエントリが追加されているはずです:
 
i2c-0: new_device: Instantiated device ds1621 at 0x48
 
[[lm_sensors]] などのプログラムを使ってセンサーの出力を読み出すことができます。
 
 
=== 1-Wire ===
 
1-Wire インターフェイスを有効にするには {{ic|/boot/config.txt}} に以下の行を追加して再起動してください:
 
dtoverlay=w1-gpio
 
 
== RPi でのコンパイル ==
 
 
RPi 上でのコンパイルは非常に低速です。ネットワーク上に他のノードが存在する場合 [[Distcc]] を使うことでコンパイル時間を大幅に短縮できます。x86_64 や i686 のマシンを使っている場合、[[Distcc#Arch Linux ARM]] に既存のマシンを活用して distcc をセットアップする方法が書かれています。
 
 
== QEMU chroot ==
 
 
場合によっては Raspberry Pi を動かすよりもディスクイメージを直接操作したほうが楽だということもあるでしょう。RPi の root パーティションが含まれている SD カードをマウントして、そこに chroot することで直接操作することができます。chroot からは、''pacman'' を実行してパッケージをインストールしたり、巨大なライブラリをコンパイルすることが可能です。実行可能ファイルは ARM アーキテクチャ用のものなので、[[QEMU]] を使って x86 への変換を行う必要があります。
 
 
64ビットの Raspberry Pi では {{ic|aarch64}} を使うことができます。他のモデルでは {{ic|arm}} を使ってください。
 
 
[[AUR]] から {{AUR|binfmt-support}} と {{AUR|qemu-user-static}} をインストールしてください。
 
 
そして {{ic|binfmt-support}} サービスを起動・有効化してください:
 
# systemctl enable binfmt-support
 
# systemctl start binfmt-support
 
 
{{AUR|qemu-user-static}} はコンパイルしたプログラムを他のアーキテクチャから実行するのに必要となります。{{Pkg|qemu-arch-extra}} と似たような機能ですが、chroot で使うには "static" なバージョンが必要です。例:
 
qemu-arm-static path_to_sdcard/usr/bin/ls
 
qemu-aarch64-static path_to_sdcard/usr/bin/ls
 
 
上記のコマンドで32ビットの ARM と64ビットの ARM 用にコンパイルされた {{ic|ls}} を実行できます。ホスト環境に存在しないライブラリを使うため、chroot を使わないと機能しません。
 
 
{{AUR|qemu-user-static}} は ARM の実行ファイルに自動的に {{ic|qemu-arm-static}} または {{ic|qemu-aarch64-static}} を前に付けます。{{ic|/var/lib/binfmts/qemu-arm}} や {{ic|qemu-user-static}} の [https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=qemu-user-static#n38 PKGBUILD] などを見てください。
 
 
ARM から x86 への変換が有効かどうか確認:
 
 
# update-binfmts --display qemu-arm
 
# update-binfmts --display qemu-aarch64
 
 
ARM から x86 への変換が有効でない場合、update-binfmts を使って有効にしてください:
 
# update-binfmts --enable qemu-arm
 
# update-binfmts --enable qemu-aarch64
 
 
SD カードを {{ic|mnt/}} にマウントします (デバイス名は適宜置き換えてください)。
 
 
# mkdir mnt
 
# mount /dev/mmcblk0p2 mnt
 
 
必要であればブートパーティションをマウントしてください (デバイス名は適当な名前に置き換えてください):
 
 
# mount /dev/mmcblk0p1 mnt/boot
 
 
(ARM からの変換を処理する) QEMU の実行可能ファイルを SD カードにコピーしてください:
 
 
# cp /usr/bin/qemu-arm-static /usr/bin/qemu-aarch64-static mnt/usr/bin
 
 
最後に [[Change Root#chroot を使う]]に書かれているように SD カードの root に chroot してください:
 
 
# chroot mnt/ /bin/bash
 
 
{{Pkg|arch-install-scripts}} に含まれている {{ic|arch-chroot}} を使うこともできます (ネットワークのサポートが含まれています):
 
# arch-chroot mnt/ /bin/bash
 
 
== 参照 ==
 
* [https://www.raspberrypi.org Raspberry Pi] - 公式ウェブサイト
 
* [https://elinux.org/RPiconfig RPi Config] - ボンネットの下の設定に関連する情報がまとまっています
 
* [https://elinux.org/RPI_vcgencmd_usage RPi vcgencmd usage] - ファームウェアコマンドの vcgencmd の概要
 

2022年11月2日 (水) 16:26時点における最新版