今回はRaspberry Pi 4 Model BにCentOS7をインストールする方法と、インストール後の初期設定の方法について解説していく。

CentOSのイメージのダウンロード

OSを配布しているwebサイトから「CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-4-1908-sda.raw.xz 」という名前のファイルをダウンロードする。

Index of /pub/linux/centos-altarch/7/isos/armhfp | 山形大学 工学部 学術情報基盤センター

「Minimal-4」の「-4」がついているのがRaspberry Pi 4用。その他のイメージは Raspberry Pi 4 では動作しないため、注意が必要だ。

Rufusのダウンロード

次にCentOSのイメージをmicroSDに書き込むための「Rufus(ルーファス)」をダウンロードする。インストールは不要で、実行するだけ利用できる。

Rufusのダウンロードページ

Rufusは先ほどダウンロードした.xz形式のイメージを解凍せずに、microSDに書き込むことができるのが特徴だ。

他の日本語の記事をでは「DD for Windows」を使っているものが多いが、DD for Windowsでは 、.xz形式のものを一度7-Zipで解凍してから使用する必要があるため、私はRufusをおすすめする。

イメージの書き込み

CentOSのイメージをmicroSDに書き込む。今回は32GBのものを使用する。

まずはrufus-3.8.exeを実行する。

書き込むSDカードを選択して、「選択」をクリックし、先ほどダウンロードした「CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-4-1908-sda.raw.xz 」を指定する。

その他のオプションなどは自動的に設定されるため、あとは「スタート」をクリックするだけ。

書き込み中のrufus

書き込みはSDカードの書き込み速度にもよるが、1分程度で終わる。

書き込みが完了したらステータスが「準備完了」となるので、「閉じる」をクリックして、PCからSDカードを取り外す。

起動前に準備すること

Raspberry Piに電源ボタン等はないため、電源コードを接続すると同時に起動される。このためmicroSDをスロットに差し込んで、周りの配線の接続も済ませてから電源に接続するようにしよう。

今回は画像のように、PCとRaspberry Pi 4を市販のWi-Fiルーターに接続して、PCからSSHで接続し、遠隔操作でPC側から設定を行っていく。

このためRaspberry Pi 4の本体自体にモニターやキーボードなどを接続するのは最初の起動のみとなる。

Raspberry Pi 4 とWi-FiルーターはLANケーブルで有線接続する。遠隔操作するPCは同じWi-Fiルーターに繋がれば無線・有線どちらでも構わない。

今回起動前にRaspberry Pi4に接続するのは以下の4つ

  • イメージを書き込んだmicroSD
  • ディスプレイ(HDMIで接続)
  • USBキーボード
  • LANケーブル(Wi-Fiルータと有線接続)

Tera Termのインストール

起動前最後の準備。PCからRaspberry Pi 4をSSHで遠隔操作するためのターミナルをインストールしておく。この手のソフトは他にもたくさんあるので、好きなものを使おう。

「Tera Term」定番のターミナルエミュレーター

Raspberry Pi 4を起動する

Raspberry Pi 4に電源を接続すると自動的に起動される。

起動すると「虹色の画面」が表示される。問題がなければ、数秒で虹色の画面から黒い画面に切り替わり、ログイン画面が表示される。

ここまでで問題があると、虹色の画面で止まったままになってしまう。


起動後の設定手順

起動後の設定手順は以下の通り。最初にRaspberry Pi 4側でIPアドレスを確認したら、あとはPCからSSHで接続し遠隔操作で設定を行っていく。

1.ログインし、IPアドレスを確認

rootのパスワードの初期設定は「centos」となっているので、これでログインする。

  1. localhost login: root
  2. パスワードを入力。初期設定は「centos」

