7
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Raspberry Pi 3/4にUbuntuをインストール

Last updated at Posted at 2021-06-24

概要

Ubuntu Server/Desktopのインストールについての説明.
このページはUbuntu Serverのインストールがメイン.素直にDesktopをインストールする場合は,UbuntuのRaspberry Piページのトップの位置あたりにある「desktop」を選択してtutorialを見た方がよい.

モチベーション

ROS2の少人数ゼミを行うときに,PC使うのではなくRaspberry Pi使った方が

  • 安上がりじゃないか?
  • ハードウェア扱うのに接続性が良くないか?
  • 面白いんじゃない?

と思ったから.

ネットワーク環境の変動に対する考え方

raspberry piの場合,使用状況が色々変わる.持ち運びも考慮に入る.これにより状況によってネットワーク環境が変わることが想定される.ROSで遊ぶならDNS/DHCPなくても扱えるようにしたい.

無線LANの場合

無線LANで接続できる場合,IPが自動で割り振られる状況のみを想定する.IPが自動で割り振られない場合,そもそも無線サービスが使えないと考え,IPが割り振られれず利用できないままにしておく.

  • 対処
    • ネットワーク設定にてdhcpによる割り振りを行う(netplanのyaml設定ファイルでdhcp4: trueとする).
    • IPが変わる可能性があるので,ssh接続などは名前解決で行う.dnsがない可能性も考え,avahi-daemonによる名前解決を行う.

有線LANの場合

有線LANの場合,以下の状況が考えられる.

  1. LANケーブルが刺さっていない
  2. dhcpサーバによりIPが自動で割り振られる
  3. dhcpサーバのないネットワークに接続しちゃった
  4. 固定IPを設定しなければならないネットワークである

このうち,4.は考えず,1.から3.で適当にIP割り振っちゃっていい状況を対象とする.
わりとraspberry piを持ち運んだりして状況が変わると,1.になったり2.になったり途中で状況が変わるけど,それでも動くようにしたい.

  • 対処
    • link-localによるプライベートIPの自動割り振り(169.254.0.0/16)を行う(netplanのyaml設定ファイルでlink-local: [ipv4]を使う)
    • avahi-daemonによる名前解決を行う(無線LANと同じ)

Ubuntu Serverのインストール・設定

microSDカードへのインストール

UbuntuのRaspberry Piページが充実している.このページの「Download Ubuntu Server」や「Download Ubuntu Desktop」からダウンロードしても良いが,トップの位置あたりにある「desktopserver」を選択してtutorialを見た方がよい.ここではserverを選択.

Raspberry Pi Imagerによるインストール方法

server通りに実行.特に気を付けるところは以下の通り.

Raspberry Pi Imager for Windowsにて.Mac, Unixはserverに説明あり.

  • CHOOSE OS
    • Other general purpose OS
      • Ubuntu ServerLTS(RPi 3/4/400) 64bit版のお好きなバージョンを選択
  • 右下の歯車マークで事前に色々設定可

Ubuntu Serverの設定

起動・ログイン

microSDカード,HDMI,キーボード/マウスをつなげてRaspberry Piを起動すると普通のUbuntuインストールとなる.まずは普通のインストールを終わらせる.

最初の起動後,ID・パスともにubuntuでログインするかSDカードへの書き込み時に設定したID・パスでログインする.
ただ,最初は種々の設定を書き込む時間が必要で,すぐにログインできないかもしれない.数分待って画面半分くらいになんかメッセージが出たらログインできるようになる.

ネットワーク関連設定

基本設定

普通のインストール後に追加で設定.

  • 設定ファイル
    • /etc/netplan/50-cloud-init.yaml
  • 今回の例
    • 有線・無線ともにDHCPにて自動割り当て
    • 無線LANのssidをmyssid,セキュリティキーをmypassとして説明するので適宜自分用に読み替え
    • renderer: networkdを使用1
50-cloud-init.yaml
network:
    version: 2
    renderer: networkd
    ethernets:
        eth0:
            dhcp4: true
            dhcp6: true # 使わないならfalse
            link-local: [ ipv4, ipv6 ] # v6いらないなら [ ipv4 ]でおけ
    wifis:
        wlan0:
            dhcp4: true
            dhcp6: true # 使わないならfalse
            access-points: # 複数のssidを登録可
                "myssid":
                    password: "mypass"

設定後,以下のコマンドでネットワーク設定の有効化.

terminal
$ sudo netplan apply

非公開SSIDへの接続,パスワードの暗号化などは以下が参考となる.

avahi-daemon2

terminal
$ sudo apt install avahi-daemon
$ sudo systemctl enable avahi-daemon
$ sudo systemctl start avahi-daemon
  • /etc/hostnameで名前を指定3
  • 同じネットワーク内で名前が被らないように気を付ける
  • 以下はとりあえずの例
