TOC
LTSを入れるか、現行の最新版を入れるか
Raspberry Piの純正OSとしてRaspberry Pi OS(旧称Raspbian)が提供されていますが、今回使うRPi4はデスクトップ運用する予定が皆無なため、サーバー系の運用ができるOSを選択します。
普段からUbuntuを使っていることから運用やメンテナンスに慣れているという理由でUbuntu Serverをインストールするのは最初から決めているのですが、導入するバージョンについては以前は現在のLTSで最新のUbuntu 20.04にしようと考えていました。
UbuntuのRaspberry Piサポート状況
Linuxディストリビューションの一つであるUbuntuは、20.10からデスクトップ環境のサポートもしていますが、Ubuntu公式としての(非デスクトップ環境の)サポートは概ね以下の通りでした。
- Ubuntu 14.04からOSイメージを配布(Raspberry Pi 2用)
- Ubuntu 16.04からPPAで非公式イメージを配布(Raspberry Pi 3用)
- Ubuntu 19.10.1としてRaspberry Pi専用のイメージが配布される(このあたりから正式サポート感を感じる)
- Ubuntu 20.10としてデスクトップ版UbuntuがRaspberry Piに正式対応
という形でインストールイメージの配布はかなり前からされていました。
導入するUbuntuのバージョン
Ubuntuではサポート期間で大別すると2種類のバージョンがあります。
- 偶数年の4月にリリースされるLTS(メンテナンス期間5年)
- LTS以外のリリース(メンテナンス期間9ヶ月)
サーバー運用の場合、あまり頻繁に更新をしたくないものですが、かといってLTSリリースを選んでしまうとリリース後に使いたいパッケージは基本的に追加されません。
そのため当初は現在の最新LTSである20.04を導入しようと考えていましたが、Podman関連のパッケージが最近追加されたこともあり、今回は導入リリースは20.10、次のLTSリリースになる22.04までは都度更新を行い、LTSへ移行する方向に決めました。
Raspberry Pi用のUbuntu 20.10イメージ
Ubuntuは64bitを含むARMもリリースしていますが、Raspberry Pi用には専用のインストールイメージがあるので、これをMicroSDカードに書き込みます。
Install Ubuntu on a Raspberry Pi | Ubuntu
Ubuntu Server 20.10の64bitのボタンを押すと現在のリリースにリダイレクトされます。現時点では以下のURLに転送されます。
書き込みはEtcherを使いました。MicroSDは32GBのものを使いましたが、データを外に置くのであれば16GBでも問題ないと思います。
書き込んだMicroSDカードをRPi4に挿入してUSB Type-C端子にケーブルを接続して起動すると、DHCPでIPアドレスをもらうので、LAN内の適当なPCからなんとかしてIPアドレスを調べます。
Ubuntu 20.10の初期設定
RPi4にSSHでログインします。ユーザー名: ubuntu パスワード ubuntuです。
$ ssh ubuntu@192.168.1.103
(snip)
ubuntu@192.168.1.103's password:
You are required to change your password immediately (administrator enforced)
Welcome to Ubuntu 20.10 (GNU/Linux 5.8.0-1006-raspi aarch64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Sun Dec 20 05:42:34 UTC 2020
System load: 0.21 Temperature: 31.6 C
Usage of /: 6.9% of 28.95GB Processes: 138
Memory usage: 3% Users logged in: 0
Swap usage: 0% IPv4 address for eth0: 192.168.1.103
0 updates can be installed immediately.
0 of these updates are security updates.
The list of available updates is more than a week old.
To check for new updates run: sudo apt update
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for ubuntu.
Current password:
Current password:が表示されたら、現在使用しているubuntuユーザーのパスワード(ubuntu)を入力した後、実際に使用するubuntuユーザーのパスワードを2回入力すると一旦切断されるので、再度変更したパスワードでsshログインします。
ハードウェアのリビジョンを確認する(USB PDの問題が発生しないことを確認)
$ cat /proc/cpuinfo | grep -e Hardware -e Revision -e Model
Hardware : BCM2835
Revision : d03114
Model : Raspberry Pi 4 Model B Rev 1.4
E-Markerを内蔵するまともなUSB Type-Cケーブルで通電しないバグはa03111(1GB) b03111(2GB) c03111(4GB)のそれぞれの初期ロットらしいので、そもそも8GBモデルは発生するロットがなさそうです。
pi 4 - Pi 4 - How to be sure to order a model with usb fixed? - Raspberry Pi Stack Exchange
rootユーザーで作業できるようにするため、rootユーザーのパスワードを設定する
管理系コマンド全てにsudoを付けるのは現実的ではないので、rootユーザーのパスワードを設定します。(sudo -i
でもできることはできますが一般ユーザーのパスワードを使うのが不自然なので)
$ sudo passwd root
New password:
Retype new password:
passwd: password updated successfully
以降は管理系のコマンドはsu -
でrootユーザーになってから実行します。
作業用の一般ユーザーを作成する
Raspberry Pi用のUbuntu Serverのイメージは固定でubuntuユーザーが作られているので、作業用にhogehogeユーザーを作成します。
RHEL系のディストロではuseradd
コマンドとadduser
コマンドは同じものですが、Debian系では異なるので、対話形式でユーザーを作成するadduser
を使います。
# adduser hogehoge
Adding user `hogehoge' ...
Adding new group `hogehoge' (1001) ...
Adding new user `hogehoge' (1001) with group `hogehoge' ...
Creating home directory `/home/hogehoge' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for hogehoge
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]
パッケージの更新
LAN内のapt-cacher-ngサーバーを使うようにする(/etc/apt/apt.conf.d/02cacher-ngを作成)
私の場合、LAN内にapt-cacher-ngサーバーがある1ので、aptの実行時に参照するようにします。
LAN内に設置するAPTのPull through proxyでAPTパッケージの重複ダウンロードを回避
/etc/apt/apt.conf.d/02cacher-ng
を以下の内容で作成します。IPアドレスはapt-cacher-ngが動作しているサーバーです。
Acquire::http::Proxy "http://192.168.1.210:3142/";
インストール済みパッケージを更新する
# apt-get update
# apt-get upgrade
# apt-get dist-upgrade # apt-get upgradeの実行時に保留パッケージがある場合
neofetchをインストールする
基本的にSSHログインで作業する端末の場合はneofetchをインストールしています。
どんなdistroか一目瞭然!現在使っているdistroを確認するならneofetchを使おう!
# apt-get install neofetch
neofetchの実行結果はこんな感じになりました。
$ neofetch
.-/+oossssoo+/-. ubuntu@ubuntu
`:+ssssssssssssssssss+:` -------------
-+ssssssssssssssssssyyssss+- OS: Ubuntu 20.10 aarch64
.ossssssssssssssssssdMMMNysssso. Host: Raspberry Pi 4 Model B Rev 1.4
/ssssssssssshdmmNNmmyNMMMMhssssss/ Kernel: 5.8.0-1010-raspi
+ssssssssshmydMMMMMMMNddddyssssssss+ Uptime: 12 mins
/sssssssshNMMMyhhyyyyhmNMMMNhssssssss/ Packages: 609 (dpkg), 4 (snap)
.ssssssssdMMMNhsssssssssshNMMMdssssssss. Shell: bash 5.0.17
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ Terminal: /dev/pts/0
ossyNMMMNyMMhsssssssssssssshmmmhssssssso CPU: BCM2835 (4) @ 1.500GHz
ossyNMMMNyMMhsssssssssssssshmmmhssssssso Memory: 198MiB / 7811MiB
+sssshhhyNMMNyssssssssssssyNMMMysssssss+
.ssssssssdMMMNhsssssssssshNMMMdssssssss.
/sssssssshNMMMyhhyyyyhdNMMMNhssssssss/
+sssssssssdmydMMMMMMMMddddyssssssss+
/ssssssssssshdmNNNNmyNMMMMhssssss/
.ossssssssssssssssssdMMMNysssso.
-+sssssssssssssssssyyyssss+-
`:+ssssssssssssssssss+:`
.-/+oossssoo+/-.
EEPROM管理パッケージをインストールする
Raspberry Pi 4 boot EEPROM - Raspberry Pi Documentation
# apt-get install rpi-eeprom
現在のEEPROMを表示する
# rpi-eeprom-update
BCM2711 detected
VL805 firmware in bootloader EEPROM
*** UPDATE AVAILABLE ***
BOOTLOADER: update available
CURRENT: 2020年 3月 19日 木曜日 14:27:25 UTC (1584628045)
LATEST: 2020年 9月 3日 木曜日 12:11:43 UTC (1599135103)
FW DIR: /lib/firmware/raspberrypi/bootloader/critical
VL805: up-to-date
CURRENT: 000137ad
LATEST: 000137ad
NanoPi M4V2でもやっていた設定をつらつらとしていきます。
NanoPi M4V2をArmbianで使う(初期セットアップ)
タイムゾーンを設定する
# timedatectl
Local time: Sun 2020-12-20 06:21:27 UTC
Universal time: Sun 2020-12-20 06:21:27 UTC
RTC time: n/a
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
# timedatectl list-timezones | grep -i tokyo
Asia/Tokyo
# timedatectl set-timezone Asia/Tokyo
# timedatectl
Local time: Sun 2020-12-20 15:22:03 JST
Universal time: Sun 2020-12-20 06:22:03 UTC
RTC time: n/a
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
ロケールを設定する
$ locale
LANG=C.UTF-8
LANGUAGE=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_PAPER="C.UTF-8"
LC_NAME="C.UTF-8"
LC_ADDRESS="C.UTF-8"
LC_TELEPHONE="C.UTF-8"
LC_MEASUREMENT="C.UTF-8"
LC_IDENTIFICATION="C.UTF-8"
LC_ALL=
# apt-get install language-pack-ja
# update-locale LANG=ja_JP.UTF-8
(OS再起動)
$ locale
LANG=ja_JP.UTF-8
LANGUAGE=
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=
IPアドレスを固定する(NetPlan)
バックエンドとして使用するNetwork Managerをインストールします(入ってないので…)。これをしないとnetplan apply
を実行したタイミングでスタックします。正直、これに気付かずに2日くらい潰してます。
# apt-get install network-manager
デバイス名を確認します。
$ lshw -class network -short
WARNING: you should run this program as super-user.
H/W path Device Class Description
========================================
/1 eth0 network Ethernet interface
/2 wlan0 network Wireless interface
WARNING: output may be incomplete or inaccurate, you should run this program as super-user.
有線LANがeth0、無線LANがwlan0になっています。
パッケージはインストールされているので、/etc/netplan/99-manual.yaml
というファイルを以下の内容で作成します。設定内容は以下の通りです。
デバイス | 有線LAN | 無線LAN |
---|---|---|
デバイス名 | eth0 | wlan0 |
IPv4アドレス | 192.168.1.210 | 192.168.1.220 |
IPv4サブネットマスク | 255.255.255.0 | 255.255.255.0 |
デフォルトゲートウェイ(IPv4) | 192.168.1.1 | 192.168.1.1 |
IPv6アドレス | fd00:dead:beef::210 | fd00:dead:beef::220 |
IPv6プレフィックス | 64bit | 64bit |
デフォルトゲートウェイ(IPv6) | fd00:dead:beef::1 | fd00:dead:beef::1 |
DNSサーバー | 192.168.1.1 | 192.168.1.1 |
接続SSID | Buffalo-A-xxxx | |
PSK | xxxxxxxx |
今回は設定ファイルを分けます。
有線LAN設定
/etc/netplan/99-manual-eth0.yaml
を以下の内容で作成します。
network:
ethernets:
eth0:
dhcp4: false
dhcp6: false
addresses:
- 192.168.1.210/24
- "fd00:dead:beef::210/64"
gateway4: 192.168.1.1
gateway6: "fd00:dead:beef::1"
nameservers:
addresses:
- 192.168.1.1
version: 2
renderer: NetworkManager
無線LAN設定
/etc/netplan/99-manual-wlan0.yaml
を以下の内容で作成します。
network:
wifis:
wlan0:
access-points:
"Buffalo-A-xxxx":
password: "xxxxxxxx"
dhcp4: false
dhcp6: false
addresses:
- 192.168.1.220/24
- "fd00:dead:beef::220/64"
gateway4: 192.168.1.1
gateway6: "fd00:dead:beef::1"
nameservers:
addresses:
- 192.168.1.1
version: 2
renderer: NetworkManager
設定を反映します。
# netplan apply
スポンサーリンク
- 作業が一段落したらRPi4をサーバーにします [return]
comments powered by Disqus