Raspberry Pi 3 に CentOS を入れて環境構築。ハマった点など
今さらラズパイ買いました。
仕事でCentOSを使う機会が出てきたので、学習も兼ねて気軽にいじれる環境が欲しかったのです。
ラズパイには印象深い出来事がありまして、友人がディスプレイに繋いで使用していた光景を見て気が付いたことがあったんですね。化石メインPC(Celeron M 430)よりサクサク動いていることに。よもやシングルボードコンピュータがそれほどの性能を持つとは想像だにしていませんでした。そしてメインPCのスペックの低さにも嘆いた苦い思い出です。
Raspberry Pi 3 Model B に必要なもの
用途によってはLANケーブル、ディスプレイとHDMIケーブル、マウスやキーボードも必要でしょう。
ちなみに私はスマホ向け急速充電用のACアダプタを購入して使っています。
2ポート以上あるACアダプタを使用してポート分つなぐと出力電圧が激減することがあるので、今回はあえて1ポートだけあるACアダプタを選びました。急速充電用のACアダプタは2.4Aなので0.1A足りませんが、この程度の誤差なら許容されるものですから問題なく動きます。もっと言えば本当に2.5Aが求められる場面は端子をフルに使用した場合でしょうから、よほどヘビーな使い方をしない限りは心配ないと思います。
上記の商品は同じく急速充電用のUSBケーブルが必要ですが、他の機器にも転用しやすいですし、ラズパイ専用のACアダプタを買うのが憚られるならよいのではないでしょうか。
また必須ではありませんが、ケースとファンもあるとよいでしょう。
ラズパイ本体は5000円前後と買い求めやすいのですが、周辺機器を用意すると結構お金がかかっちゃうんですよね。
CentOS インストール
本題です。まずは上記リンクから CentOS のイメージファイルを取得します。
リンク先の「AltArch Releases」から「RaspberryPi3 (img)」を選びましょう。
イメージファイル書き込み
ダウンロードしたファイルは圧縮されているので、展開してからmicroSDに書き込む必要があります。
書き込み終わったらラズパイに電源とLANケーブルをつなぎましょう。HDMIをつないで操作するなりSSHでログインするなりすればもうCentOSが使えます。
ログインユーザ:パスワードはroot:centosです。
ディスプレイを使わずにSSHだけで初期設定?
補足ですが、SSHは設定せずとも使用できました。OSを初めて起動した時点で接続できるようになっています。
つまり、ディスプレイを使わずとも初期設定が可能で、完全にSSHオンリーで運用できるということです。
もちろんSSHで接続するためには割り当てられたIPアドレスを知らなければいけませんから、使用しているルータのリーステーブルを見るなどして接続しましょう。
SSHの設定はハマりポイントが多くて面倒なので嬉しいですね。
環境構築
日本語設定をしたり、無線LANを設定したり、rootパーティションのサイズを拡張したり、RAMディスクを作ったり、ファームウェアをアップデートしたり、様々な設定を行う必要があるでしょう。
それらの情報は調べればすぐに出てくるので、環境構築していて個人的に困ったことを下記に2つ述べます。参考になれば幸いです。
準備
本項で使用するコマンドをここで全部インストールしておきましょう。インストールしないと各項目のコマンド実行時にエラーが出ます。
yum -y install git make cmake gcc gcc-c++
/opt/vc/bin/にあるコマンドを使用できるようにする
「tvservice」「vcgencmd」「raspistill」「raspivid」「raspividyuv」「raspiyuv」などのコマンドを使用できるようになります。
Raspbianではデフォルトで使用できるコマンド群なのでしょうが、今回インストールしたCentOSでは使用するための設定が必要でした。
まずは/opt/vc/libをライブラリパスへ通す必要があります。
echo /opt/vc/lib > /etc/ld.so.conf.d/custom.conf
ldconfig
userlandリポジトリをGitからcloneしてビルドします。
ビルドには結構な時間がかかるので、実行中は何か別なことでもして待ちましょう。
cd /tmp
git clone https://github.com/raspberrypi/userland
cd userland
./buildme
ビルドが終わったら念のため使用できるかどうかの確認をしましょう。
/opt/vc/bin/vcgencmd version
いちいちフルパス指定するのも面倒なので、パスを通します。
export PATH="$PATH:/opt/vc/bin"
これで「/opt/vc/bin/XXXX」という指定をせずとも「XXXX」だけで実行できます。
試しに私は使用しないHDMIを無効にしてみました。これには一連の手順を踏まないと使用できないコマンドを使わなければいけません。実行するとHDMIが無効になる代わりに、消費電力がちょっとだけ下がるそうです。
tvservice --off
Wiring Pi のインストール
GPIOをコマンド1つで簡単に制御できるようになります。このライブラリのインストール方法を調べたところ、公式サイトのGitサーバから落としてビルドすれば使えるようになるらしいのですが、私の環境では上手くいきませんでした。
Wiring Pi の公式ページのインストール方法を参照すると、手順が2通り書いてあります。一般的に使用されるのは1つ目の手順のようです。
その下に Plan B なる2つ目の手順が存在するので、それを実行していきましょう。あらかじめ Drogon Projects の「snapshot」からダウンロードした「wiringPi-XXXXXXX.tar.gz」が/tmpディレクトリに格納されているという前提で話を進めます。
「snapshot」のダウンロードリンクはURLを生成するタイプなので、普通にWebブラウザを使って落とした方が無難です。
cd /tmp
tar xfz wiringPi-XXXXXXX.tar.gz
cd wiringPi-XXXXXXX
./build
ビルドが終わるとgpioコマンドを実行できます。
gpio -v
Copyright (c) 2012-2017 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty
Raspberry Pi Details:
Type: Pi 3, Revision: 02, Memory: 1024MB, Maker: Sony
* Device tree is enabled.
*--> Raspberry Pi 3 Model B Rev 1.2
* This Raspberry Pi supports user-level GPIO access.
piユーザについて
Raspbianにはデフォルトで存在するpiユーザが存在しませんでした。
私は記事に書かなかった作業も含めて全てrootで実行しましたが、本来はrootでの作業を極力避けるべきです。
せっかくなのでpiユーザを作っておきましょう。
useradd pi
passwd pi
補足追記 (2021年)
この記事は、学生時代に運営していたブログの記事を書き直したものです。
CentOSを覚える機会以外にも、学生時代に友達が使っていたのを見たのがきっかけになって買ったデバイスでした。Gitを入れるなどひとしきり勉強した後にLEDを光らせるとか温度を測定するとかで遊んでました。
その後、興味を示した会社の上司にあげました。
汎用性随一のボードなのでハードウェアを使った学校の授業でも使われます。
使えて損はないかもしれませんね。