百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Linux 启动时间优化

haoteby 2025-05-21 13:47 2 浏览

启动 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


结论

这两个简单的命令可以帮助您确定系统的引导时间。从这些时候,您可以找到导致系统启动缓慢的任何问题。

我希望这可以帮助您优化系统以提高引导性能。

相关推荐

吴玮老湿手把手教你拍小溪

https://v.qq.com/x/page/b30253em9sc.html?pcsharecode=点击观看高清视频,吴玮老湿手把手教会。吴玮老湿手把手教你拍溪水,高清视频手把手教会。慢门拍...

三星将上线Windows 10版Quick Share 数据传输不再难

【CNMO新闻】iPhone与Mac之间联动的一大优势在于AirDrop,让苹果用户可以快速地将手机上的信息、文件等传输到电脑上,电脑传输到手机同理。但是现在,三星计划让自己的用户在Windows1...

当超低能耗建筑变身幼儿园,会和小朋友产生什么神奇反应?

随着超低能耗建筑的发展,超低能耗技术已经被应用于多种建筑的设计当中,今天我们要参观的这所幼儿园就是一所超低能耗幼儿园。通过之前的系列视频,相信大家已经了解到超低能耗技术就是节能技术,在节能的基础上又能...

周迅被曝离婚:为何她总是被伤害?

与高圣远结婚后,周迅极少谈论自己的婚姻。但就在近日,她出了大新闻。5月22日,有网友发现,高圣远常用的社交账号INS上,突然删光了与周迅的合照。过去,他的相片中,周迅至少占一半。现在,一个都没有了。全...

木马前世今生:上线方式发展及新型上线方式实现

0×00前言在讲文章主题之前,我们还是习惯性地聊(che)一(che)聊(dan)。远程控制木马大家都不陌生,尤其是早期接触黑客技术的人,应该可以发现早在2007-2009年,这段时间内,国内的“黑...

直流电机两端电压脉冲个数

直流有刷电机电枢电流波形[1]...

孩子开心、家长放心,这个超低能耗幼儿园有多神奇?

数九寒天,冷在三九寒冷冬日里小朋友的免疫力难免会有所下降容易生病这让很多家长感到困扰生病不仅会影响孩子的身体健康还会耽误孩子的上课进度接下来安小居给大家介绍一所神奇的幼儿园,不管是凛冽冬日,还是烈日炎...

【《报任安书》徐涛朗读】

《报任安书》是司马迁写给友人任安的一封回信,全文约2800多字。在回信里,司马迁以激愤的心情陈述了替李陵将军求情的前因后果以及遭遇腐刑后为完成《史记》所承受的多重压力。这是一封泣血的书信,学习这篇文章...

LOL大神玩家鬼才创作《防御塔的心声》

2019英雄联盟新赛季版本已经上线,去年《英雄联盟》进行了有史以来最大的改版,进行了符文重铸,今年改版程度虽然没有那么大,但一些设定上还是会让游戏的节奏产生一些新的变化,近日B站UP主“倒悬的橘子”创...

无线安全的高级利用:隔离网络里你不知道的Wi-Fi隐蔽传输通道

2018年4月,在荷兰阿姆斯特丹HackInTheBox安全会议上,我们分享了一个关于隔离网攻击技术的议题——GhostTunnel:CovertDataExfiltratio...

黑客主要术语?什么是木马?什么是肉鸡?

本节将对常见的一些黑客术语进行简单的介绍1.肉鸡所谓肉鸡是一种很形象的比喻,比喻那些可以随意被控制的电脑,对方可以是各种电脑包括但不限于个人电脑,服务器等,在某种情况黑客进攻时会用他们干扰敌人。对直接...

福建38岁巨婴,身负20万债款,逼父母偿还,自己却花2万元购耳机

在阅读此文前,为了方便您进行讨论和分享,麻烦您点击一下“关注”,可以给您带来不一样的参与感,感谢您的支持。...

【IT之家开箱】Hi MateBook D 16/14图赏:轻薄护眼屏,简约设计

距离618购物狂欢节还有一个多月时间,手机和PC厂商基本都会争取在5.1之前完成新品铺货。近期,主打大屏护眼与高效体验的HiMateBookD16和HiMateBookD...

ffmpeg入门篇-linux编译安装ffmpeg

为什么说在linux上编译安装ffmpeg最复杂?因为编译之前我们要安装很多扩展库,每个人的环境不同,要安装的编解码库或多或少都有些区别。linux下安装ffmpeg,我们以centos7...

万字解析Linux内核调试之动态追踪

文章介绍几种常用的内核动态追踪技术,对ftrace、perf及eBPF的使用方法进行案例说明。1、什么是动态追踪动态追踪技术,是通过探针机制来采集内核或者应用程序的运行信息,从而可以不用修改内...