LoginSignup
1
3

More than 3 years have passed since last update.

LANケーブルだけでRaspberryPi2へUbuntuのインストール・初期設定

Last updated at Posted at 2019-05-10

やりたいこと

ディスプレイ・キーボード・マウスなし、ネット環境はWi-Fiしかない環境で、LANケーブルだけでRaspberryPi2へUbuntuのインストールと初期設定を行う

お願い

試行錯誤してやっているので間違っている部分や勘違いしている部分があるかもしれません:sweat_drops:
もし見つけられたらご指摘いただけると嬉しいです:smiley:

環境

  • Mac OS X High Sierra
  • Raspberry Pi 2
  • Ubuntu 18.04.2 LTS(ラズパイにインストールしたUbuntuのバージョン)
  • ディスプレイ・キーボード・マウスなし
  • ネット環境はWi-Fiのみ(有線LANなし)
  • PLANEX 無線LAN子機 GW-USNANO2A
  • SD Card 32GB
  • LANケーブル(ストレートケーブル)

全体の流れ

  • Ubuntuインストール
    • 公式サイトからラズパイ用のUbuntuをダウンロード
    • SDカードにUbuntuを書き込み
    • ラズパイにSDカードを挿入して電源をオン
  • Macからラズパイに接続
    • MacとラズパイをLANケーブル(ストレートケーブル)で繋ぐ
    • ラズパイにIPアドレスを割り当てるため、Mac側で設定
    • MacからARPのキャッシュテーブルを参照してラズパイのIPアドレスを確認
    • MacからSSHでラズパイに接続
  • 初期設定
    • Wi-Fi設定

手順

Ubuntuインストール

  • 公式サイトからラズパイ用のUbuntuをダウンロード
  • SDカードにUbuntuを書き込み
  • ラズパイにSDカードを挿入して電源をオン

Install Ubuntu Server on a Raspberry Pi 2 or 3 | Ubuntu

こちらの公式サイトの通りに進めればOK

# バージョン確認
$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="18.04.2 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.2 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

Macからラズパイに接続

まずはLANケーブル(ストレートケーブル)でMacとラズパイを接続します。
そのままではIPアドレスが割り当てられないので(?ここ理解が曖昧です:sweat_drops:)、Mac側の機能を使ってIPアドレスが割り当てられるようにします。

ラズパイにIPアドレスを割り当てるため、Mac側で設定

  • システム環境設定 -> 共有で「インターネット共有」にチェックを入れる
  • 「相手のコンピュータが使用するポート」は「Ethernet」にチェックを入れる

Macのインターネット共有の機能は、MacをWi-Fiのアクセスポイントにする機能です。
そのため、インターネット共有しているMac自身がNAT変換をしDHCPサーバとして動作するようになるため、それに繋がっているラズパイにも自動的にIPアドレスを割り当ててくれます。

MacからARPのキャッシュテーブルを参照してラズパイのIPアドレスを確認

# 接続されている全てのホストの情報を表示
$ arp -a

192.168.2.xのIPアドレスが割り当てられるようです。

MacからSSHでラズパイに接続

# SSHで接続
# ssh ubuntu@[ラズパイのIPアドレス]
$ ssh ubuntu@192.168.2.1

ユーザ名とパスワードは公式サイトにも記載がありますが以下の通りです。
初回はログインしてすぐにパスワードを変更するように求められますので、変更しましょう。

ユーザ名: ubuntu
パスワード: ubuntu

初期設定

Wi-Fi設定

有線のままでは煩わしいので、コマンドラインからWi-Fiの設定をします。

まずは周辺のアクセスポイントをスキャンしてみる

# Wireless tools for Linux をインストール
sudo apt install wireless-tools

# Wi-Fiのインターフェース名を確認
# 「wlan0」がインターフェース名
$ iwconfig
wlan0     IEEE 802.11  ESSID:off/any
          Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:off

eth0      no wireless extensions.

lo        no wireless extensions.

# アクセスポイントをスキャン
# いくつかSSIDが出てこればOK、接続したいSSIDを控えておく
# sudo iwlist [インターフェース名] scan
sudo iwlist wlan0 scan | grep ESSID

SSIDとパスワードを登録、ブート時に自動的に接続するようにする

調べると、よく/etc/network/interfacesに設定を書き込むという方法が出てくるのですが、このUbuntuのバージョン(18.04.2)ではnetplanコマンドを使って設定するように変更になっているようです。

