Linux系统引导过程:当接通PC电源之后,CPU就会执行第一条指令,这条指令通常是让CPU跳跃到BIOS的入口地址上,然后BIOS开始进行开机自检。如果自检正常,BIOS会根据CMOS中设定的启动设备和启动顺序来启动真正的操作系统。
引导的第一个阶段:
如果启动设备是IDE设备,系统就会去读取第一个扇区MBR(主引导扇区),并将第一个扇区装入RAM中。MBR中的主引导程序师一个512字节大小的影响,签446是主引导加载程序,接下来的64字节是分区表,其中包括4个分区的记录每个记录的大小是16字节)。MBR会以两个特殊的数字的字节(0XAA55)结束,这个数字表示MBR的有效性。
主引导程序的任务就是查找并加载次引导加载程序。主引导程序是通过在分区表中查找活动的分区来查找并加载次引导加载程序,同时他会确认其它分区不是活动的。最后主引导程序将活动分区中的引导记录从这个设备中读入到RAM中并执行它。
引导的第二个阶段:
次引导加载程序的任务是加载Linux内核和可选的初始化RAM磁盘。
第一阶段和第二阶段的引导加载程序一起成为LILO或者GRUB。由于LILO有一些缺点,所以GRUB用的更加广泛。
GRUB在第二个阶段将内核映像读入RAM并将其解压缩然后将控制权交给内核该过程如下:
Start() ./arch/i386/boot/head.S
Startup_32() ./arch/i386/boot/compress/head.S
Decompress_kernel() ./arch/i386/boot/compress/misc.c
Startup_32() ./arch/i386/kernel/head.S
Start_kernel() ./init/main.c
Cpu_idle() ./init/main.c
init
当内核被引导并进行初始化之后,内核就可以启动自己的第一个用户空间应用程序了。(/sbin/init)init是Linux系统中的第一个进程,起进程编号始终为1。
运行级别
#0 – 停机
#1 – 单用户模式
#2 – 多用户,没有NFS
#3 – 完全多用户模式(标准的运行级)
#4 – 没有用到
#5 – X11(xwindow)
#6 – 重新启动
运行级别的配置是在/etc/inittab中进行,系统会根据配置启动和关闭一些服务。系统正在运行时,可以使用telinit命令更改运行级别。