ログイン出来たら「ip a」で、Raspberry Pi 4のIPアドレスを確認。

  1. [root@localhost ~]# ip a
  2. 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  3. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  4. inet 127.0.0.1/8 scope host lo
  5.    valid_lft forever preferred_lft forever
  6. inet6 ::1/128 scope host
  7.    valid_lft forever preferred_lft forever
  8. 2: eth0: mtu 1500 qdisc mq state UP group default qlen 1000
  9. link/ether dc:a6:32:1c:b2:ac brd ff:ff:ff:ff:ff:ff
  10. inet 192.168.11.3/24 brd 192.168.11.255 scope global noprefixroute dynamic eth0
  11.    valid_lft 172495sec preferred_lft 172495sec
  12. inet6 fe80::cf16:1c42:d589:a84c/64 scope link noprefixroute
  13.    valid_lft forever preferred_lft forever
  14. 3: wlan0: mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
  15. link/ether 52:3e:c1:38:a8:1c brd ff:ff:ff:ff:ff:ff
  16. IPアドレスを確認したらログアウト
  17. [root@localhost ~]#exit

デバイス名「eth0」がRaspberry Pi 4のLANポート。赤字の「192.168.11.3」がIPアドレスになる。

IPアドレスを確認したら「exit」でログアウトする。

2.PCからSSHで接続

ここからはすべてPCからの遠隔操作になる。Raspberry Pi 4に接続しているディスプレイ、USBキーボードは不要なので、取り外してよい。

TeraTermを起動する。

先ほど調べたRaspberry Pi 4のIPアドレスを入力、ポートは22番を指定し、OKをクリック。

画像の通りチェックを入れ、続行。

ユーザー名とパスフレーズを入力しOK。

  1. Last login: Sun Jan 19 13:46:52 2020
  2. [root@localhost ~]

ログインできるとこのように表示される。

3.rootパスワードの変更

初期設定のままだと危ないため、rootパスワードを変更する。

  1. [root@localhost ~]# passwd root
  2. Changing password for user root.
  3. New password: 新しいパスワードを入力
  4. Retype new password: 新しいパスワードを再入力
  5. passwd: all authentication tokens updated successfully.
  6. [root@localhost ~]#

4.パーティションの拡張

今回は32GBのSDカードにインストールしたはずだが、インストールしたままの状態だと、たった数GBしかパーティションに割り当てられてない。このためパーティションの拡張は必須と言って良いだろう。

「df -H」でディスク容量を確認すると、他に何もインストールしていない状態でも使用量が85%を超えてしまっている。

  1. [root@localhost ~]# df -H
  2. Filesystem   Size  Used  Avail  Use%   Mounted on
  3. /dev/root   1 .5G   1.2G  221M  85%    /
  4. devtmpfs    2.1G   0   2.1G   0%   /dev
  5. tmpfs      2.1G   18M  2.1G   1%   /run
  6. tmpfs      2.1G   0   2.1G   0%   /sys/fs/cgroup
  7. /dev/mmcblk0p1 300M  54M  247M   18%   /boot
  8. tmpfs      410M   0   410M   0%   /run/user/0

「sudo fdisk /dev/mmcblk0」を実行し、まずは「p」を入力し、Enterで現在の状態を確認する。

  1. [root@localhost ~]# sudo fdisk /dev/mmcblk0
  2. Welcome to fdisk (util-linux 2.23.2).
  3. Changes will remain in memory only, until you decide to write them.
  4. Be careful before using the write command.
  5. Command (m for help): p
  6. Disk /dev/mmcblk0: 32.0 GB, 32010928128 bytes, 62521344 sectors
  7. Units = sectors of 1 * 512 = 512 bytes
  8. Sector size (logical/physical): 512 bytes / 512 bytes
  9. I/O size (minimum/optimal): 512 bytes / 512 bytes
  10. Disk label type: dos
  11. Disk identifier: 0x00060b0d
  12. Device Boot    Start  End   Blocks Id System
  13. /dev/mmcblk0p1 * 8192 593919  292864 c  W95 FAT32(LBA)
  14. /dev/mmcblk0p2  593920 1593343 499712 82 Linux swap/Solaris
  15. /dev/mmcblk0p3 1593344 4524031 1465344 83 Linux