# 「/etc/network/interfaces」を開くと、「ifupdown は netplan に置き換えられました」と書いてある
$ cat /etc/network/interfaces 
# ifupdown has been replaced by netplan(5) on this system.  See
# /etc/netplan for current configuration.
# To re-enable ifupdown on this system, you can run:
#    sudo apt install ifupdown

netplanコマンドを使って設定していきます。

$ ll /etc/netplan/
total 16
drwxr-xr-x  2 root root 4096 May 10 05:35 ./
drwxr-xr-x 99 root root 4096 May  9 23:30 ../
-rw-r--r--  1 root root  478 May 10 05:35 50-cloud-init.yaml

設定ファイルは50-cloud-init.yamlしか無いようなので、このファイルを編集していきます。
今回は以下のように編集。

/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.
# 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:
    version: 2
    wifis:
        wlan0:
            access-points:
                "[接続するSSID]":
                    password: "[パスワード]"
            dhcp4: true
            dhcp6: true

書き方の詳細は公式サイトが参考になります。

  • パスワードは平文でそのまま記載
  • インデントがずれると反映したときにエラーになるので間違えないように
# 設定を反映(反映自体は再起動は不要)
$ sudo netplan apply

# 起動時にきちんと自動的にWi-Fiに繋がるかを確認するため、一旦再起動
$ sudo reboot

しばらく時間を置いてからSSHで接続しようとするも、入れない…:disappointed_relieved:

仕方なく仮設的にラズパイにディスプレイを接続して確認したところ、なぜか直にログインするとWi-Fiネットワークに接続されるらしい。
ログイン前に接続してほしいなー。

現状を確認してみると、NetworkManagerとnetworkdが両方ブート時に自動起動している状態。

$ systemctl is-enabled systemd-networkd
enabled

$ systemctl is-enabled network-manager
enabled

$ systemctl status systemd-networkd
● systemd-networkd.service - Network Service
   Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-05-10 12:57:05 UTC; 51min ago
     Docs: man:systemd-networkd.service(8)
 Main PID: 1135 (systemd-network)
   Status: "Processing requests..."
    Tasks: 1 (limit: 2151)
   CGroup: /system.slice/systemd-networkd.service
           └─1135 /lib/systemd/systemd-networkd

May 10 13:33:15 ubuntu systemd-networkd[1135]: wlan0: Gained carrier
May 10 13:33:15 ubuntu systemd-networkd[1135]: wlan0: Lost carrier
May 10 13:33:15 ubuntu systemd-networkd[1135]: wlan0: Gained carrier
May 10 13:33:16 ubuntu systemd-networkd[1135]: wlan0: DHCPv4 address 192.168.128.113/24 via 192.168.128
May 10 13:33:25 ubuntu systemd-networkd[1135]: wlan0: Lost carrier
May 10 13:33:25 ubuntu systemd-networkd[1135]: wlan0: DHCP lease lost
May 10 13:33:25 ubuntu systemd-networkd[1135]: wlan0: Gained carrier
May 10 13:33:25 ubuntu systemd-networkd[1135]: wlan0: Lost carrier
May 10 13:33:25 ubuntu systemd-networkd[1135]: wlan0: Gained carrier
May 10 13:33:26 ubuntu systemd-networkd[1135]: wlan0: DHCPv4 address 192.168.128.113/24 via 192.168.128

$ systemctl status network-manager
● NetworkManager.service - Network Manager
   Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-05-10 12:59:13 UTC; 49min ago
     Docs: man:NetworkManager(8)
 Main PID: 1193 (NetworkManager)
    Tasks: 3 (limit: 2151)
   CGroup: /system.slice/NetworkManager.service
           └─1193 /usr/sbin/NetworkManager --no-daemon

