Raspberry Pi OS NTP 設定

2023/12/14 13:58 OS別::Linuxその他::技術情報
Raspberry Pi を利用したサーバの、初期に行うべき手順で NTP を設定します。
対象は、Raspbian GNU/Linux 12 (bookworm) になります。

パッケージ

インストール

パッケージのインストール状況を確認して、必要であればインストールします。
$ sudo apt list ntp ntp-doc ntpdate dnsutils
$ sudo apt install ntp ntp-doc ntpdate dnsutils

名前解決確認

名前解決ができることを確認します。
$ dig ntp.nict.jp +short

NTP 設定

設定差分の読み替え設定

$ . /etc/os-release
$ pNtpConfDir=""
$ case ${VERSION_ID} in
>   12 ) pNtpConf="/etc/ntpsec/ntp.conf" ;;
>    * ) pNtpConf="/etc/ntp.conf" ;;
> esac

設定ファイル修正

$ sudo cp -p ${pNtpConf}{,$(date +%Y%m%d)}
$ sudo diff ${pNtpConf}{,$(date +%Y%m%d)}
$ sudo vi ${pNtpConf}
---------------------------------------------------------
(pool をコメントアウトして、serverに ntp.nict.jp を指定する)
---------------------------------------------------------
$ sudo diff ${pNtpConf}{,$(date +%Y%m%d)}
23,27c23,27
< #pool 0.debian.pool.ntp.org iburst
< #pool 1.debian.pool.ntp.org iburst
< #pool 2.debian.pool.ntp.org iburst
< #pool 3.debian.pool.ntp.org iburst
< server ntp.jimba.jp iburst
---
> pool 0.debian.pool.ntp.org iburst
> pool 1.debian.pool.ntp.org iburst
> pool 2.debian.pool.ntp.org iburst
> pool 3.debian.pool.ntp.org iburst
>
39c39
< #restrict -6 default kod notrap nomodify nopeer noquery limited
---
> restrict -6 default kod notrap nomodify nopeer noquery limited
43c43
< #restrict ::1
---
> restrict ::1

設定の反映

$ sudo systemctl status ntp
$ sudo systemctl stop ntp
$ sudo ntpdate ntp.nict.jp
$ sudo systemctl start ntp
$ sudo systemctl status ntp
もし status 確認で次のようなエラーが出力されていたら、ディレクトリを作成する。
11月 05 11:01:02 rasp012 ntpd[1385]: statistics directory /var/log/ntpsec/ does not exist or is unwriteable, error No such fi>
$ grep ntp /etc/passwd
ntpsec:x:112:122::/nonexistent:/usr/sbin/nologin
$ sudo mkdir /var/log/ntpsec
$ sudo chown 112:122 /var/log/ntpsec
$ ls -ld /var/log/ntpsec
drwxr-xr-x 2 ntpsec ntpsec 4096 11月  5 11:02 /var/log/ntpsec
$ sudo systemctl status ntp
$ sudo systemctl restart ntp
$ sudo systemctl status ntp
$ ls -l /var/log/ntpsec

設定反映確認

$ ntpq -p
     remote                                   refid      st t when poll reach   delay   offset   jitter
=======================================================================================================
+ntp-a3.nict.go.jp                       .NICT.           1 u   42   64  377   7.1691 9051.364   1.0737
ntp は、ホスト名に * が付いているサーバに同期している。
また、IPアドレスで確認したい場合は、オプションに -n を追加して ntpq -np 等とする。

その他

NTP サーバとして利用するなら追加設定が必要なので、別途 NTP サーバとしての設定を行う。
例えば、次のような認証を行う。
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

Raspberry Pi OS IPv4 静的設定

2023/12/14 11:25 OS別::Linuxその他::技術情報
Raspberry Pi を利用したサーバの、初期に行うべき手順で IPv4 アドレスを固定します。
対象は、Raspbian GNU/Linux 12 (bookworm) になります。


IPv6 を有効化していると、ホームルータの NAT に関係なく、インターネットと直接接続できるようになります。
セキュリティ的に設定が面倒なのと、まだ IPv4 が中心なので IPv6 無効化と、静的 IP アドレス設定を行います。

事前準備

IPv6 設定 (無効化)

