Skip to main content

Posts

Showing posts from June 17, 2018

Linux 启动过程分析

英文:Alison Chaiken,翻译:Linux中国/jessie-pang linux.cn/article-9437-1.html 理解运转良好的系统对于处理不可避免的故障是最好的准备。 关于开源软件最古老的笑话是:“代码是自具文档化的self-documenting”。经验表明,阅读源代码就像听天气预报一样:明智的人依然出门会看看室外的天气。本文讲述了如何运用调试工具来观察和分析 Linux 系统的启动。分析一个功能正常的系统启动过程,有助于用户和开发人员应对不可避免的故障。 从某些方面看,启动过程非常简单。内核在单核上以单线程和同步状态启动,似乎可以理解。但内核本身是如何启动的呢?initrd(initial ramdisk) 和引导程序bootloader具有哪些功能?还有,为什么以太网端口上的 LED 灯是常亮的呢? 请继续阅读寻找答案。在 GitHub 上也提供了 介绍演示和练习的代码。 启动的开始:OFF 状态 局域网唤醒Wake-on-LAN OFF 状态表示系统没有上电,没错吧?表面简单,其实不然。例如,如果系统启用了局域网唤醒机制(WOL),以太网指示灯将亮起。通过以下命令来检查是否是这种情况: # sudo ethtool 其中 是网络接口的名字,比如 eth0。(ethtool 可以在同名的 Linux 软件包中找到。)如果输出中的 Wake-on 显示 g,则远程主机可以通过发送 魔法数据包MagicPacket 来启动系统。如果您无意远程唤醒系统,也不希望其他人这样做,请在系统 BIOS 菜单中将 WOL 关闭,或者用以下方式: # sudo ethtool -s wol d 响应魔法数据包的处理器可能是网络接口的一部分,也可能是 底板管理控制器Baseboard Management Controller(BMC)。 英特尔管理引擎、平台控制器单元和 Minix BMC 不是唯一的在系统关闭时仍在监听的微控制器(MCU)。x86_64 系统还包含了用于远程管理系统的英特尔管理引擎(IME)软件套件。从服务器到笔记本电脑,各种各样的设备都包含了这项技术,它开启了如 KVM 远程控制