环境
硬件:Jetson Xavier NX 套件
系统:Ubuntu 20.04
解决
0、现象
在使用Nvidia 的Jetson Xavier NX套件,开发产品,准备发布时,每次设备开机重启时间都太长,用户体验很不好,决定优化一下开机启动时间。
1、分析
主要是禁用一些开机就启动的服务,以达到缩短开机启动时间的效果
2、思路
使用命令,罗列出开机启动的服务,以及耗费时间,然后查看那些耗时长的服务可以禁用。
systemd-analyze blame
4min 38.682s cron-daily.service
11.693s NetworkManager-wait-online.service
11.641s alsa-restore.service
7.783s postfix@-.service
6.362s systemd-udev-settle.service
3.614s nv-l4t-usb-device-mode.service
3.448s dev-nvme0n1p1.device
3.408s dev-mmcblk0p1.device
2.430s docker.service
2.212s apt-daily-upgrade.service
1.933s apt-daily.service
1.911s systemd-udev-trigger.service
1.502s apport-autoreport.service
1.402s blueman-mechanism.service
1.180s xrdp.service
1.173s nv.service
1.123s udisks2.service
1.100s setssdroot.service
999ms systemd-sysctl.service
986ms ua-timer.service
907ms accounts-daemon.service
886ms networkd-dispatcher.service
826ms user@1000.service
我这里查询了一些耗时较长service的作用,给大家参考一下,以免禁用某些服务后,系统功能不正常。
1、startup.service
它在设备启动时运行,并负责启动和运行NVIDIA Jetson平台的各种组件和服务。
禁用此服务可能会导致系统启动失败或无法正常运行。
因此,在禁用之前,请确保了解其可能会对系统的影响,并确保有备份或其他措施以避免系统损坏。
2、cron-daily.service
它负责在每天定时运行系统范围的cron脚本。这些脚本可以包括日志轮换、系统备份等任务。
cron-daily.service服务是由systemd-tmpfiles-clean.timer计时器触发的。
如果不需要在系统上运行任何每日cron脚本,则可以禁用cron-daily.service。
但是,如果禁用该服务,则可能无法完成一些重要的系统任务,例如日志轮换和备份等。
3、gdm.service
它负责启动GNOME桌面管理器(GDM),GDM是Linux桌面系统中最常用的桌面管理器之一。
当登录到系统时,GDM将负责显示登录屏幕,并在您完成身份验证后启动桌面环境。
如果不需要使用GNOME桌面环境,或者想使用其他桌面环境,则可以禁用gdm.service。
但是,如果禁用该服务,则无法使用GNOME桌面环境。
4、NetworkManager-wait-online.service
它负责在系统启动时等待网络连接可用,以确保NetworkManager服务可以正确运行。
这是特别有用的,因为NetworkManager服务负责管理网络连接,如果在其运行之前没有网络连接,
则可能会导致网络连接的失败。
如果不使用NetworkManager服务或者不需要等待网络连接可用,则可以禁用NetworkManager-wait-online.service。
但是,如果禁用该服务,则需要确保在NetworkManager服务启动之前,已经有可用的网络连接。
5、alsa-restore.service
它负责在系统启动时恢复ALSA(Advanced Linux Sound Architecture)音频设置。
ALSA是Linux内核中的音频架构,它提供了一种API,用于管理音频设备和播放音频。
如果不需要使用音频设备或希望使用其他音频系统,则可以禁用alsa-restore.service。
但是,请注意,如果禁用该服务,则可能无法正确设置和使用音频设备。
6、systemd-udev-settle.service
它负责等待所有udev设备完成初始化。udev是Linux系统中用于管理硬件设备的设备管理器。
该服务会在系统启动时运行,并等待udev完成其初始化过程,确保所有硬件设备都已经准备就绪。
如果您禁用此服务,则可能会导致系统启动失败或无法正常运行。
通常情况下,不建议禁用此服务。
7、docker.service
它负责启动和管理Docker容器服务。
Docker是一种开源容器化平台,可以让您在单个主机上轻松运行和管理多个独立的应用程序容器。
如果您不需要使用Docker,或者想要使用其他容器化平台,则可以禁用docker.service。
但是,如果禁用该服务,则无法使用Docker容器。
8、udisks2.service
它负责管理和监控Linux系统中的可移动设备和存储设备。
udisks2.service会在系统启动时自动启动,并在后台运行,监听系统中的存储设备插入和移除事件。
如果不需要使用可移动设备或存储设备,或者想使用其他管理工具,则可以禁用udisks2.service。
但是,如果禁用该服务,则可能无法正确管理和使用存储设备。
9、nv-l4t-usb-device-mode.service
它负责启用和管理USB设备模式。
这是一种功能,使Xavier NX设备可以在主机和从设备之间切换,以便在需要时作为外部存储器或USB网卡进行使用。如果不需要使用USB设备模式,或者想要使用其他方法进行外部存储器或USB网卡的使用,
则可以禁用nv-l4t-usb-device-mode.service。
但是,如果禁用该服务,则无法使用USB设备模式。
10、networkd-dispatcher.service
它负责在网络配置更改时运行钩子脚本,以允许其他服务响应网络配置更改。
networkd-dispatcher.service服务通常与systemd-networkd网络守护进程一起使用。
如果不需要在网络配置更改时运行任何钩子脚本,或者想要使用其他网络守护进程,则可以禁用networkd-dispatcher.service。
但是,如果禁用该服务,则其他服务可能无法响应网络配置更改。
3、解决
经过分析,我决定禁用gdm.service、NetworkManager-wait-online.service、alsa-restore.service、docker.service、cron-daily.service这几个。禁用方法也很简单
//禁用服务
sudo systemctl disable gdm.service 注意此服务是桌面服务,要确定自己是否需用
sudo systemctl disable NetworkManager-wait-online.service
sudo systemctl disable alsa-restore.service
sudo systemctl disable docker.service
sudo systemctl disable cron-daily.service
//然后重启
reboot
如果需要恢复被禁用的服务可以使用
//启用服务
sudo systemctl enable cron-daily.service
//然后重启
reboot
OK!
至此,问题解决。欢迎留言交流
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)