まくろぐ

Raspberry Pi に Ubuntu 20.04 を入れて WiFi 接続できるようにする

更新:
作成:

ひょんなことから、Ubuntu Server の入った Raspberry Pi 4 が必要になったので、セットアップ手順をメモしておきます。 なんか昔より簡単にインストールできるようになっててビックリしました。

何をするか?

ここでは、Raspberry Pi 4 Model B に Ubuntu 20.04 をインストールして、Wi-Fi 経由の SSH ログインができるところまでセットアップします。 なお、有線 LAN では一度も接続せずに Wi-Fi 接続できるようにします。 ただし、初期設定のために HDMI でのディスプレイ出力は必要になります。

  • 準備するもの
    1. Raspberry Pi 4 (たぶん別のバージョンでもOK)
    2. SD カードに OS をインストールするための PC
    3. HDMI ケーブルとディスプレイと USB キーボード

SD カードに OS をインストール

公式の Raspberry Pi Imager というソフトウェアを使うと、ものすごく簡単に SD カードに各種 OS をインストールできます。 Raspberry Pi Imager を起動したら、次のようにポチポチやっていくだけでインストール完了です。

  1. Operating System の項目で、Other general purpose OSUbuntuUbuntu Server 20.04 LTS (64-bit server OS) のように選択
  2. Storage の項目で、書き込み対象の SD カードを選択
  3. WRITE ボタンを押してしばらく待つ

あとは、この SD カードを Raspberry Pi に挿入して電源を入れれば Ubuntu OS が起動します。 お手軽すぎる。。。

Wi-Fi(無線LAN)に接続する

Raspberry Pi を HDMI ケーブルでディスプレイに接続して電源を入れます。 Ubuntu が起動するので、初期ユーザー ubuntu、初期パスワード ubuntu でログインします。

ubuntu login: ubuntu
Password: ******

初回ログイン時にパスワードの変更を促されるので、適当なパスワードを設定します。

Ubuntu のネットワーク設定は Netplan の仕組み で行われるため、そのための YAML ファイルを作成します。

$ sudo vim /etc/netplan/99-custom.yaml
/etc/netplan/99-custom.yaml
network:
  version: 2
  wifis:
    wlan0:
      dhcp4: true
      access-points:
        "<SSID>":
          password: "********"

設定ファイル中の SSID とパスワードの部分は、実際に使用している Wi-Fi アクセスポイントのものに置き換えてください。 YAML ファイルを作成したら、次のようにしてネットワーク設定を反映します。

$ sudo netplan apply

数秒待てば Wi-Fi 接続できるようになっているはずなので、apt で各種パッケージを更新しておきます。

$ sudo apt update
$ sudo apt upgrade
...しばらく待つ...

大量のパッケージが更新されるので、ここでいったん再起動しておくとよいかもです。

$ sudo shutdown -r now

SSH 接続できるようにする

Raspberry Pi 上で SSH サーバーを起動しておけば、ノート PC などからリモート接続できるようになります。

次のようにして、apt で SSH サーバー (openssh-server) をインストールして起動します。 ついでに IP アドレス確認用の ifconfig コマンドなどを使えるように、net-tools パッケージもインストールしておきます。

$ sudo apt install openssh-server
$ sudo apt install net-tools
$ sudo systemctl start ssh  # SSHサーバーを起動

SSH サーバーが起動したら、ifconfig コマンドあるいは ip a コマンドで IP アドレスを確認します。

$ ifconfig

あとは、この IP アドレスに対して、ノート PC などから SSH 接続できれば成功です。 macOS などであれば、ssh コマンドは最初からインストールされています。

$ ssh ubuntu@192.168.1.14

この時点で Raspberry Pi をリモート操作できるようになったので、ディスプレイは必要なくなります。

固定 IP アドレスにしておく

