Linux

Raspberry Pi 3 に CentOS 7

投稿日: 更新日:


これまでも何度も Raspberry Pi を初期化していますが、
今回はサーバー運用に定評がある CentOS(for armv7hl) を入れてみました。
その時の設定メモです。

補足
armv7hl とは、文字通り ARMv7 向けかと思いますが、Raspberry Pi 3は、ARMv8 です。
なので、本来であれば v8用が必要なのかもしれませんが、
CentOSのサイトには Raspberry Pi 3 用であっても armv7hl とファイル名にかいてあるので、
この辺のARMのバージョンは気にしなくていいのかもしれません。

そしてですが、このCentOS用のイメージはテスト版であることと、ARM用ということなので、
普通のx86版のCentOSで行えるようなサードパーティのパッケージが用意されていない場合がありますので注意してください。
.
.
1. パーティションが存在するSDカードの初期化
1-1. コマンドプロンプトで「diskpart」を実行
1-2. 「list disk」で初期化したいSDカードのディスク番号を調べる
1-3. 「select disk 1」でディスク番号1を選択する
1-4. 「list partition」でパーティションを確認し選択しているのが正しいことを確認
1-5. 「clean」で内部を初期化
.
.
2. SDカードをフォーマットする
2-1. 「SD/SDHC/SDXC用SDメモリカードフォーマッター 5.0」を利用
.
.
3. CentOSのRaspbeyPi3用のimgファイルを準備
3-1. 「CentOS-Userland-7-armv7hl-Minimal-1611-test-RaspberryPi3.img.xz」をダウンロードして「7zip」などで展開
3-2. 「Win32DiskImager」を利用して、imgファイルをSDカードに入れる
3-3. これを差し込めば一応利用可能になる
.
.
4. SSHでログインできるまでの基礎設定
4-1. HDMI でディスプレイに接続して、USBキーボードを接続する
4-2. 次のコマンドをうち日本語キーボード入力を有効化する

localectl set-keymap jp106
localectl set-keymap jp-OADG109A
localectl LANG=ja_JP.utf8

4-3. タイムゾーンの設定を行う

timedetectl set-timezone Asia/Tokyo

4-4. SDカードの拡張を行う

/usr/local/bin/rootfs-expand

4-5. 次のコマンドでIPアドレスを調べる

ifconfig

4-6. sshで、ユーザー名 root、パスワード、centos でログイン
4-7. パスワードは次のコマンドで変更できるので必ず変更しておきましょう

passwd

.
.
5. 外部にネットワークで接続できるようにする(CentOS7 から後述の nmtui を使うと良い)
5-1. 「/etc/sysconfig/network」がないので、「touch」で新規作成する※後述
5-2. 中はネットワーク接続と、デフォルトゲートウェイの設定をする

NETWORKING="yes"
GATEWAY="192.168.11.1"(デフォルトゲートウェイ)

5-3. 「/etc/sysconfig/network-scripts/ifcfg-eth0」を編集して、固定IPアドレスにする

TYPE="Ethernet"
BOOTPROTO="dhcp"
NM_CONTROLLED="yes"
DEFROUTE="yes"
NAME="eth0"
UUID=xxx
ONBOOT="yes"

TYPE="Ethernet"
BOOTPROTO="static"
NM_CONTROLLED="yes"
DEFROUTE="yes"
NAME="eth0"
UUID=xxx(いじらない)
ONBOOT="yes"
IPADDR="192.168.11.200"(自分のIPアドレスにする)
NETMASK="255.255.255.0"
DNS1="8.8.8.8"(Google のDNSサーバーを設定する)
DNS2="8.8.4.4"

5-4. NetworkManagerを止める

systemctl stop NetworkManager

5-5. ネットワークの設定をリロードする

systemctl daemon-reload
systemctl restart network

5-6. ping で外部サーバーに接続できるかテストする

[root@centos-rpi3 sysconfig]# ping google.com
PING google.com (216.58.200.174) 56(84) bytes of data.
64 bytes from nrt12s11-in-f174.1e100.net (216.58.200.174): icmp_seq=1 ttl=49 time=20.3 ms
64 bytes from nrt12s11-in-f174.1e100.net (216.58.200.174): icmp_seq=2 ttl=49 time=20.5 ms
64 bytes from nrt12s11-in-f174.1e100.net (216.58.200.174): icmp_seq=3 ttl=49 time=20.2 ms

※「/etc/sysconfig/network」の設定がないと、次のようにエラーで立ち上がりません。

[root@centos-rpi3 sysconfig]# systemctl status network.service
● network.service - LSB: Bring up/down networking
   Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
   Active: failed (Result: exit-code) since Thu 1970-01-08 06:27:21 JST; 8min ago
     Docs: man:systemd-sysv-generator(8)

