linux 启动启动服务_更快地启动Linux

linux 启动启动服务

在我曾经拥有或使用过的所有计算机中,启动速度最快的计算机是1980年代。 当您的手从电源开关移至键盘时,BASIC解释器已为您的命令准备就绪。 现代计算机从一台笔记本电脑花费15秒到一台小型家庭服务器启动花费数分钟的时间。 为什么启动时间如此不同?

1980年代的一台可直接启动到BASIC提示符的微型计算机具有一个非常简单的CPU,该CPU在上电后立即开始从内存地址中获取并执行指令。 由于这些系统的ROM中装有BASIC,因此没有加载时间-您很快就能到达BASIC提示符。 相同时代的更复杂的系统,例如IBM PC或Macintosh,花费了相当长的启动时间(约30秒),尽管这主要是由于必须从软盘上读取操作系统(OS)。 在能够加载操作系统之前,固件仅花费了几秒钟的时间。

在从磁盘启动OS之前,现代服务器通常在固件上花费几分钟而不是几秒钟。 这主要是由于现代系统的复杂性增加。 CPU不能再以全速启动并开始执行指令了。 我们已经习惯了CPU频率缩放,节省大量功率的空闲状态以及多个CPU内核。 实际上,现代CPU内部有数量惊人的简单CPU,它们可以帮助启动主CPU内核并提供运行时服务,例如在温度过高时调节频率。 在大多数CPU架构上,在CPU内部这些内核上运行的代码以不透明的二进制Blob的形式提供。

在OpenPOWER系统上,在CPU内部每个内核上执行的每条指令都是开源软件。 在具有OpenBMC的计算机 (例如IBM的AC922系统以及Raptor的TALOS II和Blackbird系统)上,这还扩展到在基板管理控制器上运行的代码。 这意味着从插入电源线到显示熟悉的登录提示所花的时间如此长,我们可以获得大量的见解。

如果您是使用Linux内核的团队的一员,则可能会引导许多内核。 如果您是从事固件工作的团队的一员,则可能会引导许多不同的固件映像,然后引导一个操作系统以确保您的固件仍能正常工作。 如果我们可以减少硬件的启动时间,那么这些团队可以提高工作效率,并且最终用户在设置系统或重新启动以安装固件或操作系统更新时可能会感激不尽。

在OpenPOWER系统上,固件通过引导存储在固件闪存芯片中的Linux内核来加载操作系统,该内核运行名为Petitboot的用户空间程序,以查找保存用户想要引导的OS的磁盘并对其执行kexec () 。 此代码重用充分利用了使Linux启动更快的努力。 即便如此,我们仍在内核配置和用户空间中找到了可以改进并轻松缩短启动时间的地方。 通过这些优化,引导Petitboot环境是引导时间的百分之几,因此我们不得不在其他地方找到更多改进。

在Petitboot环境启动之前,先有一个名为Skiboot的固件,在此之前还有Hostboot 。 在Hostboot之前是Self-Boot Engine ,它是裸片上的独立内核,可以启动单个CPU内核并从3级缓存中执行指令。 这些组件使我们可以最大程度地减少启动时间,因为它们占据了绝大多数。 也许其中一些组件没有得到充分优化,或者没有尽最大可能并行进行?

攻击的另一种途径是重新启动时间而不是启动时间。 重新启动后,我们真的需要重新初始化所有硬件吗?

像任何现代系统一样,用于提高启动(和重新启动)时间的解决方案混合在一起是并行执行更多操作,处理旧有文件以及(可能)作弊。


Stewart Smith将在1月21日至25日在新西兰基督城的linux.conf.au上介绍Booting更快

翻译自: https://opensource.com/article/19/1/booting-linux-faster

linux 启动启动服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值