なたで日記

いろいろな思ったこと書きますヽ(^▽^ゞ)

Raspberry Pi 3 に CentOS 7

time 2017/08/17

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で行えるようなサードパーティのパッケージが用意されていない場合がありますので注意してください。


起動まで

パーティションが存在するSDカードの初期化

1. コマンドプロンプトで「diskpart」を実行
2. 「list disk」で初期化したいSDカードのディスク番号を調べる
3. 「select disk 1」でディスク番号1を選択する
4. 「list partition」でパーティションを確認し選択しているのが正しいことを確認
5. 「clean」で内部を初期化

SDカードをフォーマットする

1. 「SD/SDHC/SDXC用SDメモリカードフォーマッター 5.0」を利用

CentOSのRaspbeyPi3用のimgファイルを準備

1. 「CentOS-Userland-7-armv7hl-Minimal-1611-test-RaspberryPi3.img.xz」をダウンロードして「7zip」などで展開
2. 「Win32DiskImager」を利用して、imgファイルをSDカードに入れる
3. これを差し込めば一応利用可能になる

起動後のネットワーク設定とい設定まで

SSHでログインできるまでの基礎設定

1. HDMI でディスプレイに接続して、USBキーボードを接続する
2. 次のコマンドをうち日本語キーボード入力を有効化する

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

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

timedetectl set-timezone Asia/Tokyo

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

/usr/local/bin/rootfs-expand

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

ifconfig

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

passwd

外部にネットワークで接続できるようにする(CentOS7 から後述の nmtui を使うと良い)

1. 「/etc/sysconfig/network」がないので、「touch」で新規作成する※後述
2. 中はネットワーク接続と、デフォルトゲートウェイの設定をする

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

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"

4. NetworkManagerを止める

systemctl stop NetworkManager

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

systemctl daemon-reload
systemctl restart network

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 というのもあります。

yum コマンドを使用できるようにする

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

2. yum でソフトの更新を行う

yum clean all
yum update

※数時間かかる場合があります

make コマンドやコンパイルを行えるようにする

1. 下記のコマンドをうってインストールします。

sudo yum install make gcc gcc-c++

bashのタブキーの補完を強化する

1. 下記のコマンドをうってインストールします。

sudo yum install bash-completion

その他の基本設定や便利にする

pi@centos に変更してみる

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

useradd pi
passwd pi

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

hostname centos

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

visudo

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. pi ユーザーで ssh ログインが出来るようになり、pi で sudo も利用が行えます。

その他、便利なアプリをインストールしてみる

1. nano のインストール

sudo yum install nano

ファイルサーバー機能を有効化する

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

yum install samba

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

smbpasswd -a pi
pdbedit -a pi

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

vi /etc/samba/smb.conf

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"

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

pdbedit --list

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

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アドレス、ホスト名、ドメイン名など)の設定を行う

コメントを残す




プロフィール

なたで

なたで

明るくて楽しいことが好きです!モノづくりや旅が趣味です!

RSS フィード RSS feed GitHub GitHub Twitter Twitter YouTube YouTube



sponsored link

タイムライン