网站首页 > 技术教程 正文
启动 Linux 系统时,您可能会看到执行某些更新或安装新应用程序时出现延迟。为了帮助加快 Linux 启动时间,您需要确定时间延迟最多的地方。
延迟可能发生在四个基本位置。这些不同的领域是:
Firmware
Loader
Kernel
Userspace
让我们先看看这些,看看在这些阶段发生了什么。
Firmware
固件是由硬件加载的“软件”。例如,当您的视频卡通电时,它具有内置代码,可以让 Linux 操作系统 (OS) 访问它。以这种方式,操作系统可以控制视频卡的各个方面。另一个例子是主板固件,它可以让操作系统控制处理器风扇。
每台 PC、笔记本电脑、服务器等都有固件。大多数情况下可以通过系统更新来更新固件。大多数系统更新不是自动的,必须从系统制造商处下载。例如,如果您有 AMD Radeon 视频卡,那么您可以访问 AMD 网站并可能找到您的视频卡的更新。
笔记:甚至打印机和其他外部设备也可以有固件。这些设备不应该对启动时间有任何影响。只有内部设备或参与系统启动的设备才是重要的。如果您使用外部硬盘驱动器启动操作系统,那么磁盘驱动器上的固件将很重要。
Loader
程序加载固件后,引导加载程序将接管引导过程。引导加载程序将加载 Linux 内核和 Linux RAM 磁盘 (initrd)。
一种流行的引导加载程序是 GRand Unified Bootloader (GRUB)。引导加载程序通常会有延迟。当超时发生时,它允许用户在选择默认选项之前从菜单中选择一个选项。
Kernel
Linux Kernel是通过软件与硬件交互的软件。系统上的任何应用程序都会向内核发送命令。内核将使用这些命令与硬件进行通信。它还允许硬件与软件交互。
一个例子是在键盘上按下一个键。硬件将信息发送到内核,内核将信号发送到软件,指出按下了一个键。鼠标点击也是如此。当在桌面上选择一个图标时,一个信号被发送到内核,内核与软件交互以确定发生了什么。然后将信息发送到内核。内核向硬盘发送信号以读取程序。
程序被读入内存并执行。因此,如果您双击 Web 浏览器图标,程序就会加载到内存中并启动。
许多事情都由内核在后台控制,例如服务、系统更新、硬件控制等。
Userspace
固件、引导加载程序和内核中未包含的任何其他软件都是用户空间。这些程序包括系统上所有可以执行的应用程序、驱动程序和其他文件。
用户空间有时被称为“userland”。在大多数情况下,引导过程的这一部分将是引导时间的最大部分。
确定启动时间
确定这四个部分的启动时间的最快方法是在终端中发出以下命令:
systemd-analyze
应显示类似于图 1 的输出。
图 1
固件耗时 8.76 秒,加载程序耗时 5.974 秒,内核耗时 6.148 秒,用户空间耗时 1 分 33.466 秒。大部分加载时间都在用户空间。
如果您的固件加载时间异常长,那么您可以在 BIOS 中进行更改。禁用不需要的功能可以帮助缩短固件启动时间。
加载程序的问题可能需要重置引导加载程序中的选项。检查不需要的任何选项。
内核加载时间不是问题,除非您编译内核以获得额外的功能。您可能需要查看您添加的不需要的内容。您也可以尝试使用库存内核,看看它是否加载得更快。
您可能还会注意到图形用户界面 (GUI) 在用户空间加载后的 1 分 10.144 秒内启动。
用户空间通常是引导时间的最大部分。用户空间上的各个时间可以从终端使用以下命令确定:
systemd-analyze blame
输出是用户空间中加载的所有项目的列表,从加载时间最长的到最短的最后排序。图 2 显示了一个示例。
图 2
查看图 02,您可以忽略第一行。第一行是在登录之前在后台执行的系统更新。您可以查看列表并查看系统上加载的所有内容。如果您执行此列表并看到您不需要的东西,那么您可以卸载该程序或禁用该服务。
更改任何内容后,您可以重新启动系统并再次检查命令以查看启动时间如何更改。该过程是优化启动时间以及在删除应用程序和禁用服务时降低内存使用量的好方法。
删除应用程序
有一种方法可以比 systemd-analyze 命令的列表更容易找到应用程序。假设在图 02 中的输出中,有一行来自名为 XY1 的程序,加载时间超过一分钟。如果我不再需要该应用程序,那么我可能想要删除该程序。在终端中,我可以输入“sudo apt purge XY1”,但没有任何反应,因为找不到该程序。
要找到应用程序,我可以运行命令 'dpkg -l | grep -i XY1'。找到的程序列表应包括程序名称。我可以使用该名称通过替换“sudo apt purge”命令中的名称来清除它。命令完成后,您可以运行“sudo apt autoremove”来完成卸载任何不需要的东西。
停止服务
输出中列出的一些项目是服务。这些由结尾的“.service”表示。
仅仅因为此处列出的服务并不意味着它在启动后仍然处于活动状态。例如,让我们看看“snap.service”。我可以运行命令 'systemctl show snap.service | grep ActiveState'。当我执行命令时,我得到“不活动”的响应。这意味着该服务未激活。如果我为“libvirtd.service”运行命令,那么它会返回为“活动”。
如果服务处于活动状态,则可以使用命令“systemctl stop libvirtd.service”停止该服务。该命令将停止服务,直到您重新启动系统并重新启动。
如果你想在重启后禁用该服务,那么有一个不同的命令。禁用服务的命令是“systemctl disable name.service”。
注意:执行“systemctl”命令时,您可能需要在命令开头使用“sudo”以 Root 身份运行。
优化的系统启动时间
我找到了一个非常好的优化系统,发现时间为:
启动完成时间为 3.863s(固件)+ 13.494s(加载程序)+ 1.637s(内核)+ 4.222s(用户空间)= 23.218s
graphical.target在用户空间 4.217 秒后到达
'systemd-analyze blame' 命令返回以下内容:
2.386s sendmail.service
946ms mysql.service
724ms
systemd-random-seed.service
518ms logrotate.service
499ms systemd-resolved.service
351ms systemd-logind.service
313ms dev-nvme0n1p3.device 306ms
systemd-journald.service
275ms apache2.service
271ms upower.service
217ms udisks2.service
205ms systemd-timesyncd.service
205ms accounts-daemon.service
152 毫秒加仑/分.service
151ms edac.service
144ms lm-sensors.service
139ms loadcpufreq.service
135ms apparmor.service
130ms
systemd-modules-load.service
117ms avahi-daemon.service
115ms bluetooth.service
113ms keyboard-setup.service
109ms systemd-udev-trigger .service
108ms ufw.service
99ms tmp.mount
95ms NetworkManager.service
91ms grub-common.service
87ms binfmt-support.service
86ms alsa-restore.service
77ms [mailto: systemd-fsck@dev-disk-by \x2duuid-277d9b73\x2d1fd1\x2d42e3\x2d9275\x2d1a6febaae04f.服务] systemd-fsck@dev-disk-by \x2duuid-277d9b73\x2d1fd1\x2d42e3\x2d9275\x2d1a6febaae04f.service
77ms hddtemp.service
76ms [邮寄地址:systemd-fsck@dev-disk-by \x2duuid-a9d8fee1\x2debd 3\x2d45f8\x2db30b \x2de0d409fc0c9a.service] systemd-fsck@dev-disk-by \x2duuid-a9d8fee1\x2debd3\x2d45f8\x2db30b\x2de0d409fc0c9a.service
74ms [邮寄地址:systemd-fsck@dev-disk-by \x2duuid-3d237d5 c\x2dc81f\x2d472e\ x2dad35\x2dc12a1ae3adc5.service]systemd-fsck@dev-disk-by \x2duuid-3d237d5c\x2dc81f\x2d472e\x2dad35\x2dc12a1ae3adc5.service
73ms [邮寄地址:systemd-fsck@dev-disk-by \x2duuid-E87C\x2d35EF.service] systemd-fsck@dev -disk-by \x2duuid-E87C\x2d35EF.service
72ms blueman-mechanism.service
71ms ksm.service
67ms thermald.service 67ms
motion.service
66ms user@1000.service
66ms systemd-udevd.service
64ms saslauthd.service
62ms wpa_supplicant.service
55ms colord.service
52ms
grub-initrd-fallback.service
51ms systemd-sysctl.service
51ms dev-disk-by\x2duuid-fcdd39a3\x2d8a94\x2d441b\x2d8245\x2d3388772a6ab9.swap
46ms cpufrequtils.service
44ms polkit.service
43ms kerneloops.service
42ms
netfilter-persistent.service
38ms
systemd-tmpfiles-setup.service
34ms networking.service
32ms sshguard.service
29ms fwupd-refresh.service
23ms console-setup.service
23ms boot-efi .mount
23ms ssh.service
22ms systemd-rfkill.service
20ms rsyslog.service
18ms
systemd-journal-flush.service
18ms
systemd-user-sessions.service
18ms
plymouth-read-write.service
16ms home.mount
16ms proc-sys-fs -binfmt_misc.mount
16ms boot.mount
15ms var.mount
15ms modprobe@drm.service
14ms
systemd-remount-fs.service
13ms
systemd-tmpfiles-setup-dev.service
13ms
plymouth-quit-wait.service
13ms
systemd-update-utmp.service
13ms sys-kernel-config.mount
12ms zram-setup@zram0.service
12ms plymouth-quit.service
11ms
systemd-tmpfiles-clean.service
10ms systemd-sysusers.service
9ms xdm.service
9ms
sys-fs-fuse-connections.mount
8ms dev-hugepages.mount
8ms dev-mqueue.mount
8ms blk-availability .service
7ms e2scrub_all.service
7ms kmod-static-nodes.service
6ms [mailto: systemd-backlight@backlight :nvidia_0.service] systemd-backlight@backlight:nvidia_0.service
5ms user-runtime-dir@1000.service
5ms setvtrgb.service
4ms
systemd-update-utmp-runlevel.service
3ms
nvidia-persistenced.service
3ms ifupdown-pre.service
2ms rtkit-daemon.service
1ms mnt-huge .mount
结论
这两个简单的命令可以帮助您确定系统的引导时间。从这些时候,您可以找到导致系统启动缓慢的任何问题。
我希望这可以帮助您优化系统以提高引导性能。
猜你喜欢
- 2025-05-02 Linux环境中的date命令使用技巧(linux的centos7配置java8环境变量)
- 2025-05-02 我在linux中高频使用的find命令回顾
- 2025-05-02 Linux touch命令:创建文件及修改文件时间戳
- 2025-05-02 在 Linux 中使用find 命令查找文件
- 2025-05-02 Linux命令学习——tail命令(linux系统tail指令)
- 2025-05-02 linux基础命令之timedatectl命令(linux timer.h)
- 2025-05-02 「Linux」linux常用基本命令(linux常用基本命令+例句)
- 2025-05-02 穿越时间·蓝点Linux历史回顾(蓝点系统)
- 2025-05-02 Glances - 一个用于Linux的高级实时系统监控工具
- 2025-05-02 「linux」定时器方案:红黑树、最小堆和时间轮的原理
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)