Ubuntu Server 24.04中的unattended-upgrades与fwupd

在 OCI 上关闭,改为手动更新。

查看所有systemctl管理的服务

列出所有已加载的服务: systemctl 或者,如果您想要查找特定的服务,例如docker.service,可以使用: systemctl | grep docker.service

  • 列出所有服务: systemctl list-units --type=service
    • systemctl list-sockets
    • systemctl list-units 所有的单元,包括服务(service)、挂载点(mount)、套接字(socket)、计时器(timer)等,可快速查看系统运行状态。
    • systemctl list-unit-files 所有的单元文件
    • systemctl list-timers
    • systemctl list-jobs
    • systemctl list-dependencies
  • 列出所有处于活动状态的服务(运行或已退出): systemctl list-units --type=service --state=active
  • 列出所有正在运行的服务: systemctl list-units --type=service --state=running
  • 列出所有处于启用状态的服务: systemctl list-unit-files --state=enabled

unattended-upgrades

unattended-upgrades 是 Debian/Ubuntu 系统中一个重要的自动化安全更新工具(类似Windows自动更新)。它的主要功能是在无需人工干预的情况下,自动下载并安装系统的安全更新,这对于保持服务器安全性和稳定性至关重要。

  • 查看状态:sudo systemctl status unattended-upgrades
  • 关闭功能:sudo dpkg-reconfigure unattended-upgrades 在弹出的界面中选择“否”,然后回车确认。
  • 直接卸载:sudo apt remove --purge unattended-upgrades

fwupd

fwupd 核心作用是为服务器上的硬件设备提供统一的、安全的固件更新机制,并评估系统的固件安全状况。

步骤命令作用说明
1. 查看设备sudo fwupdmgr get-devices列出系统内fwupd支持的所有可更新设备。
2. 刷新元数据sudo fwupdmgr refresh从LVFS服务器获取最新的固件更新信息。
3. 检查更新sudo fwupdmgr get-updates检查当前设备是否有可用的固件更新。
4. 执行更新sudo fwupdmgr update下载并安装所有可用的固件更新。部分更新可能需要重启才能生效。

/etc/fwupd/fwupd.conf中,可选择性地禁用特定的硬件设备 (DisabledDevices) 或插件 (DisabledPlugins),或者通过 OnlyTrusted=true 等设置提高安全性,而非完全关闭fwupd。

注意:要生效 fwupd.conf 的更改,你需要重启 fwupd:sudo systemctl restart fwupd.service

组件名称类型核心任务运行频率
fwupd.serviceService固件更新的执行者仅在需要更新或查询时运行
fwupd.socketSocket服务的触发器始终运行(极省资源)
fwupd-refresh.timerTimer检查更新的计划员按设定的周期(如每日)触发
  • 自动更新:fwupd-refresh.timer 到达设定时间 -> 触发 fwupd-refresh.service -> 后台静默下载最新的固件列表 -> 退出。
  • 用户交互:用户输入 fwupdmgr get-updates -> 请求发送到 fwupd.socket -> systemd 发现请求,拉起 fwupd.service -> fwupd.service 读取之前下载好的元数据,反馈给用户是否有可用更新。

保留手动执行的能力,但关闭自动启动(本质就是关闭定时器)

systemctl disabled只是关闭了自启动,如果需要彻底禁用(防止D-Bus 或其他程序再次激活),就需要使用systemctl mask将服务单元链接到 /dev/null

注意:mask会彻底锁死服务,导致手动也无法启动;需要先使用unmask恢复,才能手工执行或systemctl enable

  • fwupd-offline-update.service 是 fwupd 系统中的一个专门服务,其核心作用是在系统下一次重启时,自动完成那些必须在操作系统关闭后才能安装的固件更新。会存在一些必须“冷更新”的设备固件,最常见的是主板BIOS/UEFI,以及一些RAID卡、网卡固件。
sudo systemctl status fwupd  # Ubuntu Server 24.04中,没有fwupd.socket,只有fwupd
sudo systemctl status fwupd-refresh.timer
sudo systemctl status fwupd.service

# 停止并禁用定时器
sudo systemctl stop fwupd-refresh.timer
sudo systemctl disable fwupd-refresh.timer
# 确认定时器已关闭
systemctl list-timers --all | grep fwupd

# 虽然 fwupd 默认通常是按需启动的,但执行以下命令可以确保它不会在系统引导时被意外拉起。
sudo systemctl stop fwupd
sudo systemctl stop fwupd.service
sudo systemctl disable fwupd/fwupd.service # Ubuntu Server 24.04中,提示:The unit files have no installation config
$ systemctl list-unit-files|grep -e fwupd -e STATE
UNIT FILE                                    STATE           PRESET
fwupd-offline-update.service                 static          -
fwupd-refresh.service                        static          -
fwupd.service                                static          -
fwupd-refresh.timer                          disabled        enabled

STATE:为用户状态,PRESET:为预设状态

  • enabled: 服务已启用,会在启动时自动运行
  • disabled: 服务已禁用
  • static: 服务不能被直接启用,但可以被其他服务依赖
  • indirect: 通过依赖关系间接启用

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注