一.linux启动流程:
系统预处理程序-> GRUB-> Kernal ->initrd->system module
系统预处理程序:未进入系统前的一些基本操作
阶段GRUB:loder程序,引导管理程序,提供用户开机画面以及操作系统的菜单
阶段Kernal:由GRUB协助载入linux kernal 此时并没有任何目录产生
阶段initrd:由GRUB协助一并载入initrd文件,让kernal支持更多的硬件,产生根目录
阶段system module:系统其他模块,比如硬件设备,应用程序等
initrd全名initial ram disk顾名思义就是启动系统所需的加载的虚拟的磁盘。文件是系统启动时的模块供应的主要来源,在执行这个程序期间,就产生了根目录。
GRUB:grub是GRand Unified Bootloader的缩写,它可以在多个操作系统共存时选择引导哪个系统。它可以引导的操作系统包括Linux,FreeBSD,Solaris,NetBSD,BeOSi,OS/2,Windows95/98,Windows NT,Windows2000。它可以载入操作系 统的内核和初始化操作系统(如Linux,FreeBSD),或者把引导权交给操作系统(如Windows 98)来完成引导。
vmliux是在启动过程中很重要的一个文件,因为这个文件实际上就是系统所使用的kernal,若这个文件误删或者文件名字有误,GRUB就不能找到kernal进行启动。
二.linux中kernal在加载之后,根目录的是怎么产生的,以及linux环境是怎么建立的?
1.开机程序启动操作系统,kernal在加载之后(也就是当用户在开机画面选择某系统选项按【enter】之后),kernal会自行在内存区建立一块叫做rootfs的区域供自己使用,里面的功能都是kernal本 身所提供的。这期间根目录并没有产生。
2.产生根目录的主要过程是:kernal加载完之后,将initrd文件载入到rootfs中,再按照其中脚本文件依次执行,这样在模块加载期 间,根目录就产生了。
注意点:其实在initrd文件的功能主要使kernal支持更多的硬件,如果在initrd之前,kernal不支持存储设备或功能,就不能识别出以及正确使用根目录;所以必须等到initrd加载正确的模块之后,并且正确的辩证出存储设备的硬件之后,才能将系统分割区准确的挂载到根目录,然后就产生出了一般的根目录。
3.最后是进入实际的文件系统供用户使用。4.完成这一连串的动作之后,根目录就被initrd产生完毕,接着就是等待根目录下/sbin/init执行文件启动,由init文件将其下负责的软件或者服务依序执行,就可以将整个Linux所需的环境建立完成。