前述のネットワーク設定では DHCP で IP アドレスを割り当てるようにしましたが、SSH 接続での使用を前提とするなら、固定の IP アドレスを割り当てておいた方がよさそうです。 Netplan の設定ファイルで固定 IP アドレスを指定する場合、DHCP を無効 (dhcp4: false) にし、代わりに次のような項目を設定します。

  • IP アドレス (addresses)
  • DNS サーバー (nameservers)
  • デフォルトゲートウェイ (routes)

次の例では、固定 IP アドレスとして 192.168.1.20、DNS サーバーとデフォルトゲートウェイとして 192.168.1.1 を指定しています。 念の為、セカンダリ DNS に Google Public DNS (8.8.8.8) を指定してあります。

/etc/netplan/99-custom.yaml
network:
  version: 2
  wifis:
    wlan0:
      dhcp4: no
      access-points:
        "<SSID>":
          password: "********"
      addresses: [192.168.1.20/24]
      nameservers:
        addresses: [192.168.1.1, 8.8.8.8]
      routes:
        - to: default
          via: 192.168.1.1

次のようにネットワーク設定を反映して完了です。

$ sudo netplan apply

IP アドレスを変更した場合は、ここで SSH 接続が切れるので、新しい IP アドレスで接続しなおします。

$ ssh ubuntu@192.168.1.20

Linuxメモ: Netplan で Ubuntu のネットワーク設定を行う

更新:
作成:

Netplan とは

Netplan は Linux のネットワーク設定を簡潔な YAML ファイルで行う仕組みで、Ubuntu 18.04 以降(正確には 17 以降)で採用されています。 昔の Ubuntu/Debian で使用されていた /etc/network/interfaces という設定ファイルはもう使われていません。

実際のネットワーク管理は、バックエンドで動作する NetworkManager や systemd-networkd といったネットワークデーモンが行うのですが、Netplan は YAML 設定ファイルの内容を適切な形に変換して、これらのネットワークデーモンに渡してくれます。 つまり、バックエンドでどのようなネットワークデーモンが動いているかを意識せずに、統一されたわかりやすい YAML ファイルでネットワーク設定を行うことができます。