/etc/sysctl.conf に IPv6 の利用を停止する設定を追記します。
$ sudo cp -p /etc/sysctl.conf{,_$(date +%Y%m%d)}
$ sudo diff /etc/sysctl.conf{,_$(date +%Y%m%d)}
$ sudo vi /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
$ sudo diff /etc/sysctl.conf{,_$(date +%Y%m%d)}
61,62d60
< net.ipv6.conf.all.disable_ipv6 = 1
< net.ipv6.conf.default.disable_ipv6 = 1
$ sudo sysctl -p
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
$ ip a

IPv4 設定

ネットワーク設定方法確認

対象のバージョンを確認します。
Raspberry Pi OS が bookworm の場合は、NetworkManager を設定します。
【参考】ネットワーク設定パッケージ
Debian 系ネットワーク設定備考
12bookwormNetworkManager
11bullseyedhcpcd
これは 11 から 12 への変更点のひとつです。
$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 12 (bookworm)"
NAME="Raspbian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

IPv4 アドレス設定(NetworkManager 版)

ここでは、Raspberry pi OS 12 (bookworm) 以降NetworkManager を利用した IP アドレスの設定を行います。
ネットワーク設定の確認
接続情報確認
まずは、DEVICE を確認します。
$ nmcli con show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  0f3c983a-4e89-39f5-b433-aa43b0088c28  ethernet  eth0
$ nmcli device status
DEVICE         TYPE      STATE                   CONNECTION
eth0           ethernet  connected               Wired connection 1
lo             loopback  connected (externally)  lo
wlan0          wifi      disconnected            --
p2p-dev-wlan0  wifi-p2p  disconnected            --
NAME が 'Wired connection 1' のものが eth0 となっています。
デバイス情報確認
次に、デバイス毎の詳細情報を、ふむふむと確認しておきます。
$ nmcli device show
GENERAL.DEVICE:                         eth0
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         B8:27:EB:27:55:9C
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     Wired connection 1
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         192.168.1.198/24
IP4.GATEWAY:                            192.168.1.1
IP4.ROUTE[1]:                           dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]:                           dst = 0.0.0.0/0, nh = 192.168.1.1, mt = 100
IP4.DNS[1]:                             192.168.1.1
IP4.SEARCHES[1]:                        flets-east.jp
IP4.SEARCHES[2]:                        iptvf.jp
IP6.GATEWAY:                            --
IP6.DNS[1]:                             2404:1a8:7f01:b::3
IP6.DNS[2]:                             2404:1a8:7f01:a::3
IP6.SEARCHES[1]:                        flets-east.jp
IP6.SEARCHES[2]:                        iptvf.jp

GENERAL.DEVICE:                         lo
GENERAL.TYPE:                           loopback
GENERAL.HWADDR:                         00:00:00:00:00:00
GENERAL.MTU:                            65536
GENERAL.STATE:                          100 (connected (externally))
GENERAL.CONNECTION:                     lo
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
IP4.ADDRESS[1]:                         127.0.0.1/8
IP4.GATEWAY:                            --
IP6.GATEWAY:                            --

GENERAL.DEVICE:                         wlan0
GENERAL.TYPE:                           wifi
GENERAL.HWADDR:                         B8:27:EB:72:00:C9
GENERAL.MTU:                            1500
GENERAL.STATE:                          30 (disconnected)
GENERAL.CONNECTION:                     --
GENERAL.CON-PATH:                       --
IP4.GATEWAY:                            --
IP6.GATEWAY:                            --

GENERAL.DEVICE:                         p2p-dev-wlan0
GENERAL.TYPE:                           wifi-p2p
GENERAL.HWADDR:                         (unknown)
GENERAL.MTU:                            0
GENERAL.STATE:                          30 (disconnected)
GENERAL.CONNECTION:                     --
GENERAL.CON-PATH:                       --
設定変更
接続名変更
これは行わなくてもいいのですが、毎回クォートで括らなければならない接続名(NAME)を 'Wired connection 1' から svnet へ変更しておきます。
逆に言うと、毎回クォートで括れば、設定変更の必要はありません。
$ sudo nmcli con mod 'Wired connection 1' connection.id svnet
$ nmcli con show
ネットワーク設定変更
次に、IP アドレスやルーティングの設定を変更します。