Jan 08 06:27:21 centos-rpi3 systemd[1]: Starting LSB: Bring up/down networking...
Jan 08 06:27:21 centos-rpi3 systemd[1]: network.service: control process exited, code=exited status=6
Jan 08 06:27:21 centos-rpi3 systemd[1]: Failed to start LSB: Bring up/down networking.
Jan 08 06:27:21 centos-rpi3 systemd[1]: Unit network.service entered failed state.
Jan 08 06:27:21 centos-rpi3 systemd[1]: network.service failed.

【注意】
CentOS7 から手動でファイルをいじる方法は推奨されていません。
nmtui を使用して NetworkManager で設定するのを推奨されています。
nmtui のほうが簡単にIPアドレスを設定できるので、おすすめです。
コマンドで設定ができる nmcui というのもあります。
.
.
6. yum コマンドを使用できるようにする
6-1. 「/etc/yum.repos.d/CentOS-armhfp-kernel.repo」を下記のように編集する

[centos-kernel]
name=CentOS Kernels for armhfp
baseurl=http://mirror.centos.org/altarch/7/kernel/$basearch/kernel-$kvariant ★ここを変更する
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
       file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-AltArch-Arm32

[centos-kernel]
name=CentOS Kernels for armhfp
baseurl=http://mirror.centos.org/altarch/7/kernel/$basearch/kernel-rpi2
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
       file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-AltArch-Arm32

※なにもせずに「yum update」をすると、404エラーが発生します。

[root@centos-rpi3 ~]# yum update
Loaded plugins: fastestmirror
base | 3.6 kB 00:00:00
http://mirror.centos.org/altarch/7/kernel/armhfp/kernel-%24kvariant/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found
...
failure: repodata/repomd.xml from centos-kernel: [Errno 256] No more mirrors to try.
http://mirror.centos.org/altarch/7/kernel/armhfp/kernel-$kvariant/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found

6-2. yum の更新を行う

yum clean all
yum update

.
.
7. pi@centos に変更してみる
6-1. 現在使用しているのは「root@centos-rpi3」となりますが、rootを権限で常にいるのはよくないとききます。そのため、別のアカウントを作ってみましょう。
6-2. 次のようにすることで、簡単にpiユーザーを作成できます。

useradd pi
passwd pi

6-3. ホスト名もついでに変更する

hostname centos

6-4. 新規に作ったpiユーザーで、sudoを使用できるようにする

visudo

6-5. 「visudo」で「/etc/sudoers」を編集します。

## Allow root to run any commands anywhere 
root	ALL=(ALL) 	ALL

## Allow root to run any commands anywhere 
root	ALL=(ALL) 	ALL
pi	ALL=(ALL)	ALL

6-6. pi ユーザーで ssh ログインが出来るようになり、pi で sudo も利用が行えます。
.
.
7. 便利なものをインストールする。
7-1. nano のインストール

sudo yum install nano

7-2. make コマンドが使えるようなツールのインストール

sudo yum install make gcc gcc-c++

.
.
8. Sambaをインストールする。
8-1. インストール

yum install samba

8-2. アカウントを作成する(下記のどちらかのコマンドでよい)

smbpasswd -a pi
pdbedit -a pi

8-3. 設定ファイルを編集する

vi /etc/samba/smb.conf

8-4. 中身がおかしな部分があるので修正する

[global]
        workgroup = SAMBA
        security = user

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
        encrypt_passwords = yes ← 実際は"encrypt passwords"

8-5. アカウントを確認する

pdbedit --list

8-6. サービスの起動と、自動開始の設定、ファイアーウォールの設定をする

systemctl start smb.service
systemctl start nmb.service
systemctl enable smb.service
systemctl enable nmb.service
firewall-cmd --permanent --add-service=samba --zone=public
firewall-cmd --reload

8-7. ホームディレクトリも見えるようにしておく

setsebool -P samba_enable_home_dirs on

何かしたら追記していきます
.
.


参考サイト
・2016/02/18 pb_tmz08 – [Raspberry Pi] RaspberryPi 2でCentOS7 ことはじめ
・2017/03/21 MSeeeeN – Raspberry Pi 3 で CentOS 7 を動かす
・2016/09/22 NAZA – raspberry Pi3にcentos7を入れてみた – Qiita
Raspberry Pi 用のSDカードを初期化する方法
Raspberry Pi 3へのCentOS7のインストール 基本編
NetworkManager 使用方法(nmtui編)
・2014/07/12 enakai00 – RHEL7/CentOS7でipコマンドをマスター
・2017/01/22 miyu – net-tools は使われなくなり iproute2 が標準的になるかも
・2016/04/14 k-sh – CnetOS 7 (on Raspberry Pi)でのrpmパッケージビルド環境の構築
・2015/06/28 CentOS 7 で ネットワーク(IPアドレス、ホスト名、ドメイン名など)の設定を行う

 

広告