-->Linux启动时首先会运行bios中的基本程序
-->通过bios中的程序,系统会找到启动设备,其会依次扫描bios中设置的所有启动设备,从优先级最高的启动设备中启动。
-->bios启动程序会访问启动设备,一般的启动设备为IDE或者SATA硬盘,那么他会访问硬盘的引导扇区,读取引导扇区中的启动数据,然后CPU的控制权就交给了读入的引导程序。
-->现代计算机系统往往支持多种操作系统,因此,需要通过lilo或者grub之类的操作系统引导程序去启动具体的OS。此时CPU的控制权交给grub之类的引导程序。
-->用户通过Grub可以选择具体启动的操作系统,并且提供一些认证之类的信息。Grub会将Linux内核从硬盘中的具体位置读入内存。然后CPU开始解压Linux内核,并且将CPU交给解压之后的Linux内核。
-->Linux内核需要对硬件资源进行访问,因此其需要加载一些必要的驱动程序。这些驱动程序位于initrd(用于初始化目的的ram
disk)中。Linux内核会挂载这个ramdisk,然后加载其中的驱动模块。对于一些在启动过程中使用,并且不常用的驱动模块,需要放在ramdisk中,否则在启动过程中,将无法访问具体的硬件设备。在一些嵌入式系统中,ramdisk就可以作为系统的根文件系统。
-->Linux内核进行初始化工作,并且找到根文件系统,挂载根文件系统。
-->Linux内核访问/etc/inittab文件,该文件决定了Linux系统的启动配置信息,例如Linuxxiotng
具体应该运行在哪种runlevel?读入配置信息之后,Linux运行具体的启动服务。
-->具体的启动服务位于/etc/runlevel文件夹中。Linux会执行具体runlevel的服务程序。所有的服务程序位于init.d文件夹中,不同的runlevel会连接不同的服务。所以用户如果想要自动启动某一服务,可以将init.d下的服务连接到具体runlevel下。
文章评论(0条评论)
登录后参与讨论