JavaScriptを有効にしてください

ラズパイをセットアップする(Ubuntu 20.04.3, RasberryPi OS)

 ·  ☕ 7 分で読めます · 👀... ページ閲覧数

背景

おうち kubernetes クラスタ作りたかった。

出先からでも触れるように、1台追加で用意してVPNサーバにすることに。

書いてたら長くなったのでここではラズパイのセットアップのみをまとめる。

用意したもの

項目 個数価格(大体)URL用途、備考
Raspberry Pi modelB (4GB)46,000~10,000 円/個-1台はVPNサーバ。
品薄すぎるためメルカリとか色んなところから購入してかき集めた。
クラスタケース12,099円冷却ファンとヒートシンク付き結構熱もつイメージあったので
ファンとヒートシンクがセットでついているもの欲しかった。
microSD (32GB)4990円/個サンディスクOSインストールするので台数分必要
USBケーブル(Type-C)4999円aceyoon ケーブル 4本セット(20cm)台数分必要。
あんまり長くなくてたくさん入ってるの欲しかった。
microHDMIケーブル1599円VCE Micro HDMI to HDMI 変換アダプタ オスーメス GoProSSHでセットアップするため不要かと思ったが、
SSHに失敗した時ハード故障なのかmicroSDのセットアップ不良なのかを切り分けたくて購入した。結果買ってよかった。
sdカードリーダ11,499円UGREEN USB-C カードリーダー TF SD 2in1 USB3.0-
USB 急速充電器12,599円Anker PowerPort 5家のものを流用。ラズパイ3台フル稼働にも全く動じていない。
さすがAnker。もう少し小型のやつでもいいかも。

大体全部で4万円くらいかな。
自分の資産として残せるものがこの値段で揃えられるのはなかなか嬉しい。

事前準備

2年くらい前にsdカードをセットアップしたときは本家のHPからイメージファイルをダウンロードしてセットアップしたような覚えがあったが、今はRaspberry Pi Imagerなる便利なツールがあるとのことで、インストールしてセットアップした (ツール便利。。!)。

microsdセットアップすると一度マウントから外れるため、もう一度挿し直してssh用のファイルを作成する。

ちなみに、wifiやsshの設定はRaspberry Pi Imagerのインストールオプションからも設定することができる。
これを利用すると以降の手順がかなり簡略化できる(リンク)。

3台のラズパイにはubuntu 20.04.3 LTS(64bit版)をインストールした。
VPNサーバ用には、ゆくゆくいろんな情報をダッシュボードとして表示したい夢があったのでraspberrypie(desktop)をインストールした。

ssh接続後、パスワードの変更を求められた(ubuntuの初期パスワードはubuntu)。

1
2
3
4
5
6
7
8
# microSDがされているパスを確認する
$ diskutil list

# ubuntuの場合(microsdのルートフォルダ配下にファイル作成すればよい)
$ touch /Volumes/boot/ssh

# アンマウントする
$ diskutil unmountDisk /dev/disk2

sshするためのIPアドレスを確認する

1
2
3
4
$ sudo arp-scan -l --interface en0

# ラズパイの場合は pi@<ipアドレス>
$ ssh ubuntu@192.168.32.184

ラズパイセットアップ

ubuntuのセットアップ手順。raspberrypie(desktop)も大体同じ。

以降はモニターに接続して作業する。

日本語キーボードの設定

キーボードがUSになっていてやりづらいので、日本語キーボードに対応させる。
参考(Ubuntuで日本語キーボードレイアウトに変更する方法)

1
$ sudo dpkg-reconfigure keyboard-configuration

コンソールにウィザードが表示される。順番に選択する。

Generic 105-key PC (init1.)
Japanese
Japanese
The default for the keyboard layout
No compose key

選択後、setupconコマンドを実行すると日本語キーボードでストレスなく文字入力できるようになる。

パッケージ最新化

色々パッケージインストールする前に最新化する

1
2
3
4
5
6
sudo apt-get update
sudo apt update
sudo apt dist-upgrade

# 再起動
# `sudo reboot` もしくは `sudo shutdown -r now`

bluetooth機器と接続する

自前のワイヤレスキーボードにペアリングする。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
sudo apt install bluez pi-bluetooth
sudo apt install bluez-btsco bluetooth blueman
systemctl restart bluetooth

bluetoothctl

# 端末スキャン開始
scan on

# ペアリング
pair ${接続機器のmacアドレス}
# PINが表示されるため、ワイヤレスキーボードで番号を入力する。
# うまくいくと "Pairing successful" が表示される

# 機器に接続する
connect ${接続機器のmacアドレス}

# 終了する
exit

うまくいくと “Connection successful” が表示され、ワイヤレスデバイスが使えるようになる

wifiの設定

/etc/netplan/50-cloud-init.yamlを編集してwifiの接続設定を行う。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# [wifis]以降を追記する
$ vi /etc/netplan/50-cloud-init.yaml
#nework:
#    ethernets:
#        eth0:
#            dhcp4: true
#            optional: true
#    version: 2
#    wifis:
#        wlan0:
#            dhcp4: true
#            optional: true
#            access-points:
#                ${ssid}:
#                    password: ${password}

