设置我的 rasbperry pi 作为我的个人生产测试机器。
我已经安装了ubuntu 服务器 20.04.1 LTS (RPI 3/4) 64 位,并拼命尝试在其上设置无线连接。
ls -la /sys/class/net告诉我我的 wlan 文件夹名为wlan0。 wifis:
wlan0:
optional: true
access-points:
"SSID-NAME-HERE":
password: "PASSWORD-HERE"
dhcp4: true
Run Code Online (Sandbox Code Playgroud)
sudo netplan apply现在抛出标题中所述的错误我已经尝试执行以下操作:
sudoedit /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg并粘贴了该行
network: {config:disabled}
sudo netplan --debug generate告诉我一些有趣的事情,我认为:Networkmanager:定义 wlan0 不适合我们(后端 1)
小智 7
步骤 1:识别您的无线网络接口名称
\n有多种方法可以识别您的网络接口名称。您可以使用 ip 命令、已弃用的 ipconfig 命令或检查此文件:
\nls /sys/class/net\nRun Code Online (Sandbox Code Playgroud)\n这将为您提供所有可用的网络接口(以太网、wifi 和环回)。无线网络接口名称以 \xe2\x80\x98w\xe2\x80\x99 开头,通常命名类似于 wlanX、wlpxyz。
\n记下该接口名称。您\xe2\x80\x99 将在下一步中使用它。
\n步骤 2:使用 wifi 接口详细信息编辑 Netplan 配置文件
\nNetplan 配置文件位于 /etc/netplan 目录中。如果检查此目录的内容,您应该会看到 01-network-manager-all.yml 或 50-cloud-init.yaml 等文件。
\n如果是 Ubuntu 服务器,则应该有 cloud-init 文件。对于台式机,它应该是网络管理器文件。
\nLinux 桌面上的网络管理器允许您选择无线网络。您可以在其配置中对 WiFi 接入点进行硬编码。这可以在某些情况下(例如挂起)连接自动断开的情况下为您提供帮助。
\n无论是哪个文件,都将其打开进行编辑。我希望您对 Nano 编辑器有点熟悉,因为 Ubuntu 预装了它。
\nsudo nano /etc/netplan/50-cloud-init.yaml\nRun Code Online (Sandbox Code Playgroud)\nYAML 文件对空格、缩进和对齐非常敏感。不要\xe2\x80\x99t 使用制表符,在看到缩进的地方使用 4 个(或 2 个,以 YAML 文件中已使用的为准)空格。
\n基本上,您\xe2\x80\x99必须添加以下行,并将接入点名称(SSID)及其密码(通常)放在引号中:
\nwifis:\n wlan0:\n dhcp4: true\n optional: true\n access-points:\n "SSID_name":\n password: "WiFi_password"\nRun Code Online (Sandbox Code Playgroud)\n再次,保持我所显示的对齐方式,否则 YAML 文件将无法解析\xe2\x80\x99,并且会引发错误。
\n您的完整配置文件可能如下所示:
\n# This file is generated from information provided by the datasource. Changes\n# to it will not persist across an instance reboot. To disable cloud-init's\n# network configuration capabilities, write a file\n# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:\n# network: {config: disabled}\nnetwork:\n ethernets:\n eth0:\n dhcp4: true\n optional: true\n version: 2\n wifis:\n wlan0:\n dhcp4: true\n optional: true\n access-points:\n "SSID_name":\n password: "WiFi_password"\nRun Code Online (Sandbox Code Playgroud)\n我觉得奇怪的是,尽管有消息称更改不会在实例重新启动后持续存在,但它仍然有效。
\n无论如何,使用以下命令生成配置:
\nsudo netplan generate\nRun Code Online (Sandbox Code Playgroud)\n现在应用这个:
\nsudo netplan apply\nRun Code Online (Sandbox Code Playgroud)\n如果幸运的话,您应该已连接网络。尝试 ping 网站或运行 apt update 命令。
\n但是,事情可能不会那么顺利,您可能会看到一些错误。如果是这种情况,请尝试一些额外的步骤。
\n可能的故障排除
\n当您使用 netplan apply 命令时,您可能会在输出中看到如下错误:
\nFailed to start netplan-wpa-wlan0.service: Unit netplan-wpa-wlan0.service not found.\nTraceback (most recent call last):\n File "/usr/sbin/netplan", line 23, in <module>\n netplan.main()\n File "/usr/share/netplan/netplan/cli/core.py", line 50, in main\n self.run_command()\n File "/usr/share/netplan/netplan/cli/utils.py", line 179, in run_command\n self.func()\n File "/usr/share/netplan/netplan/cli/commands/apply.py", line 46, in run\n self.run_command()\n File "/usr/share/netplan/netplan/cli/utils.py", line 179, in run_command\n self.func()\n File "/usr/share/netplan/netplan/cli/commands/apply.py", line 173, in command_apply\n utils.systemctl_networkd('start', sync=sync, extra_services=netplan_wpa)\n File "/usr/share/netplan/netplan/cli/utils.py", line 86, in systemctl_networkd\n subprocess.check_call(command)\n File "/usr/lib/python3.8/subprocess.py", line 364, in check_call\n raise CalledProcessError(retcode, cmd)\nsubprocess.CalledProcessError: Command '['systemctl', 'start', '--no-block', 'systemd-networkd.service', 'netplan-wpa-wlan0.service']' returned non-zero exit status 5.\nRun Code Online (Sandbox Code Playgroud)\nwpa_supplicant 服务可能未运行。运行这个命令:
\nsudo systemctl start wpa_supplicant\nRun Code Online (Sandbox Code Playgroud)\n再次运行 netplan apply。如果它能很好地解决问题。否则,请使用以下命令关闭 Ubuntu 系统:
\nshutdown now\nRun Code Online (Sandbox Code Playgroud)\n再次启动你的Ubuntu系统,登录并再次生成并应用netplan:
\nsudo netplan generate\nsudo netplan apply\nRun Code Online (Sandbox Code Playgroud)\n现在可能会显示警告(而不是错误)。这是警告而不是错误。我检查了正在运行的systemd服务,发现netplan-wpa-wlan0.service已经在运行。可能它显示了警告,因为它已经在运行并且 \xe2\x80\x98netplan apply\xe2\x80\x99 更新了配置文件(即使没有任何更改)。
\nWarning: The unit file, source configuration file or drop-ins of netplan-wpa-wlan0.service changed on disk. Run 'systemctl daemon-reload' to reload units.\nRun Code Online (Sandbox Code Playgroud)\n这并不重要,您可以通过运行 apt update 来检查互联网是否已经正常工作。
\n