Raspberry Pi 4にCentOS7をインストール＆設定

ラズパイ4を購入したので、Raspbianではなく一般的なサーバーとしてよく使われるCentOSを入れてみたいと思います！！

ただし、実用的じゃないので自分はすぐにRaspbianに戻しました(笑)

# 参考にさせて頂いたサイト

[Raspberry Pi 4 で CentOS 7 を動かす](https://hatenablog.com/)
[CentOSにntpサーバを入れて、日本標準時刻に自動的に合わせるためのメモ](https://qiita.com/tsu-nera/items/9be676b04b190e45b281)
[CentOS 7 NTP設定・・・ちょっと待て！？](https://tech.godpress.net/?p=859)

# Raspberry Pi Imagerの準備

こちらは、microSDのフォーマットやOSの書き込みなどを自動で行ってくれるソフトです！

[Raspberry Pi Downloads - Software for the Raspberry Pi](https://www.raspberrypi.org/downloads/)

ここから、任意のOSを選択してダウンロード&インストールをしましょう！
私は、microSDの書き込みをWindowsで行ました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241870/cff63b7d-ef33-3d40-72bf-01fcba503d0e.png)

# ディスクイメージのダウンロード

上記のサイトだと、CentOSをデフォルトでサポートしていないので、下記のリンクからラズパイ4用のCentOS7のディスクイメージをダウンロードしましょう。

[ダウンロード](https://ftp.yz.yamagata-u.ac.jp/pub/linux/centos-altarch/7/isos/armhfp/CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-4-2009-sda.raw.xz)

# Raspberry Pi Imagerを使って、microSDに書き込む

ディスクイメージのダウンロードが終わったら、インストールしたRaspberry Pi Imagerを使って、microSDに書き込みます。

- Operating System：ダウンロードしたディスクイメージ
- SD Card：PCに挿している書き込みたいSDカード

2つ指定すると、「WRITE」が押せるようになるので押して書き込みましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241870/397d8851-29e4-a0bb-11cc-1658d0f1e2c0.png)

しばらく待って、この画面がでたら書き込みが完了！！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241870/5f70c034-7366-a861-e094-0a0f5b16e818.png)

# ラズパイに有線LANを挿して、SSHで接続する

書き込みが終了したら、書き込んだSDカードをラズパイに挿して起動しましょう！
起動したら、デフォルトの以下のユーザーでログインして、IPアドレスを確認します。

ユーザ名：root
パスワード：centos

ログインできたら、以下のコマンドを打って、IPアドレスを確認しましょう ！

```shell
ip a | grep 192
```
そうすると、192から始まるIPアドレスが取得できます。

```shell
[root@localhost ~]# ip a | grep 192
    inet 192.168.0.2/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
```
ここから分かるとおり、このラズパイのIPアドレスは「192.168.0.2」ということが分かりましたので、別のPC(今回はmac)からSSHでログインします。
(Windowsの方はTera TermというソフトをDLをしてそこからログインします。)

まずは、ターミナルで以下のコマンドをうち、ラズパイでログインした通りにここでもログインしましょう。

```shell
ssh root@調べたラズパイのIPアドレス
```
私の場合だと、以下のようなコマンドになります。

```shell
ssh root@192.168.0.2
```
そしたら、このようになるのでyesと入力します。

```shell
The authenticity of host '192.168.0.2 (192.168.0.2)' can't be established.
ECDSA key fingerprint is SHA256:mOsYHnXBZPXZIAs0bzk7eOv3hZ4Rt2mJKfzlZiylR3o.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
```
次は、パスワードが求められるので「centos」と入力してEnterを押します。

```shell
Warning: Permanently added '192.168.0.2' (ECDSA) to the list of known hosts.
root@192.168.0.2's password:
```
このような状態になれば、ログインは成功です！！

```shell
Last login: Tue Apr 21 17:23:37 2020 from 192.168.0.7
[root@localhost ~]#
```
ここまでをまとめると、このような感じになるはずです

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241870/625f65aa-f5c1-e23e-8ab8-74de815e35f2.png)

# rootのパスワードを変更する

初期状態だと、誰でもログインできてしまうので以下のコマンドを打って、任意のパスワードへ変更しましょう。

```shell
passwd root
```
すると、新しいパスワードの入力と確認が求められるので2回入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241870/4f14cb0a-cc0d-3deb-08ac-3c167d406556.png)

