Raspberry Pi Zero 单板配置手记(三)使用 NetworkManager 管理网络连接
RPi Zero 使用 NetworkManager 管理网络连接
- 前言
- 一、准备工作
- 1. 工具/材料
- 2. 登录到树莓派并配置网络共享
- 3. 安装必备工具
- 二、安装 NetworkManager
- 1. 建立虚拟终端
- 2. 安装 NetworkManager
- 3. 验证安装
- 4. 处理冲突
- 5. 启用服务并修改默认配置
- 6. 重新配置网络
- 7. 删除 `dhcpcd5`
- 收尾
本文章为系列文章《Raspberry Pi Zero 单板配置手记》的第三篇,上一篇为《Raspberry Pi Zero 单板配置手记(二)登录到树莓派并共享网络》。
因个人需求,只对单板的树莓派 (不含显示器、摄像头等外设,此 Zero 版本也不含无线模块) 及各种基本系统配置进行叙述。
前言
前文中提到,通过 wpa_supplicant
进行网络连接的管理并不方便,想要临时切换连接到其他无线网络比较困难,因此我们将使用 NetworkManager
代替之。
本次操作需更换网络连接管理程序,会导致无线网络连接中断并无法自动重连,故而需按照本系列文章之篇二,通过 USB 连接树莓派。
一、准备工作
1. 工具/材料
- 已经配置好的树莓派 Zero
- USB-microUSB 数据线(供电/连接电脑用,至少能承载 1A 电流)
- Linux 主机或安装有 putty/ssh 的 Windows 主机
2. 登录到树莓派并配置网络共享
通过 USB 登录,参考本系列文章之篇二。
3. 安装必备工具
树莓派系统中需提前安装以下工具
screen
用于建立虚拟终端(可用tmux
代替,本文仅以screen
为例)
$ sudo apt install --no-install-recommends -y \screen
二、安装 NetworkManager
1. 建立虚拟终端
虚拟终端有一个非常优秀的特点,那就是在远程连接意外中断时,虚拟终端可在后台继续运行。恰好可应用于本次场景之中。
$ screen -S network # 新建一个 screen 虚拟终端会话
建立好虚拟终端后,我们可用如下方式对虚拟终端进行管理
脱离(切换到后台):Ctrl+A, Ctrl+D
新建:Ctrl+A, N
切换:Ctrl+A, Ctrl+A
在终端外,可用命令重新连接到虚拟终端
$ screen -r 会话名称 # 连接 (attach) 一个脱离的 (detached) 终端
$ screen -d -r 会话名称 # 强行使一个虚拟终端连接到当前终端
仅作示例,更多操作方法请按 Ctrl+A, ? 参考 screen
的帮助信息。本文中可能仅会用到一个 screen -d -r
。
2. 安装 NetworkManager
在之前创建的虚拟终端中安装 NetworkManager 及必要的依赖包
# 安装 NetworkManager,并在完成后 30 秒自动关闭树莓派
$ sudo apt install network-manager -y; echo Installation complete.; sleep 25; sudo systemctl disable network-manager; sleep 5; sync; sudo poweroff
由于未来可能还会用到一些相关软件包,这里就不加 --no-install-recommends
参数了。
若是通过 WiFi 连接到树莓派,则在操作过程中连接会中断,故而我们让其在安装完成后 30 秒自动关闭树莓派,然后之后可手动启动它,网络会自动重连,以避免连接中断后无法再次连接到树莓派。待树莓派重新启动,重新登录到树莓派。
若连接没有中断,则在提示“Installation complete.”时,按 Ctrl+C 终止后续操作。
3. 验证安装
输入命令验证安装成果
$ nmcli --version
nmcli tool, version 1.14.6
成功输出版本号,即说明安装成功。
4. 处理冲突
树莓派默认自带的 dhcpcd5
与 NetworkManager 冲突,后者默认使用 dhclient
,而树莓派默认会自动启动 dhcpcd
服务,导致树莓派网络连接出现问题,如获取多个 IP 等。
停用 dhcpcd
服务
# 停用 dhcpcd 服务并在重启后生效。不能立即停止服务,否则与树莓派的连接将中断
$ sudo systemctl disable dhcpcd
目前我们已安装 NetworkManager,就无需再使用 wpa_supplicant
,或者说,不使用它进行管理。
执行命令以停用 wpa_supplicant
# 重命名 wpa_supplicant.conf 使其失效
$ sudo mv /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf.bak
# 取消 wpa_supplicant 服务的自动运行
$ sudo systemctl disable wpa_supplicant
不能卸载或彻底停用(mask)wpa_supplicant
,NetworkManager 仍需要使用其管理网络接口,我们只是让 wpa_supplicant
让出主导权而已。
5. 启用服务并修改默认配置
设置 NetworkManager 服务的自启,不能立即运行服务,否则网络连接会立即中断
# 设置自启但不立即运行 network-manager 服务
$ sudo systemctl enable network-manager
NetworkManager 默认配置可能会让网络接口的 MAC 地址随机化,每次扫描时会更换一个 MAC 地址,并不方便管理。
修改 NetworkManager 的配置文件 /etc/NetworkManager/NetworkManager.conf
,添加一个小节
[device]
wifi.scan-rand-mac-address=no
NetworkManager 默认不管理接口 usb0
(通过 USB 与树莓派建立连接所需),这导致无法通过 USB 与树莓派连接。
在该配置文件中再添加一个小节以使其启用对 usb0
的自动管理。
[device-usb0]
match-device=interface-name:usb0
managed=1
以上的两个小节,可添加在默认配置文件中,也可以添加到独立的文件存于 /etc/NetworkManager/conf.d/
目录中。
6. 重新配置网络
此时尚且不能启动 NetworkManager 服务,故我们先手动创建连接文件。
在 /etc/NetworkManager/system-connections/
中创建一个新的文件 Test_Wifi.nmconnection
[connection]
id=Test_Wifi
type=wifi[wifi]
mac-address=XX:XX:XX:XX:XX:XX
ssid=Test_Wifi[wifi-security]
auth-alg=open
key-mgmt=wpa-psk
psk=Test_Password
其中,文件名及配置中的 Test_Wifi
替换为要连接的 WiFi 名称,配置中的 Test_Password
修改为 WiFi 密码,mac-address=
后填上所用网络接口的 MAC 地址(使用 ifconfig
查看)。若只存在一个无线网络接口,则可删除该项。
保存完毕后,重启树莓派
$ sync; sudo reboot
此时网络连接会中断,由于各种配置已设置好,稍后树莓派会重启,并通过 NetworkManager,自动连接配置好的网络。
连接好后,重新登录树莓派,利用 nmcli
删除现有连接并重新连接到无线网络,以使 NetworkManager 自动填充 Test_Wifi.nmconnection
连接配置文件的内容(不必需,但如此操作,可避免因手动创建的配置文件不完善而导致的问题)
$ screen # 新建一个虚拟终端
# 在虚拟终端中执行以下命令
$ sudo nmcli c de Test_Wifi; sleep 5; sudo nmcli d w c Test_Wifi password Test_Password
WiFi 名称和密码中,任意一者有特殊符号或者含空格的,需用引号扩起来。
若树莓派上有不只一个网络接口,则可指定使用特定的网络接口进行连接,在虚拟终端中输入的命令改为
$ sudo nmcli c de Test_Wifi; sleep 5; sudo nmcli d w c Test_Wifi password Test_Password ifname wlan0 # 使用 wlan0 连接无线网络
执行命令时,会删除现有网络连接再重新连接,网络会中断并重新恢复。过一会儿再次登录树莓派即可。
若经过较长时间仍未连接到网络,需要断电并对 TF 卡分区中重新编写 /etc/NetworkManager/system-connections/Test_Wifi.nmconnection
文件,再重复上述操作,或排查问题所在。此文章便不再累述,可在下方评论区留言。
若无异常,则 NetworkManager 的安装与配置至此完成。
7. 删除 dhcpcd5
在配置好并使用 nmcli
命令确保没有问题后,可彻底删除 dhcpcd5
软件包以避免其他隐而未现的兼容性问题。或是将其彻底禁用(mask)。
# 彻底禁用 dhcpcd 服务
$ sudo systemctl mask dhcpcd
# 或者卸载 dhcpcd5 软件包
$ sudo apt purge dhcpcd5
收尾
安装并手动配置 NetworkManager 着实费了一番过程,不过安装好 NetworkManager 后,便可享受 nmcli
的强大功能。它底层仍利用 wpa_supplicant
,但大大简化了各种操作步骤。
接下来是本系列文章的第四篇《Raspberry Pi Zero 单板配置手记(四)调整 TF 卡分区大小的不同方式》。
Raspberry Pi Zero 单板配置手记(三)使用 NetworkManager 管理网络连接相关推荐
- Raspberry Pi Zero 单板配置手记(四)调整 TF 卡分区大小的不同方式
RPi Zero 调整 TF 卡分区大小的不同方式 本文章为系列文章<Raspberry Pi Zero 单板配置手记>的第四篇,上一篇为<Raspberry Pi Zero 单板配 ...
- Raspberry Pi 3安装配置Raspbian过程
1. 前期准备 硬件 Raspberry Pi 3主板 5V 1A安卓充电器及数据线 Samsung 64GB UHS-1 Class10 TF存储卡 TF卡读卡器 网线 HDMI高清线(可无) 支持 ...
- 树莓派raspberry Pi 4B安装Ubuntu 20.04 LTS系统后如何连接WiFi
项目过程中,要求树莓派安装Ubuntu系统,并且可以连接WiFi.在网上看了很多方法,测试过几种方法之后,发现只有通过第三种方法才能顺利连接WiFi,现在将自己的尝试过程和最终的解决方法做一个记录. ...
- Raspberry Pi的GStreamer配置
硬件配置:Raspberry Pi3 + 罗技C310摄像头 使用摄像头作为图像/音频输入,3.5mm耳机插口提供音频输出 RPi将音频与视频传至Windows 如果使用3.5mm音频插口,先将音频输 ...
- Raspberry Pi树莓派raspi-config配置
来源:http://www.waveshare.net/study/article-597-1.html 一.树莓派raspi-config设置 第一次使用树莓派的时候需要进行一些简单的配置,在终端运 ...
- Raspberry Pi的Mjpg-streamer配置
系统配置为RPi3+罗技C310 首先使用 $ v4l2-ctl --list-formats $ v4l2-ctl --list-formats-ext 检查摄像头支持的格式. 一般摄像头会有两种视 ...
- win10下最新MySQL8.0安装与环境配置,Navicat图形化管理工具连接,完整详细可收藏
文章目录 一.MySQL的卸载 二.MySQL的下载安装和配置 三.MySQL的开启和登录 四.MySQL图形化管理工具 一.MySQL的卸载 步骤1:停止MySQL服务 在卸载之前,先停止MySQL ...
- 系统备用服务器连接配置异常,网络配置的DNS服务老是异常网络连接老是异常...._网络编辑_帮考网...
banyangwo 新兵答主 08-08 TA获得超过3262个赞 DNS 是域名系统 (Domain Name System) 的缩写,它是由解析器和域名服务器组成的.域名服务器是指保存有该网络中所 ...
- 魔百盒配置服务器信息,中国移动魔百盒网络连接图文教程
本帖最后由 山阴路的夏天 于 2018-3-8 15:15 编辑 中国移动魔百盒网络连接图文教程 360se_picture.jpg (36.64 KB, 下载次数: 49) 2016-6-28 11 ...
最新文章
- 阿里不让多表join?我偏要!
- 【图灵】iOS技能书单——入门+进阶+精通
- SpringMVC @Transactional的陷井大坑引发No Session found for current thread
- Truncated SVD for faster dection
- linux 文件指针,Linux中文件描述符fd与文件指针FILE*互相转换实例解析
- Python 函数(一)
- 那些唱衰智能电视的砖家们可以闭嘴了
- 数学问题(二):质数、质因子
- settimeout在各个浏览器的最小时间
- 搭建Wpf框架(1) —— 管理系统-Wpf客户端框架2.0(OA,聊天,定时任务)
- 收费英超与中国球迷相互抛弃
- 魅族 刷机android 6.0,魅族mx6 flyme6
- 程序员出差如何高效工作?
- Java导出Excel每列求和,POI导出excel执行自动求和
- Android渠道包生成工具(支持V1、V2签名)
- 软件性能测试场景设计,性能测试场景设计杂谈
- C++编程笔记:使用WinHTTP实现HTTP访问(解决接收UTF8数据乱码问题)
- 棋和麦粒问题(C语言回调函数实现)
- airpods pro 使用电脑无法充电的问题
- 阿里云AMD服务器计算型实例规格族c6a实例CPU网络收发包云盘IOPS详解
热门文章
- linux 启用telnet命令行,linux系统打开telnet端口的方法
- Flood Fill算法总结
- java入门教学书,Java面试技巧合集
- ROS安装和 控制小海龟画圆
- 【原】Linux 桌面背景的存放位置
- 南理工计算机考研复试科目,2020南京理工大学计算机考研初试科目、参考书目、复试详情汇总...
- vue 实现 换一换 功能
- Android | ListView、RecyclerView 实现一键回到顶部
- [CF480E]Parking Lot
- [罗永浩与坚果:一支强弩的妥协]