[FZH] 第五弹,加速系统启动的 coreboot

Liang Suilong liangsuilong在gmail.com
星期六 五月 7 07:04:59 UTC 2011


貌似这年头都在说 UEFI 哦。
On May 7, 2011 2:11 PM, "microcai" <microcai在fedoraproject.org> wrote:
> 听听,听听, 你的 BIOS 在加载 GRUB 前都做了什么?!
>
> 第一,嘟的一声,所谓的 POST 就过去了。
> 其实做的事情还蛮多的。这里你会发现,BIOS 用了很长的时间来做这个事情。Oh
> dear. 其实我只希望 BIOS 检查一下 RAM 和 HDD 能工作就可以了。当是 BIOS 偏
> 偏不这么干。他把所有的硬件都检查了一遍。难怪 BIOS 要那么大了!4M 的
> flash chip 都放不下! 而且这么慢! What the fuck, 你初始化好硬件后,又
> 初始化了硬件驱动! yep, for DOS 的驱动。 WTF, 我没有 DOS, 拜托你不要为不
> 存在的 OS 写/初始化 驱动了好不好!
>
>
> 第二,开始枚举引导设备。
> 其实事情只有一个, 加载 MBR. WTF, 你加载 MBR 就算了,为何要为了可能存在
> 的磁盘,去查找并初始化任何可能的引导设备?? 万一我真的不从 HDD 启动,我
> 会第一时间告诉你的呀! 反正你找到了N个引导设备之后还是没用,乖乖的从 HDD
> 读取 MBR。
>
> 最后,启动加载的引导设备。
> 做了那么多事情,就是为了运行 512byte 的 MBR.
>
> 现在假设你 MBR 里是 GRUB.
>
> GRUB 启动了,又开始加载 GRUB stage2,说白了就是个 mini linux vfs layer.
> 用来支持访问 Linux 的文件系统的。 这里,初始化了一次 VFS .....
>
>
> GRUB 又去启动 Linux 了
>
>
> Linux 启动,检查初始化设备和设备驱动程序 ..... (等等,这听起来怎么这么
> 耳熟????什么? 又在重复着 BIOS 做过的事情!!) 初始化文件系统 ...
> (等等,貌似又在哪里听过? GRUB ?? GRUB 不也做了一样的事情么?)
>
> 呜呼,难怪系统启动这么慢了,相同的事情做了2次!
> 等等,貌似 Linux 做的那一次只需要 1-2s ... 而 BIOS 和 GRUB 却做了 ....
>> 10s
>
> 搞错没有啊!!!
> 没搞错!是的,就是这样, Linux 并行初始化了 .....
>
> 好吧,如果在把 Linux 内核烧录到 BIOS ROM 里,当然,定制一下,前面稍微加
> 点初始化代码呢? 2s 启动好 Linux 不是问题!
> 即便 ROM 里的 Linux 有点老,你一样可以通过 kexec 直接启动新的内核!
> 等等,貌似 GRUB 这玩意没用了? 是的!!是的!!
>
> 恩,理想的 Linux 启动过程是这样的.
>
> RESET/POWEROFF -> 高度定制的 Linux 内核 -> linux 内核能使用的一切方法获
> 得真正的 linux 内核, 包括 NFS 网络启动, HDD 本地启动, USB 启动, CDROM
> 启动, PXE 启动,COM 口直接传送内核 , 从加密的 HDD 访问 linux 内核 , 使
> 用智能卡解密 HDD 启动 Linux ...... -> kexec
>
> 到这次 kexec ,我打赌如果是 HDD 引导 ,不会超过 4s ! 而如果是传统的 BIOS
> 是多少? > 10s
>
> 而且,你可以随时改用别的启动方法!可以使用传统 BIOS 压根不能支持的启动方法!
>
> 而且,就算你不选择 kexec 启动Linux内核,其实你也已经在 Linux 环境下了!
> 只不过比较精简罢了!但是起码也有 busybox 提供的一整套装备! 是的 , 意味
> 着还没启动系统,你就能做维护了!而且就是开机加电,到你的显示器能反应过来
> 的时候, shell 已经出现在你面前了!
>
> 如果你总是编译了新内核,然后就烧写到 BIOS ROM 里,恭喜你, 你总是可以在
> 开机后,就发现屏幕显示的内容已经是
>
> Starting XXX [OK]
>
> 了。 呵呵, Linux 启动的比你的显示器还快!
>
>
> 当然,如果你不打算启动 Linux 呢?但是却想享受 coreboot 带来的快速和便捷呢?
> 呵呵,自然,kexec 可不止能启动 Linux 内核,只要符合 multi-boot 规范都能
> 启动,aka , 只要 grub 能启动的 , kexec 就能启动。所以,如果一个软件实现
> 了 PC BIOS 的功能,并这个软件可以通过 kexec 启动 .... 呵呵,自己想就知道
> 了,启动非 Linux 不是问题。 自然这样的事情也有人做。 OpenBIOS 就是这样做
> 的。不过是把 coreboot + kexec 一个 BIOS 结合到一个项目中去了。
>
>
> PS:
> BIOS 在 POST 之前,CPU 是不能访问 SDRAM 的。PC BIOS 通过北桥透过南桥,再
> 到 superio 芯片,通过 SMBUS/I2C 总线协议去给 SDRAM 进行编程,然后北桥才得
> 以访问 SDRAM, CPU 才有内存可用。所以 BIOS 虽然是在 16bit 模式,确可以直
> 接识别出 XXXGB 内存。哈哈,人家可是直接通过读写 SDRAM 芯片来进行识别的嘛!
>
> 而这个工作却是 coreboot 的死角!!!因为每个主板的方法都不一样!而且没有
> SDRAM , 后续的代码都不能运行,也就别谈 DEBUG 了 ......
> 这个需要靠各个板卡和芯片厂商释出对应的硬件手册才行 ...... 悲剧的
> 是,coreboot 会直接让 AMI 和 phonex 倒闭! 他们会同意么?
>
> NVIDIA 的芯片目前就 MCP55 (早几百年过时了) 可以,诶,反正我的电脑是用不
> 了这么先进的 BIOS 咯。
>
> 希望 coreboot 能做的更好. move on !
>
> _______________________________________________
> Chinese mailing list
> Chinese at lists.fedoraproject.org
> https://admin.fedoraproject.org/mailman/listinfo/chinese


关于邮件列表 Chinese 的更多信息