无法启动 netplan-wpa-wlan0.service:未找到单元 netplan-wpa-wlan0.service

无法启动 netplan-wpa-wlan0.service:未找到单元 netplan-wpa-wlan0.service

设置我的 rasbperry pi 作为我的个人生产测试机器。

我已经安装了Ubuntu 服务器 20.04.1 LTS (RPI 3/4) 64 位并拼命尝试建立无线连接。

  • 执行后,ls -la /sys/class/net我发现我的 wlan 文件夹名为wlan0
  • 因此我进入 50-cloud-init.yaml 文件并(使用正确的缩进)添加了以下块,同时用我的 wifi 信息替换了相应的字段
    wifis:
        wlan0:
            optional: true
            access-points:
                "SSID-NAME-HERE":
                    password: "PASSWORD-HERE"
            dhcp4: true
  • sudo netplan apply现在抛出标题所述的错误

我已经尝试执行以下操作: sudoedit /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg并粘贴以下行 network: {config:disabled}

sudo netplan --debug generate告诉我一些我认为有趣的事情:网络管理器:定义 wlan0 不适合我们(后端 1)

答案1

步骤 1:确定您的无线网络接口名称

有几种方法可以识别您的网络接口名称。您可以使用 ip 命令、已弃用的 ipconfig 命令或检查此文件:

ls /sys/class/net

这应该会为您提供所有可用的网络接口(以太网、wifi 和环回)。无线网络接口名称以“w”开头,通常命名为 wlanX、wlpxyz。

记下这个接口名称。您将在下一步中使用它。

第 2 步:使用 wifi 接口详细信息编辑 Netplan 配置文件

Netplan 配置文件位于 /etc/netplan 目录中。如果您检查此目录的内容,您应该会看到类似 01-network-manager-all.yml 或 50-cloud-init.yaml 的文件。

如果是 Ubuntu 服务器,则应该有 cloud-init 文件。对于桌面,它应该是 network-manager 文件。

Linux 桌面上的网络管理器允许您选择无线网络。您可以在其配置中对 wifi 接入点进行硬编码。这在某些情况下(例如暂停)可能会帮助您自动断开连接。

无论哪个文件,打开它进行编辑。我希望你对 Nano 编辑器有点熟悉,因为 Ubuntu 预装了它。

sudo nano /etc/netplan/50-cloud-init.yaml

YAML 文件对空格、缩进和对齐非常敏感。不要使用制表符,而是在看到缩进的地方使用 4 个(或 2 个,以 YAML 文件中已使用的值为准)空格。

基本上,您必须添加以下几行,其中包含接入点名称(SSID)及其密码(通常)用引号括起来:

wifis:
    wlan0:
        dhcp4: true
        optional: true
        access-points:
            "SSID_name":
                password: "WiFi_password"

再次,保持我所展示的对齐,否则 YAML 文件将不会被解析并且会引发错误。

您的完整配置文件可能如下所示:

# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. 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:
    ethernets:
        eth0:
            dhcp4: true
            optional: true
    version: 2
    wifis:
        wlan0:
            dhcp4: true
            optional: true
            access-points:
                "SSID_name":
                    password: "WiFi_password"

我觉得奇怪的是,尽管有消息称更改不会在实例重启后保留,但它仍然有效。

无论如何,使用此命令生成配置:

sudo netplan generate

现在应用这个:

sudo netplan apply

如果幸运的话,你应该已经连接上了网络。尝试 ping 网站或运行 apt update 命令。

但是,事情可能不会那么顺利,您可能会看到一些错误。如果出现这种情况,请尝试一些额外的步骤。

可能的故障排除

当您使用 netplan apply 命令时,您可能会在输出中看到如下错误:

Failed to start netplan-wpa-wlan0.service: Unit netplan-wpa-wlan0.service not found.
Traceback (most recent call last):
  File "/usr/sbin/netplan", line 23, in <module>
    netplan.main()
  File "/usr/share/netplan/netplan/cli/core.py", line 50, in main
    self.run_command()
  File "/usr/share/netplan/netplan/cli/utils.py", line 179, in run_command
    self.func()
  File "/usr/share/netplan/netplan/cli/commands/apply.py", line 46, in run
    self.run_command()
  File "/usr/share/netplan/netplan/cli/utils.py", line 179, in run_command
    self.func()
  File "/usr/share/netplan/netplan/cli/commands/apply.py", line 173, in command_apply
    utils.systemctl_networkd('start', sync=sync, extra_services=netplan_wpa)
  File "/usr/share/netplan/netplan/cli/utils.py", line 86, in systemctl_networkd
    subprocess.check_call(command)
  File "/usr/lib/python3.8/subprocess.py", line 364, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['systemctl', 'start', '--no-block', 'systemd-networkd.service', 'netplan-wpa-wlan0.service']' returned non-zero exit status 5.

可能是 wpa_supplicant 服务未运行。运行以下命令:

sudo systemctl start wpa_supplicant

再次运行 netplan apply。如果它很好地解决了问题。否则,使用以下命令关闭您的 Ubuntu 系统:

shutdown now

再次启动你的 Ubuntu 系统,登录并再次生成和应用 netplan:

sudo netplan generate
sudo netplan apply

现在可能会显示警告(而不是错误)。这是警告,不是错误。我检查了正在运行的 systemd 服务,发现 netplan-wpa-wlan0.service 已在运行。可能显示警告是因为它已在运行,并且“netplan apply”更新了配置文件(即使没有任何更改)。

Warning: The unit file, source configuration file or drop-ins of netplan-wpa-wlan0.service changed on disk. Run 'systemctl daemon-reload' to reload units.

这并不重要,您可以通过运行 apt update 来检查互联网是否已经正常运行。

答案2

sudo systemctl start wpa_supplicant

答案是 - 谢谢

相关内容