ここからパーティション「/dev/mmcblk0p3」を一度、削除してから、領域を拡張した「/dev/mmcblk0p3」を作成する。

削除コマンド「d」を入力しEnter。3番目のパーティションを削除するので「3」を入力しEnter。

  1. Command (m for help): d
  2. Partition number (1-3, default 3): 3
  3. Partition 3 is deleted

コマンド「p」で再度、状態確認。3番目のパーティション「/dev/mmcblk0p3」が消えている。

  1. Command (m for help): p
  2. Disk /dev/mmcblk0: 32.0 GB, 32010928128 bytes, 62521344 sectors
  3. Units = sectors of 1 * 512 = 512 bytes
  4. Sector size (logical/physical): 512 bytes / 512 bytes
  5. I/O size (minimum/optimal): 512 bytes / 512 bytes
  6. Disk label type: dos
  7. Disk identifier: 0x00060b0d
  8. Device Boot    Start  End   Blocks Id System
  9. /dev/mmcblk0p1 * 8192 593919  292864 c  W95 FAT32(LBA)
  10. /dev/mmcblk0p2  593920 1593343 499712 82 Linux swap/Solaris

ここで2つ目のパーティションのEnd位置を確認しておく。この場合赤字で示した「1593343」である。

よって、3つ目のパーティションのStart位置は+1した「1593344」となる。この後の手順で使用するので確認しておこう。

コマンド「n」で新規パーティションを作成する。

  1. Command (m for help): n

パーティションタイプはprimaryなので「p」

  1. Partition type:
  2.  p primary (2 primary, 0 extended, 2 free)
  3.  e extended
  4. Select (default p): p

3番目のパーティションを作成するので「3」

  1. Partition number (3,4, default 3): 3

次にパーティションの開始位置を入力する。2つ目のパーティションの終了位置に+1した、「1593344」が3番目のパーティションの開始位置となるので、これを入力。

パーティションの終了位置は何も入力せず、Enter。

  1. First sector (2048-62521343, default 2048): 1593344
  2. Last sector, +sectors or +size{K,M,G} (1593344-62521343, default 62521343): (何も入力せずEnter)
  3. Using default value 62521343
  4. Partition 3 of type Linux and of size 29.1 GiB is set

容量29.1GBで3番目のパーティションが作成された。

コマンド「p」で確認。

  1. Command (m for help): p
  2. Disk /dev/mmcblk0: 32.0 GB, 32010928128 bytes, 62521344 sectors
  3. Units = sectors of 1 * 512 = 512 bytes
  4. Sector size (logical/physical): 512 bytes / 512 bytes
  5. I/O size (minimum/optimal): 512 bytes / 512 bytes
  6. Disk label type: dos
  7. Disk identifier: 0x00060b0d
  8. Device Boot    Start  End   Blocks Id System
  9. /dev/mmcblk0p1 * 8192 593919  292864 c  W95 FAT32(LBA)
  10. /dev/mmcblk0p2  593920 1593343 499712 82 Linux swap/Solaris
  11. /dev/mmcblk0p3 1593344 62521343 30464000 83 Linux

問題なく3番目のパーティション「 /dev/mmcblk0p3 」が作成された。

コマンド「w」でこの内容で書き込む。これ以降はやり直しが効かないため、ここまでの途中の手順でもし間違いがあれば「Ctrl + C」で中止し最初からやり直そう。

  1. Command (m for help): w
  2. The partition table has been altered!
  3. Calling ioctl() to re-read partition table.
  4. WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
  5. The kernel still uses the old table. The new table will be used at
  6. the next reboot or after you run partprobe(8) or kpartx(8)
  7. Syncing disks.

設定の反映のため、再起動する。

  1. [root@localhost ~]# reboot