/etc/hostname
pi001

これでホスト名.localでアクセス可能となる.この例の場合,pi001.localでアクセスできるようになる.
注意点として,ホスト名の中に.(ピリオド)は使えない.例えば,pi.001とはできない(pi.001.localでアクセスできない).

その他通常の設定

念のため

入っていると思うが念のためインストール

$ apt install ssh git

hostnameの設定

設定
$ sudo hostnamectl set-hostname [コンピュータ名]
一時的な設定(再起動すると元に戻る)
$ hostname [コンピュータ名]
確認
$ cat /etc/hostname

時刻合わせ

  • 設定ファイル編集
/etc/systemd/timesyncd.conf
NTP=ntp.nict.jp
FallbackNTP=ntp.ubuntu.com # 複数指定する場合にはスペース区切りで続けて記述
terminal
$ timedatectl set-ntp true
$ sudo systemctl enable systemd-timesyncd.service
$ sudo timedatectl set-timezone Asia/Tokyo
$ sudo systemctl restart systemd-timesyncd.service

ロケール・キーボード・スワップファイルの設定

ここを参考.

terminal
$ sudo locale-gen ja_JP.UTF-8
$ sudo dpkg-reconfigure -f noninteractive locales
$ echo "LANG=ja_JP.UTF-8" | sudo tee /etc/default/locale

/etc/default/keyboardを編集

  • XKBMODEL="jp106"にする
  • XKBLAYOUT="jp"にする

スワップファイルはメモリの使用状況をみて必要なら行う.

terminal
$ sudo fallocate -l 1g /swapfile
$ sudo chmod 600 /swapfile 
$ sudo mkswap /swapfile 
$ echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
$ sudo swapon -a

2行目で1GBのスワップファイルを作成している.

システムアップデート4

terminal
$ sudo apt update && sudo apt upgrade

Tips

デスクトップ環境のインストール

注意

もしDesktopのバージョンの問題(特定のバージョンが手軽にインストールできない等)がある場合,

  1. Ubuntu Serverをインストール
  2. デスクトップ環境(xubuntu)をインストール

と段階的に行う.この場合は以下の手順を参考に.
もし問題がなく,インストールしたいDesktop環境がRaspberry Pi Imager for Windowsでインストールできなるのであれば,チュートリアル通りに進めた方がよい.

段階的に行う場合の話

デスクトップ環境はひとつのアプリケーションなので色々インストールできる.serverの5. Install Desktopから選択できるものを紹介しているblogなどに飛べる.ちょっと紹介文が面白い.
ここではxubuntuを選択.

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install xubuntu-desktop

xubuntuインストール途中の選択

  • ディスプレイマネージャ
    • gdm3
    • LightDM
      • こっちの方がいいかな?

ディスプレイマネージャの変更

$ sudo dpkg-reconfigure gdm3

もしかしたら以下をやるようにメッセージが出るかもしれない.その場合には実行

$ sudo dpkg --configure lightdm

その他

SDカードのイメージ作成・復元

何台ものRaspberry Piを複数の人(学生)が同じ(ような)環境で使いたい場合,いちいちインストール・設定をするのは面倒.
そこで原初のSDカードを作成後,バックアップ(イメージの作成・保存)と復元(イメージからSDカードの作成)を考える.
ソフトウエアはWin32DiskImagerを使用する.リンクからDLしてもよし,以下のコマンドでいれても良し.

windows terminal
winget install --id Win32diskimager.win32diskimager

初手

必要なソフトウエアは全部入れておく.
raspberry pi上でavahi-daemonをdisableにしておく.

raspberry pi terminal
$ sudo systemctl disable avahi-daemon

その後電源落として,raspberry piからWindowsにSDカードを挿し替える.

SDカードのバックアップ(イメージ作成)・復元

有名なソフトなので「Raspberry Pi SDカード バックアップ 復元」などで沢山情報得られる.

後処理

以下について行う.

  • raspberry piに挿し替えて起動
  • パーティションの拡張
  • hostnameの変更
    • avahi-daemonを使用するので固有の名前をつける必要があるので必須
  • avahi-daemonの有効化
    • 識別のためのhostnameを設定した後にavahi-daemonを有効化
raspberry pi terminal
$ sudo hostnamectl set-hostname [コンピュータ名]
$ sudo systemctl enable avahi-daemon
$ sudo systemctl start avahi-daemon

長期運用のための工夫

  1. dhcp割り当てなのでIPが変わる可能性があり,IPによるssh接続は面倒となる.そこでホスト名による接続のためavahi-daemonを使う(手持ちのRaspberryPiをサクッとmDNSに対応させる).

  2. 有効化のためのリブートが面倒ならhostnamectlコマンド使おう(server world)

  3. 本当はインストール直後にも行う.というか隙あらば行う.

7
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?