1
2

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.

モニターとキーボードを使わずにラズパイ(bullseye)にNetworkManagerを導入する

Last updated at Posted at 2023-11-24

この記事について

2023.10.13からラズパイOSのbullseyeはLEGACY扱いになりましたが未だにbullseyeを使いたい場面があります。

bullseyeを使うがネットワークはNetworkManagerで制御したい場合、raspi-configでの切り替え後にモニターとキーボードが必要になるようです(2023.11.24著者確認の限り)。

そこでモニターとキーボード接続の手間を省くためのシェルスクリプトを作成しました。

環境・設定

Raspberry Pi: Raspberry Pi 4 Model B Rev 1.2
OS: Raspberry Pi OS Lite 64-bit (Debian GNU/Linux 11 (bullseye))
static ip public subnet: 192.168.1.100
static route / dns public subnet: 192.168.1.1

シェルスクリプト

NetworkManager有効化後に再起動して設定する必要があったのでスクリプトを2つに分けました。

dhcpcd/wpa_supplicant無効化とNetworkManager有効化

raspi-configでNetworkManagerを有効化した後にdhcpcdとwpa_supplicant.confの設定を無効化します。

preset_nm.sh

preset_nm.sh
#!/bin/bash

#NM有効化
sudo raspi-config nonint do_netconf 2

#wpa_supplicant無効化
sudo systemctl stop wpa_supplicant
sudo systemctl disable wpa_supplicant
sudo rm /etc/wpa_supplicant/wpa_supplicant.conf

#dhcpcd無効化
sudo systemctl stop dhcpcd
sudo systemctl disable dhcpcd

sudo reboot

NetworkManagerの無線接続設定

作る環境に応じてCON_MANEからSTATIC_DNSまでを書き換えます。
自分の用途ではipv6は無効にします。
明示的に有線設定が必要な場合は書き足しますがここでは省略します。

wlan0_up.sh

wlan0_up.sh
#!/bin/bash

sleep 10

CON_NAME="w0-1"
SSID="MySSID"
PSK="MyPSK"
STATIC_IP="192.168.1.100/24"
STATIC_ROUTE="192.168.1.1"
STATIC_DNS="192.168.1.1"

sudo nmcli connection add con-name $CON_NAME \
type wifi \
ifname wlan0 \
connection.autoconnect yes \
wifi.mode infrastructure \
wifi.ssid $SSID \
802-11-wireless-security.auth-alg open \
802-11-wireless-security.key-mgmt wpa-psk \
802-11-wireless-security.psk $PSK \
ipv4.addresses $STATIC_IP \
ipv4.gateway $STATIC_ROUTE \
ipv4.method manual \
ipv4.dns $STATIC_DNS \
ipv4.never-default no \
ipv6.method disabled

sudo nmcli c up $CON_NAME

動的にipを取りたい場合は以下です。

wlan0_up.sh
#!/bin/bash

sleep 10

CON_NAME="w0-1"
SSID="MySSID"
PSK="MyPSK"

sudo nmcli connection add con-name $CON_NAME \
type wifi \
ifname wlan0 \
connection.autoconnect yes \
wifi.mode infrastructure \
wifi.ssid $SSID \
802-11-wireless-security.auth-alg open \
802-11-wireless-security.key-mgmt wpa-psk \
802-11-wireless-security.psk $PSK \
ipv4.method auto \
ipv4.never-default no \
ipv6.method disabled

sudo nmcli c up $CON_NAME

導入

ラズパイOSを書き込んだmicroSDカードでラズパイを立ち上げてssh接続、以下の操作をします。

sudo apt update
sudo apt -y upgrade
sudo apt install -y postfix

preset_nm.shwlan0_up.shをラズパイのuser directoryに配置します。


実行権限をつけます。

sudo chmod +x *.sh

再起動後にwlan0_up.shを実行するためにcronの設定をします。

crontab -e

@reboot sh ~/wlan0_up.sh

preset_nm.shを実行してNetworkManagerを有効化、再起動します。

./preset_nm.sh

確認

再起動時にwlan0_up.shが実行されてdhcpcdからNetworkManagerによる制御に切り替わっていることを確認します。

nmcli c

wlan0_up.shで設定した接続設定(w0-1)の有効化が確認できました。
NetworkManagerへの切り替えが確認できたのでwlan0_up.shの起動時実行を解除します。

crontab -r

これで検証環境を作る時などに使えるテンプレが出来ました。

参考文献

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?