IP アドレスや設定情報は、適当に読み替えてください。
$ sudo nmcli con mod svnet ipv4.address "192.168.10.100/24"
$ sudo nmcli con mod svnet ipv4.gateway "192.168.10.1"
$ sudo nmcli con mod svnet ipv4.dns "192.168.10.1 192.168.10.10"
$ sudo nmcli con mod svnet ipv4.dns-priority 10 ipv6.dns-priority 20
$ sudo nmcli con mod svnet ipv4.dns-search "example.jp"
$ sudo nmcli con mod svnet ipv4.routes "192.168.10.0/24 192.168.10.1"
$ sudo nmcli con mod svnet ipv4.method "manual"
$ sudo nmcli con mod svnet ipv6.method "disabled"
$ sudo nmcli con up svnet
途中、IPv6 は無効にしているのに指定があるのはなぜかというと、IPv6 アドレスに対する名前解決の優先度が下げるためです。
いま接続しているセッションについては接続が切れないようですが、今後は新しい IP アドレスで接続する必要があります。
設定確認
ネットワーク設定を確認する。
$ ip a
$ nmcli connection show
設定反映確認
[反映確認 1] OS 再起動
ネットワーク設定が保存されていることを確認するにはいくつか方法がありますが、すべて一括で反映するには OS を再起動します。
$ sudo reboot
起動後は、設定した IP アドレスに対して Tera Term 等で接続してください。
[反映確認 2] サービス再起動
ネットワーク設定だけを反映したい場合は、対象サービスを再起動します。
$ systemctl status network.service
$ systemctl restart network.service
$ systemctl status network.service
後は、設定した IP アドレスに対して Tera Term 等で接続してください。

設定確認

IP アドレス
$ ip a
/etc/resolv.conf
$ cat /etc/resolv.conf
# Generated by resolvconf
domain example.jp
nameserver 192.168.10.10
nameserver 192.168.10.1
$ ping 192.168.10.1 -c 3

Raspberry Pi OS 実行環境整備

2024/04/30 11:34 OS別::Linuxその他::技術情報
正直なところ、これは個人の好みなのですけれども。
実行環境を、使いやすいように整備します。

テキストエディタ (Vim)

エディタ変更(1)

デフォルトでは nano が選択されているので、これを vim に変更します。
update-alternatives コマンドで、以下のように vim の番号を入力します。
$ sudo update-alternatives --config editor
alternative editor (/usr/bin/editor を提供) には 3 個の選択肢があります。

  選択肢    パス             優先度  状態
------------------------------------------------------------
* 0            /bin/nano           40        自動モード
  1            /bin/ed            -100       手動モード
  2            /bin/nano           40        手動モード
  3            /usr/bin/vim.tiny   15        手動モード

現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 3
update-alternatives: /usr/bin/editor (editor) を提供するためにマニュアルモードで /usr/bin/vim.tiny を使います
$

エディタ変更(2)

Debian 系の人は vi がよっぽど嫌いなのか、設定項目としてまだ不足するのでこちらも修正します。
$ select-editor

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.tiny
  3. /bin/ed

Choose 1-3 [1]: 2
変更されたかどうかは、以下のリンクを確認します。
$ ls -l /usr/bin/editor
lrwxrwxrwx 1 root root 24  2月 14 00:54 /usr/bin/editor -> /etc/alternatives/editor

vimrc 作成

行の表示等、vi のデフォルト動作を変更したいので作成します。
$ vi --version | grep "vimrc file"
   system vimrc file: "/etc/vim/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
$ cd ~
$ mkdir .vim
$ vi .vim/vimrc
$ cat .vim/vimrc
set nu

.bash_aliases 作成

.bashrc や .bash_profile に追記してもいいのですが、ファイルを置くだけで使えるので利用します。
$ cd ~
$ vi .bash_aliases
$ cat .bash_aliases
# some more ls aliases
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'

Raspberry Pi OS raspi-config

2023/12/14 22:11 OS別::Linuxその他::技術情報
Raspberry Pi を利用したサーバの、初期に行うべき手順で raspi-config を実行します。
対象は、Raspbian GNU/Linux 12 (bookworm) になります。


raspi-config

