本文へ移動
YASU26.TECH
メニュー

← 技術ノート一覧

Raspberry Pi 4 に Ubuntu 20.10 を入れてセットアップする

に書いた記事です。内容は当時のもので、現在とは異なる場合があります。

Raspberry Pi 4 でつくる ”おうち Kubernetes Cluster” シリーズ の OS セットアップ編です

OS インストール

せっかくだったら 64bit の方がいいだろうということで OS は Raspberry Pi OS ではなく Ubuntu に挑戦したいと思います
公式チュートリアル で案内されている通り Imager アプリが用意されています
以前はこんなのなかったと思うのですが、便利になりました

Imager を開くと

rpi_imager_home

こんな感じで OS と SD カードが選択できるようになっています

Ubuntu から

rpi_imager_os_selection

Ubuntu Server 20.10 (RPi 3/4/400) を選択します

rpi_imager_ubuntu_selection

あとは SD カードを選択して WRITE を押すと書き込みが始まるので完了するのを待ちます
コマンドを叩かなくても GUI で簡単にイメージをやけるのは本当にありがたいです

Raspberry Pi 起動!

Ubuntu はデフォルトで SSH が有効になっているのでラズパイに SD カードをセットしたら電源ケーブルをつないで早速起動します
ラズパイにモニターとキーボードにつないでも arp コマンドで IP にあたりをつけて SSH 接続してもお好みで

デフォルトのユーザー / パスワードは ubuntu / ubuntu ですが初回ログイン時にパスワードを変更させられるので任意のパスワードを設定します

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 <timestamp>

  System load:                      0.08
  Usage of /:                       7.9% of 27.57GB
  Memory usage:                     31%
  Swap usage:                       0%
  Temperature:                      28.9 C
  Processes:                        134
  Users logged in:                  0
  IPv4 address for eth0: <IPv4 address>
  IPv6 address for eth0: <IPv6 address>

 * Introducing self-healing high availability clusters in MicroK8s.
   Simple, hardened, Kubernetes for production, from RaspberryPi to DC.

     https://microk8s.io/high-availability

53 updates can be installed immediately.
35 of these updates are security updates.
To see these additional updates run: apt list --upgradable


Last login: <timestamp> from <IP>
ubuntu@ubuntu:~$

こんな感じのプロンプトが出たら起動成功です🎉

初期設定

まずはライブラリの最新化

$ sudo apt update && sudo apt upgrade

サーバーとしてインターネットにコンテンツを公開することを目標にしているのでセキュリティ設定もしていきます

root パスワードを設定

$ sudo passwd root

ユーザー追加 ※ 以下 <user name> の部分は任意のユーザー名を指定してください

$ sudo adduser <user name>

このあたりはプロンプトに従って設定していきます

管理者権限付与

$ groups ubuntu
ubuntu : ubuntu adm dialout cdrom floppy sudo audio dip video plugdev netdev lxd

$ sudo usermod -G ubuntu,adm,dialout,cdrom,floppy,sudo,audio,dip,video,plugdev,netdev,lxd <user name>

# 設定を確認
$ groups <user name>
<user name> : <user name> adm dialout cdrom floppy sudo audio dip video plugdev netdev lxd ubuntu

SSHまわりの設定

Ubuntu では ssh はデフォルトで有効になっているので Raspberry Pi OS のように有効化する手順は不要です

このあとパスワード認証を不可にするので秘密鍵と公開鍵を生成して ~/.ssh/authorized_keys に追加しておきます
そして /etc/ssh/sshd_config を以下のように編集します

  • PasswordAuthentication を no に変更
  • PermitEmptyPasswords を no に変更
  • PermitRootLogin を no に変更
  • Port を 22 以外の未使用のポート番号に変更

その後以下を実行して設定を反映させます

$ sudo /etc/init.d/ssh restart

このあたりで鍵認証で ssh できるかどうか確認しておきましょう
万一これがうまくいっていないとラズパイ本体に直接ディスプレイとキーボードつなぐなどして設定変更するしか手がなくなってしまいます…

ubuntu ユーザーを削除

$ sudo userdel -r ubuntu
userdel: group ubuntu not removed because it has other members.
userdel: ubuntu mail spool (/var/mail/ubuntu) not found

# 確認
$ id -a ubuntu
id: ‘ubuntu’: no such user

IP 固定化

Ubuntu での IP 固定は /etc/netplan/50-cloud-init.yaml を以下のように編集して設定します

# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        eth0:
            addresses:
            - <NodeごとのIP>/24
            dhcp4: false
            gateway4: <ルーターのIP>
            nameservers:
                addresses:
                - <ルーターのIP>
    version: 2

ホスト名変更

$ sudo hostnamectl set-hostname <Nodeのホスト名>

他の Node のホスト名も教えるには /etc/hosts に以下のように追記します

127.0.0.1        <自分のホスト名>
<各NodeのIP>     <各Nodeのホスト名>
...

初期設定としてはここまでです
お疲れさまでした🎊

参考ポスト

今回も先人たちの叡智にお世話になりました