如何使用“netplan”为 Ubuntu 服务器设置 Raspberry Pi 3 板载 WiFi?

如何使用“netplan”为 Ubuntu 服务器设置 Raspberry Pi 3 板载 WiFi?

如何为 Ubuntu Server 18.04 设置 Raspberry Pi 3 B+ 板载 WiFi?具体来说,使用netplan?

现有的答案,例如“如何在搭载 Ubuntu Server 16.04 的 Raspberry Pi 3 上使用板载 WiFi?”,似乎不再适用,因为/etc/network/interfaces已经netplan取代了ifupdown

# ifupdown has been replaced by netplan(5) on this system.  See
# /etc/netplan for current configuration.

这是全新安装的适用于 Raspberry Pi 3 的 Ubuntu 服务器映像

##### release ###########################
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:    18.04
Codename:   bionic

##### kernel ############################
Linux 4.15.0-1034-raspi2 #36-Ubuntu SMP PREEMPT Fri Apr 5 06:21:41 UTC 2019 aarch64 aarch64 aarch64 GNU/Linux

根据Ubuntu 维基百科 RaspberryPI所需的软件包应该已经准备好了。

自 18.04.2 起,linux-firmware 和 linux-firmware-raspi2 软件包现在包含 Pi 3B 和 3B+ 上内置 WiFi 所需的文件。

sudo lshw -C network

*-network:0 DISABLED      
   description: Wireless interface
   physical id: 2
   logical name: wlan0
   serial: b8:27:eb:69:f2:3b
   capabilities: ethernet physical wireless
   configuration: broadcast=yes driver=brcmfmac driverversion=7.45.18 firmware=01-6a2c8ad4 multicast=yes wireless=IEEE 802.11
*-network:1
   description: Ethernet interface
   physical id: 3
   logical name: eth0
   serial: b8:27:eb:3c:a7:6e
   size: 1Gbit/s
   capacity: 1Gbit/s
   capabilities: ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
   configuration: autonegotiation=on broadcast=yes driver=lan78xx driverversion=1.0.6 duplex=full ip=172.16.76.7 link=yes multicast=yes port=MII speed=1Gbit/s

Netplan.io 提供了一些常规Netplan 配置示例

要配置 netplan,请将配置文件保存在扩展名下/etc/netplan/.yaml例如/etc/netplan/config.yaml),然后运行sudo netplan apply

...然而,没有针对 RaspberryPi 的具体指导。...特别是关于现有的 /etc/netplan/50-cloud-init.yaml在 RaspberryPi Ubuntu Server 安装上查看文件。

##### Netplan config ####################

[/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
    ethernets:
        eth0:
            dhcp4: true
            match:
                macaddress: <MAC 'eth0' [IF1]>
            set-name: eth0

因此,考虑到使用netplan和默认生成.yaml文件。如何添加WiFi 网络 SSID 和密码?并保留现有的有线以太网?

答案1

以下步骤被发现可在 Raspberry Pi 3 B+ 上使用netplanUbuntu Server 18.04映像提供持久的 WiFi 设置。ubuntu-18.04.2-preinstalled-server-arm64+raspi3.img.xz

更新系统:

sudo apt update
sudo apt full-upgrade
sudo reboot

确定接口名称:

ip link show

# 1: lo: <LOOPBACK,UP,LOWER_UP> …
# 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> … state UP …
# 3: wlan0: <BROADCAST,MULTICAST> … state DOWN 

确定 your-cloud-init.yaml 并打开进行编辑。

cd /etc/netplan/
ls -l
# -rw-r--r-- 1 root root 666 May 15 22:00 50-cloud-init.yaml
### note your *cloud-init.yaml file name

### backup *cloud-init.yaml file
cp 50-cloud-init.yaml 50-cloud-init.yaml.bak
### restrict read access
sudo chmod 640 /etc/netplan/50-cloud-init.yaml
### edit *cloud-init.yaml
sudo nano 50-cloud-init.yaml

将 WiFi 访问信息添加到 your-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
    ethernets:
        eth0:
            optional: true
            dhcp4: true
    # add wifi setup information here ...
    wifis:
        wlan0:
            optional: true
            access-points:
                "YOUR-SSID-NAME":
                    password: "YOUR-NETWORK-PASSWORD"
            dhcp4: true

测试、生成并应用更改后的 your-cloud-init.yaml 配置:

  • 测试:(sudo netplan --debug try成功则继续)
  • 生成:(sudo netplan --debug generate如果上一个命令出现问题,则提供更多详细信息)
  • 应用:(sudo netplan --debug apply如果前面的命令没有问题)

确认测试:

sudo reboot

### wait, then without the wired ethernet connected ... 
ssh ubuntu@wifi-ip-address

上述序列是从“使用 Ubuntu Server 18.04 ARM 映像和 Netplan 的 Raspberry Pi 3B/B+ 无线网桥“要点链接提及拉尔努。其要点远不止启用 WiFi,因为它将 Pi 变成了一座桥梁。


一些额外的有用的 WiFi 设置步骤。

设置主机名。

sudo hostnamectl set-hostname my-server-name

sudo nano /etc/hosts

127.0.0.1 localhost
# add host name
127.0.0.1 my-server-name

sudo nano /etc/cloud/cloud.cfg

# Set preserve_hostname to true for persistance after reboot
preserve_hostname: true

从本地 Raspberry Pi 命令行验证。

hostnamectl
#   Static hostname: my-server-name
#         Icon name: computer
#        Machine ID: …
#           Boot ID: …
#  Operating System: Ubuntu 18.04.2 LTS
#            Kernel: Linux 4.15.0-1036-raspi2
#      Architecture: arm64

启用 mDNS。

如果需要,启用多播 DNS通过安装阿瓦希。Avahi 支持 mDNS/DNS-SD/RFC 3927/Zeroconf/Bonjour 规范。

sudo apt install avahi-daemon 

从另一台计算机远程检查 mDNS 解析。

ping my-server-name.local
ssh [email protected]

答案2

问题是由于这个错误https://bugs.launchpad.net/ubuntu/+source/netplan.io/+bug/1874377

目前,Ubuntu 20.04.1 需要重新启动,尽管该问题应该已得到解决。有线互联网立即连接。Ubuntu 20.10 目前无需重新启动即可连接到 wifi。

答案3

如果您使用的是 Broadcom 43430 Wifi 芯片组,则当前 Ubuntu 20.04 LTS 中的驱动程序缺少 clm_blob。我在更新中丢失了 WiFi。解决此问题的唯一方法是切换到 Alpine 并安装固件 Cypress APK。我希望 Ubuntu 能尽快修复此问题!

相关内容