「passwd: すべての認証トークンが正しく更新できました。」
と表示されたら完了です！！！

# パーティションの拡張を行う

まず、以下のコマンドを打ってください。

```shell
df -h
```
そうするとこのような結果が表示されると思います。

```shell
[root@localhost ~]# df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/root        1.4G  1.2G  211M   85% /
devtmpfs         1.9G     0  1.9G    0% /dev
tmpfs            2.0G     0  2.0G    0% /dev/shm
tmpfs            2.0G   17M  1.9G    1% /run
tmpfs            2.0G     0  2.0G    0% /sys/fs/cgroup
/dev/mmcblk0p1   286M   52M  235M   18% /boot
tmpfs            391M     0  391M    0% /run/user/0
```
/def/rootを見てみると、microSDは32GBのものを使用しているのに、うまく使いきれていません…

なので、以下のコマンドを入力して拡張しましょう！

```shell
/usr/bin/rootfs-expand
```
そうすると、最後にDone.と表示されると成功です

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241870/9951a834-80a8-784a-7fcd-b2d5e76329c7.png)

なので、もう一度df -hと入力すると拡張されていることが分かります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241870/133a6f05-7205-426e-b9fa-b6af697f65af.png)

# vimエディタのインストール

以下のコマンドを入力して、vimというエディタをインストールしましょう。

```shell
sudo yum install vim -y
```

# NTPサーバーを入れて日本の標準時に合わせる

/etc/chrony.confを編集して、NTPサーバーの指定しましょう！
デフォルトでは以下のようになっているので

```conf:/etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
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 から始まる行が、海外の時刻を提供しているサーバーらしいので、全部コメントアウトして、以下の行を追加します。

```conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
### ↓ここからコメントアウト
# 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
######## ↑ここまでコメントアウト
 
### ↓ここから追加
# 日本標準時を提供しているNTPサーバー(stratum 1)
server ntp.nict.jp iburst
# 上記サーバーと直接同期しているNTPサーバー(stratum 2)
server ntp.jst.mfeed.ad.jp iburst
####### ↑ここまで追加
```

今回は、時刻補正のためのNTPなので、以下の行を追加してサーバーとしては使わないようにする。

```shell
port 0
```
海外のNTPサーバーと大幅にずれていると設定出来ないらしいので、以下のコマンドで手動設定しましょう。

```shell
chronyc makestep
```
以下のコマンドを入力して、NTPサーバーの再起動と起動時に自動で実行するようにします。

```shell
systemctl restart chronyd
systemctl enable chronyd
```

dateコマンドを入力して見ます。

```shell
2020年  4月 23日 木曜日 16:23:00 UTC
```

JSTになってない！！！！

ちゃんとJSTになって時刻が日本時間になっているかたは、以上です、お疲れ様でした。

なので、timedatectlコマンド入力して見ます。

```shell
      Local time: 水 2020-04-22 16:23:51 UTC
  Universal time: 水 2020-04-22 16:23:51 UTC
        RTC time: n/a
       Time zone: UTC (UTC, +0000)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
```
！？！？！？！？
そもそも、タイムゾーンがUTCだったのでいくらやってもUTC時刻に補正されちゃうんですね….😭😭😭

なので、以下のコマンドでタイムゾーンを東京に変更して、もう一度NTPサーバーの再起動を行い、dateで時間を確認します。

```shell
timedatectl set-timezone Asia/Tokyo
systemctl restart chronyd
date
```
すると….

```shell
2020年  4月 23日 木曜日 01:24:14 JST
```
ちゃんとJSTの時刻が設定されました！！！！

ちなみに、ラズパイを再起動して確認してみても

```shell
[root@localhost ~]# date
2020年  4月 23日 木曜日 01:39:05 JST
```
うまく設定できてることが確認できました🎊🎊🎊