2012-04-19 34 views
3

The Kernel Boot Process这样的画面: RAM contents after boot loader is done为什么内核映像的大部分内容在加载后只有〜1.5MB的内存?

堆积内核图像的仅〜1.5MB。我认为内核映像应该是一个神奇的大型二进制映像文件,以支持硬件(或者是这个内核模块?)和各种内核函数,因为源代码非常大。另外,initrd在哪里?

+1

它被压缩。 – 2012-04-19 10:40:28

+0

嗯,我认为内核至少会有100MB的内存,不包括'initrd'。或者,通过内核映像是应用程序的内存区域,包括'initrd'? – Amumu 2012-04-19 13:02:21

+0

@Amumu为什么会这么大? Linux可以在只有16MB RAM或更少的系统上运行良好。 – pmdj 2012-04-19 15:54:35

回答

1

首先压缩内核。然后在大多数桌面环境中,内核是用最少的一组静态链接模块构建的。 initrd映像是从/ boot文件夹(参见grub配置)从硬盘加载的,用于检测桌面硬件以加载适当的模块,以便能够挂载根文件系统。 initrd映像包含这组模块。想象一下,引导加载程序无法识别的RAID,LVM或异国文件系统。这就是为什么启动分区大部分时间在ext2/3 /(4?)中。然后,当加载正确的模块时,根文件系统将从initrd映像与硬盘驱动器(pivot_root)上的文件系统交换。然后其余的硬件模块从“none initrd”文件系统加载,主要是在udev的帮助下完成的。

希望这会有所帮助!

P.S.纠正我,如果我错了!