1. 为什么需要开机自动开启热点想象一下这样的场景你有一台Ubuntu系统的开发机平时放在办公室角落当服务器用。每次断电重启后都需要手动连接显示器键盘操作才能开启热点非常麻烦。或者你正在做一个物联网项目需要设备开机后自动提供WiFi热点供其他设备连接。这时候开机自动开启热点功能就显得尤为重要。我去年做智能家居中控时就遇到过这个问题。那台Ubuntu主机放在弱电箱里根本没有接显示器的条件。每次停电后恢复供电都得拆开弱电箱接上显示器键盘才能操作折腾了几次后终于下定决心研究自动开启热点的方案。实测下来用systemd服务来实现是最稳定可靠的方案。2. 环境准备与基础检查2.1 确认系统版本和网络管理器首先确认你的Ubuntu版本是否支持nmcli命令。从Ubuntu 18.04开始NetworkManager就是默认的网络管理工具了。运行以下命令检查nmcli --version如果提示命令未找到需要先安装NetworkManagersudo apt update sudo apt install network-manager -y2.2 检查无线网卡支持不是所有无线网卡都支持热点模式。用这个命令检查iw list | grep AP如果有输出Supported interface modes: AP之类的信息说明你的网卡支持热点模式。我遇到过一些老旧的笔记本无线网卡不支持这个功能这时候就需要更换USB无线网卡了。3. 详细配置步骤3.1 设置自动登录可选但推荐虽然这不是必须的但我强烈建议配置自动登录。因为热点服务需要在用户会话中运行如果卡在登录界面服务可能无法正常启动。在Ubuntu 20.04及以后版本打开设置应用进入用户选项开启自动登录开关3.2 创建systemd服务文件这是最关键的步骤。我们需要创建一个系统服务在开机时自动执行热点创建命令。sudo nano /etc/systemd/system/hotspot.service把以下内容粘贴进去注意根据你的实际情况修改[Unit] DescriptionHotspot Service Afternetwork-online.target Wantsnetwork-online.target [Service] Typeoneshot ExecStart/usr/bin/nmcli dev wifi hotspot con-name MyHotspot password MyPassword123 ifname wlp2s0 ExecStop/usr/bin/nmcli con down id MyHotspot RemainAfterExityes [Install] WantedBymulti-user.target这里有几个关键参数需要特别注意con-name后面是热点名称SSIDpassword后面是热点密码至少8位ifname后面是你的无线网卡接口名3.3 确定无线网卡接口名很多新手在这里会出错。运行以下命令查看你的无线网卡接口名nmcli device输出结果中找到类型为wifi的那一行第一列就是接口名。常见的有wlp2s0、wlp3s0、wlan0等。我的ThinkPad是wlp2s0而一台Dell笔记本则是wlp3s0。4. 启动与测试服务4.1 重载并启用服务创建好服务文件后需要让systemd识别它sudo systemctl daemon-reload sudo systemctl enable hotspot.service sudo systemctl start hotspot.service4.2 验证热点是否创建成功等待几秒钟后用手机或其他设备应该能搜索到你设置的热点名称。如果看不到可以检查服务状态sudo systemctl status hotspot.service如果状态显示失败查看详细日志journalctl -u hotspot.service -b我遇到过最常见的问题是无线网卡接口名写错了密码长度不足8位无线网卡不支持AP模式5. 高级配置与优化5.1 修改热点频段和频道默认情况下热点会使用2.4GHz频段。如果你想使用5GHz需要硬件支持可以这样修改ExecStart命令ExecStart/usr/bin/nmcli dev wifi hotspot con-name MyHotspot password MyPassword123 ifname wlp2s0 band a channel 36其中band a表示5GHz频段channel 36是具体频道号5.2 设置IP地址范围默认热点会使用10.42.0.0/24网段。如果你想修改ExecStart/usr/bin/nmcli dev wifi hotspot con-name MyHotspot password MyPassword123 ifname wlp2s0 ipv4.addresses 192.168.100.1/245.3 开机延迟启动有些电脑启动较慢可以给服务添加延迟[Unit] ... Afternetwork-online.target StartLimitBurst3 StartLimitIntervalSec10 [Service] ... ExecStartPre/bin/sleep 10这样会在网络就绪后等待10秒再启动热点服务。6. 常见问题排查6.1 服务启动但热点不可见这种情况我遇到过几次通常是驱动问题。尝试sudo modprobe -r ath10k_pci sudo modprobe ath10k_pci然后重启服务。不同网卡驱动名称可能不同可以用lspci | grep Network查看你的无线网卡型号。6.2 热点频繁断开可能是电源管理导致的。禁用无线网卡的电源管理sudo sed -i s/wifi.powersave 3/wifi.powersave 2/ /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf sudo systemctl restart NetworkManager6.3 多网卡环境配置如果你有多个无线网卡需要明确指定使用哪个nmcli device wifi list然后选择正确的接口名填入服务文件。我曾经在一台装了双无线网卡的机器上折腾了好久才发现用错了网卡。7. 安全注意事项虽然这个功能很方便但也要注意安全性一定要设置强密码不要用简单的12345678如果不需要长期开启可以设置定时关闭sudo systemctl stop hotspot.service定期检查连接设备nmcli device wifi show-password我在实际使用中发现最好把热点名称和密码记录下来贴在设备上特别是当这台设备是给团队共用的时候。曾经因为忘记密码不得不重置整个配置。