# 設定を適用する
$ sudo netplan apply

# 接続状況の確認
$ wifi-status

修正したけど50-cloud-init.yamlは人が修正するのは良くないらしい。(【Ubuntu】 /etc/netplan/50-cloud-init.yamlを編集するの止めろ

Ubuntu 20.04 LTSで固定IPアドレスの設定を参考に、/etc/netplan/99_config.yamlを修正する(50-cloud-init.yamlの設定は元に戻す)。

IPアドレスはラズパイごとにそれぞれ別々の値で設定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
network:
  version: 2
  renderer: networkd

  wifis:
    wlan0:
      addresses:
        - 192.168.13.10/24
      gateway4: 192.168.13.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
      access-points:
        ${ssid}:
          password: ${password}

修正後、適用してwifiの接続状況を確認する

1
2
$ sudo netplan apply
$ sudo wifi-status

作業用に新しいユーザを払い出す。

1
2
3
# 作業用のユーザ追加/パスワードを設定
$ sudo useradd -m ${username}
$ sudo passwd ${username}

作成したユーザをデフォルトユーザ(ubuntu)と同じグループに所属させる。

1
2
3
4
5
6
7
8
# ubuntu と同じグループ(ubuntu以外)に所属させる
$ groups ubuntu
ubuntu : ubuntu adm dialout cdrom floppy sudo audio dip video plugdev netdev lxd

$ sudo usermod -aG adm,dialout,cdrom,floppy,sudo,audio,dip,video,plugdev,netdev,lxd ${username}

# ログインシェルを`sh` -> `bash`に変更する
$ sudo vi /etc/passwd

初期ユーザubuntuを無効化する(sshの設定してから)

1
$ sudo passwd --lock ubuntu

SSHの設定

ラズパイでsshの設定(/etc/ssh/sshd_config)を修正する

1
2
3
4
5
6
7
# これらの設定項目を修正する
# sshで利用するポート番号も変更する
$ vi /etc/ssh/sshd_config
# PermitRootLogin no             ... rootユーザのログインは許可しない
# PubkeyAuthentication yes       ... sshには公開鍵認証を利用する
# PasswordAuthentication no      ... パスワードを利用したログインは許可しない
# PermitEmptyPasswords no        ... パスワードの空文字設定は許可しない

公開鍵認証でアクセスできるように設定する。
鍵の生成。パスフレーズの設定は行わず、ecdsaで作成した。

1
2
3
4
5
$ ssh-keygen -t ed25519 -C "${email}"

# 公開鍵をラズパイの"authorized_keys"に登録する
# sshdを再起動する。
sudo systemctl restart sshd

ラズパイに接続するクライアントの~/.ssh/configに接続設定を追加する。

Host kube 192.168.13.11
  HostName 192.168.13.11
  User ${username}
  Port ${portNumber}
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/${ssh_key_filename}

ホスト名変更

ホスト名を変更する。他で設定する予定の名前も追加しておく。


$ sudo hostnamectl set-hostname k8s-master
$ sudo vi /etc/hosts
127.0.1.1      k8s-master
192.168.13.11  k8s-master
192.168.13.12  k8s-node1
192.168.13.13  k8s-node2

不要パッケージ削除

1
2
3
4
5
$ sudo apt upgrade
# 更新に伴い必要なくなったパッケージを削除
$ sudo apt autoremove
# installされていないdebファイルを削除
$ sudo apt autoclean

TimeZoneの設定

sudo timedatectl set-timezone Asia/Tokyo

詰まったこと

Raspberry Pi OS (Desktop) のGUIでBluetoothエラーが出る

デスクトップ上でキーボードをペアリングしたかったが、ペアリングしようとするとエラーになり接続できず。。。

bluetoothctl上では設定可能だったが、ラズパイを再起動すると挙動がおかしくなり、接続したbluetooth端末をremove -> 再接続 しないと接続できなかった。

パッケージリストを更新してアップグレード後再起動したらGUI上でペアリングできるようになった。

1
2
3
sudo apt update
sudo apt full-upgrade
sudo shutdown -r now

つぶやき

購入したうち1台に初期不良があり(microSDの読み込み部に問題がありそう)、値段もまぁまぁするので頑張ってたら当初の予定よりかなりかかってしまった。正規の代理店から購入した商品だったので、ダメ元で連絡してみたら交換してくれた。

ほとんど全てのラズパイをセットアップした段階で気づいたのだが、Raspberry Pi Imager で command + Shift + x を同時にクリックするとオプション選択画面が表示され、そこで割と色々設定できて便利だった。

設定できる項目(一部)

  • SSH
  • wifi
  • Timezone

イメージ

raspi_02

共有

BAMBi
著者
BAMBi
サーバサイド~インフラがメインでフロントも好きです。趣味はアニメ鑑賞、ゲーム、つまみ細工です。