收起左侧

~通过systemctl禁用开机启动服务加快开机速度!~

4
回复
171
查看
[ 复制链接 ]

5

主题

17

回帖

0

牛值

江湖小虾

在使用fnos(0.9.21)的过程中发现系统开机时间较长,开始认为是系统在初始化加载一些系统核心服务的进程,后来感觉时间过长,正常来说系统安装在ssd固态,不应该出现这么长的加载时间(大约2~3分钟),把机器外接显示器查看开机启动过程,在启动中出现一些faid的调用失败
image.png

,其中有部分apci表固件层与linux内核交互的接口问题导致Linux内核解析失败,这些失败大部分家用主板、嵌入式板卡都会有这个问题,一般不会影响系统核心功能,并且家用及工控主板遇到的acpi warning在linux下极常见。。但failed加载失败时会 影响系统正常的加载进度,系统会等待尝试不断请求连接,确认服务失败后才会强制执行后续加载,这无疑增加了不必要的等待时间。
针对出现的failed失败通过命令输出:systemctl status trim_miniscreen.service,显示如下错误

image.png

脚本 /usr/trim/bin/start_miniscreen.sh 执行失败,应该是因为系统没有相应的硬件(小屏设备)systemd检测到重复失败后停止了自动重试。
同样的trim_wayland服务如果加载失败也会影响系统正常的启动时间,这两个服务都是飞牛系统为触摸屏、小屏 یا定制面板准备的系统服务。如果你的硬件本身没有这些设备,这些服务会启动失败(服务会启动等待某些硬件,不存在则失败),这种失败一般不会有实际影响,但systemd等待它们会拖慢启动速度。

所以可以禁用这些服务的启动加载

sudo systemctl disable trim_wayland.service
sudo systemctl disable trim_miniscreen.service

另外关于服务:networkmanager-wait-online这个服务的作用是“阻塞系统后续服务加载,直到网络真正连上”,以确保之后依赖网络的服务能正常运行,这个不是系统必须要加载的服务。可以禁用,如果发现系统有使用异常可以重新开启。
安全起见可以尝试命令来检查是否有重要服务依赖它
systemctl show network-online.target -p Requires

看输出结果,如果输出结果中只有一些不关键的服务,或者输出为空/只有一些基础系统目标,那么禁用它就是安全的。比如:

说明没有任何核心系统服务明确声明必须在网络完全在线(network-online.target)之后才能启动

或通过systemctl list-dependencies --reverse network-online.target查看一下哪些服务想在它之后运行。比如:

里面有些系统级的服务像nfs这些,但依赖于 network-online.target和 没有网络就完全无法工作是两回事,这些依赖网络的服务可能会在日志中留下几条第一次启动失败的记录,但一旦网络在几秒后自动就绪,它们的功能会立刻恢复正常,几乎不会感知到任何异常。文件共享、网络访问等功能都不会受到影响。所以也可以放心禁用掉,确实感到网络或实际使用中有 影响可以尝试enable恢复服务。

sudo systemctl disable NetworkManager-wait-online.service

通过以上禁用个别服务换来的是快速的系统开机过程,减少了漫长的等待过程。目前开机速度明显提升(大约1分钟内就能完成正常加载)

鉴于手动关闭系统服务在后期更新固件后可能这些服务的默认初始状态会恢复的到enable,可以手工编写一个禁用服务的脚本,在更新服务后手动执行一下脚本即可。

# 创建一个检查脚本
sudo nano /root/check_services_after_upgrade.sh

# 脚本内容:
#!/bin/bash
echo "检查并重新禁用不需要的服务..."

# 要禁用的服务列表
SERVICES=(
    "trim_miniscreen.service"
    "trim_wayland.service" 
    "NetworkManager-wait-online.service"
)

for service in "${SERVICES[@]}"; do
    if systemctl is-enabled "$service" >/dev/null 2>&1; then
        echo "发现 $service 已重新启用,正在禁用..."
        systemctl disable "$service"
        echo "已禁用 $service"
    else
        echo "$service 状态正常(已禁用或不存在)"
    fi
done

echo "检查完成!"

# 给脚本执行权限
sudo chmod +x /root/check_services_after_upgrade.sh

收藏
送赞 2
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

6

主题

41

回帖

0

牛值

fnOS系统内测组

感谢分享

2

主题

233

回帖

0

牛值

小有名气

难怪,我说最近重启怎么那么慢

苟利国家生死以,岂因祸福避趋之

0

主题

16

回帖

0

牛值

江湖小虾

确实十分nice!

0

主题

2

回帖

0

牛值

江湖小虾

确实可以这样更改,也可以调整其他不用的服务。

但是一般这货启动后没事都不关,不会频繁启动,所以也就不在乎那一点点启动时间了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则