LoginSignup
13

More than 3 years have passed since last update.

Raspberry Pi 3B+にUbuntu Server 18.04をインストール

Last updated at Posted at 2019-03-20

概要

モチベーション

公式にUbuntu Server 18.04のイメージがアップロードしてあり,Raspberry Pi 3B+に簡単インストールできそうだったので.あとROSで遊びたくて.

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

raspberry piの場合,使用状況が色々変わる.持ち運びも考慮に入る.これにより状況によってネットワーク環境が変わることが想定される.

無線LANの場合

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

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

有線LANの場合

有線LANの場合,以下の状況が考えられる.
1. LANケーブルが刺さっていない
2. ad-hockな接続である
3. dhcpサーバによりIPが自動で割り振られる
4. dhcpサーバのないネットワークに接続しちゃった
5. 固定IPを設定しなければならないネットワークである

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

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

microSDにインストール

Ubuntu ServerのOSイメージファイル

公式からARM64のイメージファイル(xzファイル)をダウンロード1

  • イメージファイルは二種類
    • ARMHFは32bit
    • ARM64は64bit

Windowsでのインストール方法

Win32 Disk ImagerでmicroSDにimgファイルを書き込む.

Mac, Ubuntu, etc.

頑張る

設定

最初の起動

  1. microSDカード,HDMI,キーボード,マウスをつなげてRaspberry Pi 3B+を起動
  2. username/password = ubuntu/ubuntu でログイン
  3. パスワードの変更を求められるので変更2

LAN設定3

  • 設定ファイル
    • /etc/netplan/50-cloud-init.yaml
  • 今回の例
    • 有線・無線両方ともDHCPにて自動割り当て
    • 無線LANのssidをmyssid,セキュリティキーをmypassとして説明
    • renderer: networkdを使用4

yamlの編集

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

avahi-daemon5

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

これでホスト名.localでアクセス可能となる.この例の場合,pi001.localでアクセスできるようになる.

その他通常の設定

時刻合わせ

  • 設定ファイル編集
/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を編集
- 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のスワップファイルを作成している.

システムアップデート7

terminal
$ sudo apt update && sudo apt upgrade

  1. ここで使用したのは64bitだけど,Raspberry Piではまだまだ32bitがメインらしい(新しい地図). 

  2. この時点でsshによるログイン可能となる. 

  3. Ubuntu 18.04なのでLANの設定はnetplanの形式となる.詳しくは公式のmenuからreferenceやexampleが参考になる. 

  4. netplanの場合,rendererにnetworkdとNetworkManagerを選択できる.しかしNetworkManagerの場合,dhcp4: trueにするとlink-localのオプションが無効化されてしまう(netplan referenceのlink-localの項).よってlink-localのオプションを使う場合,networkdにしないといけない. 

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

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

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

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
13