スポンサーリンク

Raspberry Pi 2にCentOS 7をインストール

シェアする

rpi2+centos

昨年の4月に購入したものの何も手をつけないまま、ほったらかしにしていた「Raspberry Pi 2」をサーバーとして運用しようと色々調べていたら、何とRaspberry Pi 2用の「CentOS」が配布されているとの情報を得て、早速インストールしたときの手順を備忘として書いておこうと思います。

 準備するもの

今回は、サーバーとして運用するために必要となる以下のものを用意

  • Raspberry Pi 2(本体)
    ※私は、本体+ケースセットを購入
  • microSDHC 16GB(Class 4)
    ※敢えて余っていたものを使用。タイムセールで買ったTranscend microSDHCカード 32GB Class10は、安定運用したときに変えるつもり...
  • microSD変換アダプタ
  • HDMI to VGA変換アダプタ
    ※PCディスプレイで初期設定をするため購入
  • USB対応のキーボード
    ※USB対応のキーボードが無くて購入。マウスも付いていましたが、今回は使用しません。
    ※Amazonで確認したら値上がってました(^^ゞ
  • microUSBケーブル&ACアダプタ
  • 有線LANケーブル

 OSイメージの入手

CentOSのサイトから「AltArch Releases」に記載される RaspberryPi2 (img) をダウンロード
イメージファイルは、32bit版です。

※最新版は、下記で確認
Download – CentOS Wiki

 イメージの展開

<Linux にて操作する場合>

# unxz CentOS-Userland-7-armv7hl-Minimal-1511-RaspberryPi2.img.xz

<Windows にて操作する場合>
7-Zipで展開可能です。 ※2016/1/29時点の最新バージョン:15.14

 イメージをmicroSDへ書き込み

まず最初にmicroSDをSDフォーマッタツールにて、初期化します。
microSDをUSB変換アダプタに挿入し、作業するPCに接続します。
SDフォーマッタ

フォーマット後、一度microSDを取り出して再度PCに接続します。
次に上記で展開したイメージファイルをmicroSDへ書き込みます。
私は、Win32DiskImager ツールを使用しました。
DD for Windows でも問題ないはず。

 ディスプレイの解像度を設定

microSDへイメージの書き込みが完了したら、使用するPCディスプレイに合った解像度を設定します。
解像度の設定は /boot/config.txt を編集しますが、config.txt が格納されているパーティションは、FATファイルシステム領域(いわゆるDOSパーティション)なので、Windowsのメモ帳や秀丸等のエディタで編集が可能です。

config.txtの詳細な設定については、以下のサイトを参照してください。
RPiconfig – eLinux.org

HDMIに対応したディスプレイもしくは、TVであれば変換アダプタも不要ですし、設定も変更する必要も無いかもしれません。

私が使用しているのは、2001年の発売時から15年も使っているNANAOの「EIZO FlexScan L465 (16インチ)」です。未だに現役で頑張ってくれてるなんて凄いです!

設定した内容は以下の通りです。
※Windowsで編集する場合は、改行コードに注意!! 改行コードは LF です。

hdmi_force_hotplug=1
hdmi_ignore_edid=0xa5000080
hdmi_drive=2   # Normal HDMI mode
hdmi_group=2   # DMT
hdmi_mode=35   # 1280x1024  60 Hz

 Raspberry Pi 2を起動

上記の準備が整ったら、microSDをRaspberry Pi 2へセットし、ACアダプタをコンセントへ差し込んで起動します。
無事に起動できたでしょうか?
画面上部にラズベリーが4つ出て、起動時の情報が一気に流れていき、ログイン状態となります。

ログインは、以下の通りです。
ユーザー名:root
パスワード:centos

 ssh接続の設定

以降の作業は、TeraTermから操作します。
それに伴い、sshで接続できるように設定を行います。
以下は、ローカルアクセスのみ許可するためのものです。

/etc/security/access.conf に下記を追加します。※IPアドレスは環境に合わせて変更してください。

+ : root : 192.168.0.

 パーティションサイズの変更

microSDに書き込まれたイメージは、本来のサイズを最大限使用しているわけではないため、そのままの状態だと容量不足になってしまいます。

# df -h

Filesystem      Size  Used Avail Use% Mounted on
/dev/root       2.0G  658M  1.2G  36% /
devtmpfs        459M     0  459M   0% /dev
tmpfs           463M     0  463M   0% /dev/shm
tmpfs           463M  6.2M  457M   2% /run
tmpfs           463M     0  463M   0% /sys/fs/cgroup
/dev/mmcblk0p1  300M   64M  237M  22% /boot
tmpfs            93M     0   93M   0% /run/user/0

そこで、以下の手順でパーティションのサイズを変更し、本来の容量に戻します。

# touch /.rootfs-repartition
# reboot

リブートが2回実行され、次にログインしたときは正しい容量に変わっています。

# df -h

Filesystem      Size  Used Avail Use% Mounted on
/dev/root        14G  660M   13G   5% /
devtmpfs        459M     0  459M   0% /dev
tmpfs           463M     0  463M   0% /dev/shm
tmpfs           463M  6.2M  457M   2% /run
tmpfs           463M     0  463M   0% /sys/fs/cgroup
/dev/mmcblk0p1  300M   64M  237M  22% /boot
tmpfs            93M     0   93M   0% /run/user/0

 ロケールの変更

デフォルトでは、システムのロケールが設定されていないので、localectlコマンドで設定します。
現在のロケールの状態を確認。

# localectl

   System Locale: n/a

       VC Keymap: n/a
      X11 Layout: n/a

ロケールを日本語に設定し、変更されているかを確認。

# localectl set-locale LANG=ja_JP.utf8
# localectl

   System Locale: LANG=ja_JP.utf8
       VC Keymap: us
      X11 Layout: us

ロケールの設定は、/etc/locale.conf に保存されます。

# cat /etc/locale.conf

LANG=ja_JP.utf8

 キーボード設定

キーボード設定も、localectlコマンドで設定します。

利用可能なキーマップを表示。

# localectl list-keymaps

...
jp
jp-OADG109A
jp-dvorak
jp-kana86
jp106
...

※Couldn’t find any console keymaps. が表示されても設定は可能です。

現在のキーボード設定を日本語106キーボードに設定します。

# localectl set-keymap jp106
# localectl

  System Locale: LANG=ja_JP.utf8
       VC Keymap: jp106
      X11 Layout: jp
       X11 Model: jp106
     X11 Options: terminate:ctrl_alt_bksp

キーマップの設定は、/etc/vconsole.conf に保存されます。

# cat /etc/vconsole.conf

KEYMAP=jp106

 タイムゾーン、日付、時刻の設定

タイムゾーンの表示および設定は、timedatectlコマンドで行います。
一覧を表示するには、オプションに list-timezone を付与して実行します。

# timedatectl list-timezones

...
Asia/Tokyo
Asia/Ulaanbaatar
Asia/Urumqi
...

タイムゾーンを設定するには、オプションに set-timezone を付与して実行します。

# timedatectl set-timezone Asia/Tokyo

設定されたタイムゾーンを表示します。

# timedatectl

      Local time: Thu 1970-01-01 09:05:07 JST
  Universal time: Thu 1970-01-01 00:05:07 UTC
        RTC time: n/a
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: n/a
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

次に日付と時刻を設定します。

# timedatectl set-time "2016-01-29 22:04:30"
# timedatectl

      Local time: Fri 2016-01-29 22:04:33 JST
  Universal time: Fri 2016-01-29 13:04:33 UTC
        RTC time: n/a
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: n/a
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

 ネットワーク設定

デフォルトでは、DHCPによる自動取得となっているため、IPアドレスを固定にします。
設定ファイルを確認します。

# ll /etc/sysconfig/network-scripts/ifcfg-eth0
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE="Ethernet"
BOOTPROTO="dhcp"
NM_CONTROLLED="yes"
DEFROUTE="yes"
NAME="eth0"
UUID="0cb1274f-****-****-****-************"
ONBOOT="yes"

これを以下のように変更します。 ※不要な項目もあると思いますが...

# vi /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE="Ethernet"
BOOTPROTO="static"
NM_CONTROLLED="yes"
DEFROUTE="yes"
NAME="eth0"
DEVICE="eth0"
UUID="0cb1274f-****-****-****-************"
IPADDR="192.168.0.123"
PREFIX="24"
GATEWAY="192.168.0.1"
DNS1="8.8.8.8"
ONBOOT="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"

ここで設定内容を保存し、一度TeraTermを終了します。
次の3行は、Raspberry Pi 2 にて実行します。

# nmcli c up eth0
# systemctl restart NetworkManager
# systemctl restart network

ここで再度TeraTermを起動し、設定を続けます。

 ホスト名、パッケージの最新化等

■ ホスト名の設定

# nmcli g hostname rpi2srv
# hostname
rpi2srv

■ yumの更新

# yum clean all
# yum update -y

■ NTPサーバーのインストール

# rpm -qa|grep chrony

⇒インストールされていない場合

# yum -y install chrony ntpdate

⇒インストールされている場合

# yum -y install ntpdate

参照するサーバを変更します。

vi /etc/chrony.conf

#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
   ↓
server ntp.nict.jp iburst
server ntp1.jst.mfeed.ad.jp iburst
server ntp2.jst.mfeed.ad.jp iburst
server ntp3.jst.mfeed.ad.jp iburst

ローカルアクセスのみ許可します。

# Allow NTP client access from local network.
#allow 192.168/16
allow 192.168.0.0/24

手動で時刻を調整します。

# ntpdate ntp.nict.jp

NTPサーバー起動&自動起動を設定します。

# systemctl start chronyd
# systemctl enable chronyd

正常に稼動していることを確認します。

# chronyc sources

210 Number of sources = 4
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^? ntp-a2.nict.go.jp             0   6     0   10y     +0ns[   +0ns] +/-    0ns
^* ntp1.jst.mfeed.ad.jp          2   6    17    11  -2105us[-2529us] +/-   81ms
^- ntp2.jst.mfeed.ad.jp          2   6    17    11  -5055us[-5055us] +/-   75ms
^+ ntp3.jst.mfeed.ad.jp          2   6    17    10  -3115us[-3115us] +/-  131ms

■ ベースパッケージ群、開発ツールパッケージ群インストール

# yum -y groupinstall "Base" "Development tools"

⇒依存性によるエラーがあった場合

# yum -y --skip-broken groupinstall "Base" "Development tools"

以上で、基本的な設定が完了となります。