Netplan は次のように振る舞います。

  1. システム起動時に Netplan が設定ファイル (/etc/netplan/*.yaml) を読み込んで、各ネットワークデーモン用の設定値を /run 以下へ書き出す
  2. 各ネットワークデーモンが渡された情報に基づいてネットワーク設定を行う
/p/7q3dnx8/img-001.svg
図: netplan.io のサイトより

バックエンドのネットワークデーモンとして何を使うかは、設定ファイルの renderer 部分で指定できるようになっていますが、デフォルトでは次のように動作します。

  • Wifi や 無線 WAN/LTE の設定 … NetworkManager に渡される
  • それ以外のネットワーク(有線LANなど)の設定 … networkd に渡される

よって、通常はどのネットワークデーモンを使うかを明示する必要はありません。

設定ファイルの読み込まれる順序

Netplan はすべての /etc/netplan/*.yaml ファイルを読み込みます。 複数のファイルが存在する場合は、ファイル名のアルファベット順に読み込まれ、後に読み込まれたファイルの設定値が優先的に使用されます。 例えば、

  • /etc/netplan/50-cloud-init.yaml
  • /etc/netplan/99-custom.yaml

というファイルがある場合、50-cloud-init.yaml で設定された値は 99-custom.yaml の設定値によって上書きされます。

ちなみに、Linux のインストール方法によって、最初から 50-cloud-init.yaml といった設定ファイルが存在することがありますが、これらのファイルを編集してはいけません。 50-cloud-init.yaml は別のモジュール(この場合は cloud-init)が生成しているファイルであり、このファイルを編集しても、将来的に上書きされてしまう可能性があります。 そのため、ネットワーク設定をカスタマイズするときは、それらのファイルよりも後に読み込まれる 99-custom.yaml といった別名の設定ファイルを作成します(名前は何でも OK です)。

設定例

Netplan の公式サイトで設定例や、各項目の意味を参照できます。

例えば、次のような感じで設定します。

有線 LAN の eth0 に DHCP でアドレス割り当て

/etc/netplan/99-custom.yaml
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: true
      optional: true

ルートプロパティの network と、その直下の version の指定はお決まりです。 有線 LAN などの設定は ethernets の下に記述していきます。

Wi-Fi 接続の wlan0 に固定 IP アドレスを割り当て

/etc/netplan/99-custom.yaml
network:
  version: 2
  wifis:
    wlan0:
      dhcp4: false
      access-points:
        "YOUR-SSID":
          password: "********"
      addresses: [192.168.1.20/24]
      nameservers:
        addresses: [192.168.1.1, 8.8.8.8]
      routes:
        - to: default
          via: 192.168.1.1

この例では、無線 LAN で 192.168.1.20 という固定 IP アドレスを使用するよう設定しています。 DNS サーバーと、デフォルトゲートウェイには 192.168.1.1 を指定しています。

設定を反映する

YAML ファイルを編集したら、次のように実行してネットワーク設定を反映できます。

$ sudo netplan apply

NetworkManager や networkd に設定が反映されるまで数秒かかります。

関連記事

読書メモ『やっぱりおまえはバカじゃない』吉野敬介

更新:
作成:

受験生が「やる気」を出すための本。アツい、アツすぎる。

著者の吉野敬介氏の経歴が素敵で、中学と高校で、ずっと不良、暴走族のリーダー をやってきたんだけど高校の終わりに急に大学に行きたくなって、文字通り本当に死ぬ気で勉強してみごと志望大学に合格したという人です(実話)。 ずっと予備校の講師をしてきて、2020年にはYouTuberになったみたいです。

そういえば私が高校生だったころ、吉野氏の詳細は知らなかったけど、『吉野のピタリとでる古文単語』略してピコタンという本は確かにまわりに存在してた記憶があります。 その本自体はたぶん買ってないのですけど、ピコタンって響きが面白かったので、別の単語集の表紙をすげかえて、自分でピカチュウとかピコピコリナちゃんの絵を描いて、「ピカタン」とか「ピコタン」と呼んでいました(どうでもいいですね^^;)

著者の経験の中で、試験の終わりでぶっ倒れたというのは、ちょっとやりすぎな気もしましたが、人間やればできるんだという気持ちにさせてくれる本です。 基本的にモチベーションを上げるための本だと思いますが、妙に実践的な内容もチラホラ。

形容詞や形容動詞は、どんなことがあっても辞書を引かない。これがわからないということは、ぜんぜん文章が読めていないということだからだ。 … いっぽう、動詞と名詞は完全に頭に叩き込んでおこうと思い、辞書を引に引きまくった。 … 訳を紙に書いてみる。かならず紙に書かなければだめだ。頭で思っていることと実際思っていることとは違うからだ。なんとなくわかるというのは、わかっていないのと同じこと。

ところどころ挟まる不良時代のエピソードで、「バカだなぁ」と思わせつつ、物事への打ち込み方の核心をついてきたり。

オレには東大の大学院へ行くなどという芸当はできないが、オレがやったのと同じことを「やれるもんならやってみろ」という自信はある。 … スタート地点がちがうからといって、劣等感に陥ってもしかたがないじゃないか、ということだ。客観的に見たら、競争するだけムダに見えるかもしれないが、受験をするときの最大の敵は自分だということを忘れちゃいけない。やる気と集中力があればなんとかなるんだ。

世の中には自分よりすごい人、環境にめぐまれた人なんてたくさんいます。 そんな中で達成感を味わうには、著者のように「オレほどがんばれるならやってみろ!」というくらい物事に打ち込む姿勢が大切ですね。 仕事でも遊びでも、とにかくがんばろうという気持ちにさせてくれる本です。

関連記事

メニュー

まくろぐ
サイトマップまくへのメッセージ