以前までの Raspberry Pi OS では raspi-config の nonint モードで全て設定できたのですが、Raspbian GNU/Linux 12 (bookworm) では、変更されたパッケージの影響等で以前のバージョンから利用できなくなっている nonint モードがあるので CUI で一通り設定します。
No項目説明
1System OptionsConfigure system settings
2Display OptionsConfigure display settings
3Interface OptionsConfigure connections to peripherals
4Performance OptionsConfigure performance settings
5Localisation OptionsConfigure language and regional settings
6Advanced OptionsConfigure advanced settings
8UpdateUpdate this tool to the latest version
9About raspi-configInformation about this configuration tool
7 が飛んでいますが、表示上も存在しません。

1 System Options

No項目説明
S1Wireless LANEnter SSID and passphrase
S2AudioSelect audio out through HDMI or 3.5mm jack
S3PasswordChange password for the 'jimba' user
S4HostnameSet name for this computer on a network
S5Boot / Auto LoginSelect boot into desktop or to command line
S6Splash ScreenChoose graphical splash screen or text boot
S7Power LEDSet behaviour of power LED
S8BrowserChoose default web browser
サーバー用途として設定するので、RPi OS インストール の通りに設定している場合は、上記項目 S5 のみが対象になると思います。
S5 Boot / Auto Login
ここでは B1 を選択して <了解> します。
No項目説明
B1ConsoleText console, requiring user to login
B2Console AutologinText console, automatically logged in as 'example' user
B3DesktopDesktop GUI, requiring user to login
B4Desktop AutologinDesktop GUI, automatically logged in as 'example' user

2 Display Options

以下の設定項目がありますが、特に設定変更するものはありません。
No項目説明
D1UnderscanRemove black border around screen
D2Screen BlankingEnable/disable screen blanking
D3VNC ResolutionSet resolution for headless use
D4CompositeEnable/disable composite output

3 Interface Options

以下の設定項目がありますが、RPi OS インストール の通りに設定している場合は、特に設定変更するものはありません。
No項目説明
I1SSHEnable/disable remote command line access using SSH
I2VNCEnable/disable graphical remote desktop access
I3SPIEnable/disable automatic loading of SPI kernel module
I4I2CEnable/disable automatic loading of I2C kernel module
I5Serial PortEnable/disable shell messages on the serial connection
I61-WireEnable/disable one-wire interface
I7Remote GPIOEnable/disable remote access to GPIO pins

4 Performance Options

以下の設定項目がありますが、特に設定変更するものはありません。
No項目説明
P2Overlay File System Enable/disable read-only file system

5 Localisation Options

以下の設定項目がありますが、RPi OS インストール の通りに設定している場合は、L4 のみの設定変更となります。
No項目説明
L1LocaleConfigure language and regional settings
L2TimezoneConfigure time zone
L3KeyboardSet keyboard layout to match your keyboard
L4WLAN CountrySet legal wireless channels for your country
L4 WLAN Country
「JP Japan」を選択して <了解> すると、次のメッセージが表示されます。
Wireless LAN country set to JP
これは、Wi-Fi で使う電波(周波数)の範囲を、それぞれの国の事情に合わせて指定するもののようです。
そのため設定しない場合、違法電波を出力することがあります。

6 Advanced Options

以下の設定項目がありますが、RPi OS インストール の通りに設定している場合は、特に設定変更するものはありません。
No項目説明
A1Expand FilesystemEnsures that all of the SD card is available
A2Network Interface NamesEnable/disable predictable network i/f names
A3Network Proxy SettingsConfigure network proxy settings
A6WaylandSwitch between X and Wayland backends
A7Audio ConfigSet audio control system

8 Update

以下のコマンドを実行したのと同じく、Raspberry Pi OS をアップデートします。
$ sudo apt -y update && sudo apt -y upgrade
どこかで実行する必要があるので、ここで update を実行しておきます。

9 About raspi-config

raspi-config についてメッセージが表示されます。
記事を作成した時点では、raspi-config は Version: 20231108 でした。

RPi OS インストール

Raspberry Pi Imager を利用して Windows 端末で microSD カードに Raspberry pi OS をインストールする手順です。

準備するもの

前提として、インターネット接続環境があり、それぞれの機械が故障していないものとします。

Windows 端末

No名称備考
1Windows 端末 一式
2microSD カードライタ

Raspberry Pi 端末

No名称備考
1Raspberry Pi 3 Model B
2USB 電源
3microSD カード(16GB 以上のもの)

Windows 端末作業

基本的には、こちらの公式サイトにある作業を行います。
https://www.raspberrypi.com/documentation/computers/getting-started.html