再度、SSHでログインし、「df -H」でディスクの容量を確認。この段階ではまだ容量は変わってない。

  1. [root@localhost ~]# df -H
  2. Filesystem   Size  Used  Avail  Use%   Mounted on
  3. /dev/root   1 .5G   1.2G  221M  85%    /
  4. devtmpfs    2.1G   0   2.1G   0%   /dev
  5. tmpfs      2.1G   18M  2.1G   1%   /run
  6. tmpfs      2.1G   0   2.1G   0%   /sys/fs/cgroup
  7. /dev/mmcblk0p1 300M  54M  247M   18%   /boot
  8. tmpfs      410M   0   410M   0%   /run/user/0

resize2fsでパーティションをリサイズする。

  1. [root@localhost ~]# sudo resize2fs /dev/mmcblk0p3
  2. resize2fs 1.42.9 (28-Dec-2013)
  3. Filesystem at /dev/mmcblk0p3 is mounted on /; on-line resizing required
  4. old_desc_blocks = 1, new_desc_blocks = 4
  5. The filesystem on /dev/mmcblk0p3 is now 7616000 blocks long.

再度「df -H」で確認する。容量が増えているのが分かる。

  1. [root@localhost ~]# df -H
  2. Filesystem   Size  Used  Avail  Use%   Mounted on
  3. /dev/root    31G   1.2G  30G   4%   /
  4. devtmpfs    2.1G   0   2.1G   0%   /dev
  5. tmpfs      2.1G   18M  2.1G   1%   /run
  6. tmpfs      2.1G   0   2.1G   0%   /sys/fs/cgroup
  7. /dev/mmcblk0p1 300M  54M  247M   18%   /boot
  8. tmpfs      410M   0   410M   0%   /run/user/0

これで無事に色々インストールできる状態になった。

5.NTPサーバーの設定

初期設定では、海外の時刻で同期しているため、日本時間で同期するように設定していく。

NTPサーバーをインストール

  1. [root@localhost ~]# yum -y install ntp

設定ファイルを開く。

  1. [root@localhost ~]# vi /etc/ntp.conf

赤字が追記箇所。海外のNTPサーバの前に「#」を追記しコメントアウトし、日本国内のNTPサーバーを追記。

  1. # Hosts on local network are less restricted.
  2. #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
  3. # Use public servers from the pool.ntp.org project.
  4. # Please consider joining the pool (http://www.pool.ntp.org/join.html).
  5. #server 0.centos.pool.ntp.org iburst
  6. #server 1.centos.pool.ntp.org iburst
  7. #server 2.centos.pool.ntp.org iburst
  8. #server 3.centos.pool.ntp.org iburst
  9. server ntp.nict.jp iburst
  10. server ntp1.jst.mfeed.ad.jp iburst
  11. server ntp2.jst.mfeed.ad.jp iburst

NTPサーバーを起動し、自動起動を有効にする。

  1. [root@localhost ~]# systemctl start ntpd
  2. [root@localhost ~]# systemctl enable ntpd
  3. Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.
  4. [root@localhost ~]#

firewalldでNTPサーバーの許可を永続化して、リロード。

  1. [root@localhost ~]# firewall-cmd --add-service=ntp --permanent
  2. success
  3. [root@localhost ~]# firewall-cmd --reload
  4. success
  5. [root@localhost ~]#

6.システムの最新化

最後に「yum -y update」でシステムを最新の状態にする。

  1. [root@localhost ~]# yum -y update

ひとまずこれで初期設定は完了。ここからは適宜必要な機能を追加して、ファイルサーバーとして使うのもよし、有線・無線LANルーターにするのもよし、色んな使い方ができる。

今後、このサイトでは有線・無線LANルーター(PPPoE接続/DHCPサーバー/VPNサーバー等)のような形で活用していく方法を解説する予定である。

参考文献

Raspberry Pi のSDカードのパーティションを拡張する | しびら

CentOS 7 : NTPサーバーの設定(NTPd) : Server World