May 10 13:33:05 ubuntu NetworkManager[1193]: <warn>  [1557495185.4893] device (wlan0): re-acquiring supplicant interface (#3).
May 10 13:33:05 ubuntu NetworkManager[1193]: <error> [1557495185.6193] sup-iface[0xe4a148,wlan0]: error adding interface: wpa_supplicant couldn't grab this interface.
May 10 13:33:05 ubuntu NetworkManager[1193]: <info>  [1557495185.6198] device (wlan0): supplicant interface state: starting -> down
May 10 13:33:15 ubuntu NetworkManager[1193]: <warn>  [1557495195.4973] device (wlan0): re-acquiring supplicant interface (#4).
May 10 13:33:15 ubuntu NetworkManager[1193]: <error> [1557495195.6348] sup-iface[0xe4a1b0,wlan0]: error adding interface: wpa_supplicant couldn't grab this interface.
May 10 13:33:15 ubuntu NetworkManager[1193]: <info>  [1557495195.6351] device (wlan0): supplicant interface state: starting -> down
May 10 13:33:25 ubuntu NetworkManager[1193]: <warn>  [1557495205.4977] device (wlan0): re-acquiring supplicant interface (#5).
May 10 13:33:25 ubuntu NetworkManager[1193]: <error> [1557495205.6387] sup-iface[0xe4a218,wlan0]: error adding interface: wpa_supplicant couldn't grab this interface.
May 10 13:33:25 ubuntu NetworkManager[1193]: <info>  [1557495205.6390] device (wlan0): supplicant interface state: starting -> down
May 10 13:33:25 ubuntu NetworkManager[1193]: <info>  [1557495205.6393] device (wlan0): supplicant interface keeps failing, giving up

NetworkManagerが思いっきりコケてる!

/etc/netplan/50-cloud-init.yamlrenderer: networkdだけ指定すればnetworkdの方を使ってくれるかなと思ったら上手くいかなかった。

NetworkManagerを使わないよう、自動起動をオフにする。

# NetworkManagerの自動起動をオフにする
$ sudo systemctl disable network-manager
Synchronizing state of network-manager.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable network-manager
Removed /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.

# 自動起動設定がオフになっていることを確認
$ systemctl is-enabled network-manager
disabled

# 再び再起動
$ sudo reboot

しばらくしてSSHで接続できることを確認!やった!:sparkles:

Wi-Fiのルータから取得したIPアドレスが割り当てられているのが確認できる。

$ iwconfig
wlan0     IEEE 802.11  ESSID:"[接続しているSSID]" # <- きちんと指定のSSIDに接続されている
          Mode:Managed  Frequency:2.462 GHz  Access Point: F4:CB:52:F3:43:C2   
          Bit Rate=150 Mb/s   Tx-Power=20 dBm   
          Retry short limit:7   RTS thr=2347 B   Fragment thr:off
          Power Management:off
          Link Quality=70/70  Signal level=-36 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:92   Missed beacon:0

eth0      no wireless extensions.

lo        no wireless extensions.

$ ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 416  bytes 30148 (30.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 416  bytes 30148 (30.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.128.113  netmask 255.255.255.0  broadcast 192.168.128.255 # <- きちんとIPが割り当てられている
        ether 00:22:cf:f5:c8:95  txqueuelen 1000  (Ethernet)
        RX packets 109  bytes 14707 (14.7 KB)
        RX errors 0  dropped 2  overruns 0  frame 0
        TX packets 83  bytes 15529 (15.5 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ちなみにMacからnmapでスキャンすると、

$ nmap 192.168.128.113 -p 22
Starting Nmap 7.70 ( https://nmap.org ) at 2019-05-11 00:10 JST
Nmap scan report for ubuntu (192.168.128.113)
Host is up (0.0072s latency).

PORT   STATE SERVICE
22/tcp open  ssh

Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

割り当てられた192.168.128.113でSSH接続が可能なことが確認できる。

[余談] ネットワークマネージャーの種類とまとめ

  • Netplan
    • ネットワークの設定を抽象化
    • 設定はYAML形式で記述する
    • 設定ファイルは/etc/netplan/*.yaml
    • バックエンドとして「NetworkManager」や「networkd」を使う
  • WiFiとWWANに関しては、NetworkManagerが制御する
  • その他の制御デバイスに関しては、特定のデバイスを指定しない限り、デフォルトでnetworkdが制御する

Netplanとは - komeの備忘録

$ systemctl status network-manager
$ systemctl start network-manager
$ systemctl stop network-manager

# 自動起動設定の確認
$ systemctl is-enabled network-manager
enabled

$ nmcli
  • networkd
$ systemctl status systemd-networkd
$ systemctl start systemd-networkd
$ systemctl stop systemd-networkd

# 自動起動設定の確認
$ systemctl is-enabled systemd-networkd
enabled

参考にしたサイト

1
3
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
1
3