Windows 端末

このページで紹介する手順は Windows 11 端末で実行しました。
Windows 環境
Windows 環境

Raspberry pi Imager ダウンロード

Windows 端末であれば、Windows 端末用の Raspberry Pi Imager をダウンロードします。
Raspberry Pi OS – Raspberry Pi

今回は、2023.7.9 時点で最新版だった v1.7.5 を利用しています。

Raspberry Pi Imager インストール

ダウンロードした「imager_1.6.2.exe」をダブルクリックして、起動するウィザードに従ってインストールします。
インストール開始
インストール開始

Install をクリックして、Raspberry Pi Imager のインストールを開始します。

進捗
進捗

進捗状況が表示されます。

起動
Raspberry Pi Imager 起動

インストールが完了したら、Raspberry Pi Imager を起動するボタンにチェックをつけたまま Finish をクリックします。
これで Raspberry Pi Imager が起動します。

Raspberry Pi Imager

起動

以下の画面で「OSを選ぶ」を選択します。
Raspberry Pi OS Imager
RPi OS Imager

OS

以下の画面で「Raspberry Pi OS (32-bit)」を選びます。
OS select
RPi OS Imager

ストレージ

以下の画面で、適切なストレージを選びます。
「OSを選ぶ」ボタンが、選択した OS の名前に変わります。
Storage
RPi OS Imager

ストレージ選択

差し込んだ MicroSD カードを選びます。
今回は 32GB の microSD カードを差しているので、E ドライブとしてマウントされている 31.3GB のものを選びます。
Storage select
RPi OS Imager

詳細な設定

「ストレージを選ぶ」ボタンが、選択したストレージに変わっています。

以下の画面で、右下のギアボタンを選びます。
Gear Button
RPi OS Imager

詳細な設定画面の表示

ここでは、必要に応じて入力します。
ホスト名
適切なホスト名を入力します。
SSH setting
RPi OS Imager
SSH 有効化
別途設定が不要になるので、ここで SSH 設定をしておきます。
SSH setting
RPi OS Imager
アカウント設定
デフォルトだった pi ユーザの代わりに、利用するユーザー名とパスワードを指定します。
Account
RPi OS Imager
Wi-Fi 設定
必要であれば設定します。
(サーバ利用であれば、基本的には不要なはずですが)
Wi-Fi setting
RPi OS Imager
ロケール設定
地域は設定しておくと、いろいろ表示周りがスッキリするので、指定しておきます。
Locale setting
RPi OS Imager
永続的な設定
変更不要です。

そのまま保存を選択します。
Eternal setting
RPi OS Imager

データ削除の確認

microSD カードに入っているデータを消して OS 設定しても良いかの確認を行います。
続けなければ OS インストールできないので、「はい」を選択します。
Delete announce
RPi OS Imager

表示確認

インストールの進行状況が表示されるので、興味があれば見ておきます。
Wriging progress
RPi OS Imager

終了処理

以下の画面が表示されたら「続ける」を選択します。
End
]

終了

最初の画面に戻るので、右上の「×」を選択してアプリを終了させます。
Raspberry Pi OS Imager
RPi OS Imager

microSD カードの入れ替え

microSD カードを、Windows 端末の SD カードリーダから、Raspberry Pi に差し替えます。

dhcp 環境であれば、電源を入れたあと、ネットワークからアクセス可能になっています。

接続確認

dhcp 環境の場合、ネットワーク上から Raspberry Pi を探す必要があります。

参考までに、MAC アドレスのベンダー ID を記載しますが、Raspberry Pi の MAC アドレスは増えることがあります。

MAC アドレスのベンダー ID
https://udger.com/resources/mac-address-vendor-detail?name=raspberry_pi_foundation
範囲備考
28:CD:C1:xx:xx:xx
B8:27:EB:xx:xx:xx
D8:3A:DD:xx:xx:xx
DC:A6:32:xx:xx:xx
E4:5F:01:xx:xx:xx

Windows プロンプト

コマンドプロンプトを起動して、ブロードキャストアドレス宛てに ping を送信して、arp を参照します。
> ping 192.168.x.255
> arp -a

ssh ログイン

Tera Term 等でリモートログインします。
Tera Term についての詳細は Tera Term の使い方 を参照してください。