Switch WiFi config from NetworkManager to Netplan+wpa_supplicant
Armbian minimal uses systemd-networkd+wpa_supplicant via Netplan, not NM. Write Netplan YAML, wpa_supplicant-wlan0.conf, and networkd .network file. Enable wpa_supplicant@wlan0.service via symlink if template exists.
This commit is contained in:
+48
-27
@@ -478,42 +478,63 @@ info "Mounted at ${MOUNT_POINT} ($(blkid -o value -s TYPE "${_ROOTFS_PART:-/dev/
|
||||
# ══════════════════════════════════════════════════════════════════════════════
|
||||
section "Applying Configuration"
|
||||
|
||||
# WiFi profile
|
||||
# WiFi profile — Armbian uses Netplan + wpa_supplicant (not NetworkManager)
|
||||
if [[ -n "$WIFI_SSID" ]]; then
|
||||
step "Writing WiFi profile..."
|
||||
NM_DIR="${MOUNT_POINT}/etc/NetworkManager/system-connections"
|
||||
NM_FILE="${NM_DIR}/wifi-bb.nmconnection"
|
||||
mkdir -p "$NM_DIR"
|
||||
|
||||
WIFI_UUID=$(cat /proc/sys/kernel/random/uuid)
|
||||
cat > "$NM_FILE" << EOF
|
||||
[connection]
|
||||
id=wifi-bb
|
||||
uuid=${WIFI_UUID}
|
||||
type=wifi
|
||||
autoconnect=true
|
||||
autoconnect-priority=10
|
||||
# Netplan config (primary — renderer: networkd)
|
||||
mkdir -p "${MOUNT_POINT}/etc/netplan"
|
||||
cat > "${MOUNT_POINT}/etc/netplan/20-wifi.yaml" << EOF
|
||||
network:
|
||||
version: 2
|
||||
renderer: networkd
|
||||
wifis:
|
||||
wlan0:
|
||||
dhcp4: yes
|
||||
dhcp6: no
|
||||
access-points:
|
||||
"${WIFI_SSID}":
|
||||
password: "${WIFI_PASS}"
|
||||
EOF
|
||||
chmod 600 "${MOUNT_POINT}/etc/netplan/20-wifi.yaml"
|
||||
|
||||
[wifi]
|
||||
mode=infrastructure
|
||||
ssid=${WIFI_SSID}
|
||||
# wpa_supplicant direct config (backup — used by wpa_supplicant@wlan0.service)
|
||||
mkdir -p "${MOUNT_POINT}/etc/wpa_supplicant"
|
||||
cat > "${MOUNT_POINT}/etc/wpa_supplicant/wpa_supplicant-wlan0.conf" << EOF
|
||||
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
|
||||
update_config=1
|
||||
country=US
|
||||
|
||||
[wifi-security]
|
||||
auth-alg=open
|
||||
key-mgmt=wpa-psk
|
||||
psk=${WIFI_PASS}
|
||||
network={
|
||||
ssid="${WIFI_SSID}"
|
||||
psk="${WIFI_PASS}"
|
||||
key_mgmt=WPA-PSK
|
||||
scan_ssid=1
|
||||
}
|
||||
EOF
|
||||
chmod 600 "${MOUNT_POINT}/etc/wpa_supplicant/wpa_supplicant-wlan0.conf"
|
||||
|
||||
[ipv4]
|
||||
method=auto
|
||||
# systemd-networkd config for wlan0 DHCP
|
||||
mkdir -p "${MOUNT_POINT}/etc/systemd/network"
|
||||
cat > "${MOUNT_POINT}/etc/systemd/network/10-wifi-wlan0.network" << EOF
|
||||
[Match]
|
||||
Name=wlan0
|
||||
|
||||
[ipv6]
|
||||
addr-gen-mode=stable-privacy
|
||||
method=auto
|
||||
[Network]
|
||||
DHCP=yes
|
||||
IPv6PrivacyExtensions=yes
|
||||
EOF
|
||||
|
||||
chmod 600 "$NM_FILE"
|
||||
chown root:root "$NM_FILE"
|
||||
info "WiFi profile written (SSID: ${WIFI_SSID}, UUID: ${WIFI_UUID})"
|
||||
# Enable wpa_supplicant@wlan0 if the template service exists
|
||||
WPA_TEMPLATE="${MOUNT_POINT}/lib/systemd/system/wpa_supplicant@.service"
|
||||
WPA_WANTS="${MOUNT_POINT}/etc/systemd/system/multi-user.target.wants"
|
||||
if [[ -f "$WPA_TEMPLATE" ]]; then
|
||||
mkdir -p "$WPA_WANTS"
|
||||
ln -sf /lib/systemd/system/wpa_supplicant@.service \
|
||||
"${WPA_WANTS}/wpa_supplicant@wlan0.service"
|
||||
fi
|
||||
|
||||
info "WiFi profile written (SSID: ${WIFI_SSID})"
|
||||
fi
|
||||
|
||||
# Root password
|
||||
|
||||
Reference in New Issue
Block a user