今回は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は先ほどダウンロードした.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 」を指定する。
その他のオプションなどは自動的に設定されるため、あとは「スタート」をクリックするだけ。
書き込みは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で遠隔操作するためのターミナルをインストールしておく。この手のソフトは他にもたくさんあるので、好きなものを使おう。
Raspberry Pi 4を起動する
Raspberry Pi 4に電源を接続すると自動的に起動される。
起動すると「虹色の画面」が表示される。問題がなければ、数秒で虹色の画面から黒い画面に切り替わり、ログイン画面が表示される。
ここまでで問題があると、虹色の画面で止まったままになってしまう。
起動後の設定手順
起動後の設定手順は以下の通り。最初にRaspberry Pi 4側でIPアドレスを確認したら、あとはPCからSSHで接続し遠隔操作で設定を行っていく。
1.ログインし、IPアドレスを確認
rootのパスワードの初期設定は「centos」となっているので、これでログインする。
- localhost login: root
- パスワードを入力。初期設定は「centos」
ログイン出来たら「ip a」で、Raspberry Pi 4のIPアドレスを確認。
- [root@localhost ~]# ip a
- 1: lo:
mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 - link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
- inet 127.0.0.1/8 scope host lo
- valid_lft forever preferred_lft forever
- inet6 ::1/128 scope host
- valid_lft forever preferred_lft forever
- 2: eth0:
mtu 1500 qdisc mq state UP group default qlen 1000 - link/ether dc:a6:32:1c:b2:ac brd ff:ff:ff:ff:ff:ff
- inet 192.168.11.3/24 brd 192.168.11.255 scope global noprefixroute dynamic eth0
- valid_lft 172495sec preferred_lft 172495sec
- inet6 fe80::cf16:1c42:d589:a84c/64 scope link noprefixroute
- valid_lft forever preferred_lft forever
- 3: wlan0:
mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000 - link/ether 52:3e:c1:38:a8:1c brd ff:ff:ff:ff:ff:ff
- IPアドレスを確認したらログアウト
- [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。
- Last login: Sun Jan 19 13:46:52 2020
- [root@localhost ~]
ログインできるとこのように表示される。
3.rootパスワードの変更
初期設定のままだと危ないため、rootパスワードを変更する。
- [root@localhost ~]# passwd root
- Changing password for user root.
- New password: 新しいパスワードを入力
- Retype new password: 新しいパスワードを再入力
- passwd: all authentication tokens updated successfully.
- [root@localhost ~]#
4.パーティションの拡張
今回は32GBのSDカードにインストールしたはずだが、インストールしたままの状態だと、たった数GBしかパーティションに割り当てられてない。このためパーティションの拡張は必須と言って良いだろう。
「df -H」でディスク容量を確認すると、他に何もインストールしていない状態でも使用量が85%を超えてしまっている。
- [root@localhost ~]# df -H
- Filesystem Size Used Avail Use% Mounted on
- /dev/root 1 .5G 1.2G 221M 85% /
- devtmpfs 2.1G 0 2.1G 0% /dev
- tmpfs 2.1G 18M 2.1G 1% /run
- tmpfs 2.1G 0 2.1G 0% /sys/fs/cgroup
- /dev/mmcblk0p1 300M 54M 247M 18% /boot
- tmpfs 410M 0 410M 0% /run/user/0
「sudo fdisk /dev/mmcblk0」を実行し、まずは「p」を入力し、Enterで現在の状態を確認する。
- [root@localhost ~]# sudo fdisk /dev/mmcblk0
- Welcome to fdisk (util-linux 2.23.2).
- Changes will remain in memory only, until you decide to write them.
- Be careful before using the write command.
- Command (m for help): p
- Disk /dev/mmcblk0: 32.0 GB, 32010928128 bytes, 62521344 sectors
- Units = sectors of 1 * 512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk label type: dos
- Disk identifier: 0x00060b0d
- Device Boot Start End Blocks Id System
- /dev/mmcblk0p1 * 8192 593919 292864 c W95 FAT32(LBA)
- /dev/mmcblk0p2 593920 1593343 499712 82 Linux swap/Solaris
- /dev/mmcblk0p3 1593344 4524031 1465344 83 Linux
ここからパーティション「/dev/mmcblk0p3」を一度、削除してから、領域を拡張した「/dev/mmcblk0p3」を作成する。
削除コマンド「d」を入力しEnter。3番目のパーティションを削除するので「3」を入力しEnter。
- Command (m for help): d
- Partition number (1-3, default 3): 3
- Partition 3 is deleted
コマンド「p」で再度、状態確認。3番目のパーティション「/dev/mmcblk0p3」が消えている。
- Command (m for help): p
- Disk /dev/mmcblk0: 32.0 GB, 32010928128 bytes, 62521344 sectors
- Units = sectors of 1 * 512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk label type: dos
- Disk identifier: 0x00060b0d
- Device Boot Start End Blocks Id System
- /dev/mmcblk0p1 * 8192 593919 292864 c W95 FAT32(LBA)
- /dev/mmcblk0p2 593920 1593343 499712 82 Linux swap/Solaris
ここで2つ目のパーティションのEnd位置を確認しておく。この場合赤字で示した「1593343」である。
よって、3つ目のパーティションのStart位置は+1した「1593344」となる。この後の手順で使用するので確認しておこう。
コマンド「n」で新規パーティションを作成する。
- Command (m for help): n
パーティションタイプはprimaryなので「p」
- Partition type:
- p primary (2 primary, 0 extended, 2 free)
- e extended
- Select (default p): p
3番目のパーティションを作成するので「3」
- Partition number (3,4, default 3): 3
次にパーティションの開始位置を入力する。2つ目のパーティションの終了位置に+1した、「1593344」が3番目のパーティションの開始位置となるので、これを入力。
パーティションの終了位置は何も入力せず、Enter。
- First sector (2048-62521343, default 2048): 1593344
- Last sector, +sectors or +size{K,M,G} (1593344-62521343, default 62521343): (何も入力せずEnter)
- Using default value 62521343
- Partition 3 of type Linux and of size 29.1 GiB is set
容量29.1GBで3番目のパーティションが作成された。
コマンド「p」で確認。
- Command (m for help): p
- Disk /dev/mmcblk0: 32.0 GB, 32010928128 bytes, 62521344 sectors
- Units = sectors of 1 * 512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk label type: dos
- Disk identifier: 0x00060b0d
- Device Boot Start End Blocks Id System
- /dev/mmcblk0p1 * 8192 593919 292864 c W95 FAT32(LBA)
- /dev/mmcblk0p2 593920 1593343 499712 82 Linux swap/Solaris
- /dev/mmcblk0p3 1593344 62521343 30464000 83 Linux
問題なく3番目のパーティション「 /dev/mmcblk0p3 」が作成された。
コマンド「w」でこの内容で書き込む。これ以降はやり直しが効かないため、ここまでの途中の手順でもし間違いがあれば「Ctrl + C」で中止し最初からやり直そう。
- Command (m for help): w
- The partition table has been altered!
- Calling ioctl() to re-read partition table.
- WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
- The kernel still uses the old table. The new table will be used at
- the next reboot or after you run partprobe(8) or kpartx(8)
- Syncing disks.
設定の反映のため、再起動する。
- [root@localhost ~]# reboot
再度、SSHでログインし、「df -H」でディスクの容量を確認。この段階ではまだ容量は変わってない。
- [root@localhost ~]# df -H
- Filesystem Size Used Avail Use% Mounted on
- /dev/root 1 .5G 1.2G 221M 85% /
- devtmpfs 2.1G 0 2.1G 0% /dev
- tmpfs 2.1G 18M 2.1G 1% /run
- tmpfs 2.1G 0 2.1G 0% /sys/fs/cgroup
- /dev/mmcblk0p1 300M 54M 247M 18% /boot
- tmpfs 410M 0 410M 0% /run/user/0
resize2fsでパーティションをリサイズする。
- [root@localhost ~]# sudo resize2fs /dev/mmcblk0p3
- resize2fs 1.42.9 (28-Dec-2013)
- Filesystem at /dev/mmcblk0p3 is mounted on /; on-line resizing required
- old_desc_blocks = 1, new_desc_blocks = 4
- The filesystem on /dev/mmcblk0p3 is now 7616000 blocks long.
再度「df -H」で確認する。容量が増えているのが分かる。
- [root@localhost ~]# df -H
- Filesystem Size Used Avail Use% Mounted on
- /dev/root 31G 1.2G 30G 4% /
- devtmpfs 2.1G 0 2.1G 0% /dev
- tmpfs 2.1G 18M 2.1G 1% /run
- tmpfs 2.1G 0 2.1G 0% /sys/fs/cgroup
- /dev/mmcblk0p1 300M 54M 247M 18% /boot
- tmpfs 410M 0 410M 0% /run/user/0
これで無事に色々インストールできる状態になった。
5.NTPサーバーの設定
初期設定では、海外の時刻で同期しているため、日本時間で同期するように設定していく。
NTPサーバーをインストール
- [root@localhost ~]# yum -y install ntp
設定ファイルを開く。
- [root@localhost ~]# vi /etc/ntp.conf
赤字が追記箇所。海外のNTPサーバの前に「#」を追記しコメントアウトし、日本国内のNTPサーバーを追記。
- # Hosts on local network are less restricted.
- #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
- # 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 ntp.nict.jp iburst
- server ntp1.jst.mfeed.ad.jp iburst
- server ntp2.jst.mfeed.ad.jp iburst
NTPサーバーを起動し、自動起動を有効にする。
- [root@localhost ~]# systemctl start ntpd
- [root@localhost ~]# systemctl enable ntpd
- Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.
- [root@localhost ~]#
firewalldでNTPサーバーの許可を永続化して、リロード。
- [root@localhost ~]# firewall-cmd --add-service=ntp --permanent
- success
- [root@localhost ~]# firewall-cmd --reload
- success
- [root@localhost ~]#
6.システムの最新化
最後に「yum -y update」でシステムを最新の状態にする。
- [root@localhost ~]# yum -y update
ひとまずこれで初期設定は完了。ここからは適宜必要な機能を追加して、ファイルサーバーとして使うのもよし、有線・無線LANルーターにするのもよし、色んな使い方ができる。
今後、このサイトでは有線・無線LANルーター(PPPoE接続/DHCPサーバー/VPNサーバー等)のような形で活用していく方法を解説する予定である。
COMMENTS