linux启动流程 (1)
启动流程一览:
1.加载BIOS的硬件信息与进行自我测试,并依据设置取得第一个可启动的设备
2.读取并执行第一个启动设备内MBR的boot loader(也就是grub,spfdisk等程序)
3.依据boot loader的设置加载kernel,kernel会开始检测硬件与加载驱动程序
4.在硬件驱动成功后,kernel会主动调用init进程,而init会取得run-level信息
5.init执行/etc/rc,d/rc.sysinit文件来准备软件执行的操作环境
6.init执行run-level的各个服务的启动(script)
7.init执行/etc/rc.d/rc/local文件
8.init执行终端机模拟程序mingetty来启动login进程,最后等待用户登陆。
BIOS与MBR:
由于我们系统软件大多放置在硬盘,所以bios会制定起懂得设备好让我们可以读取磁盘中的操作系统内核文件,但由于不同的操作系统的文件系统格式不同,因此我们必须要以一个引导装载程序来处理内盒文件加载(load)的问题,因此这个引导程序成为boot loader,而这个程序是安装在第一个扇区也就是MBR中,而BIOS是通过硬件的INT13这条信道来读取MBR的。
Boot loader功能:
安装windows和linux双系统时,每个系统都有自己的boot loader,而系统的MBR只有一个,那该如何安装呢?
其实每个系统都会保留一块引导扇区提供操作系统安装boot loader,也就是每个系统都会默认安装一套boot loader到它自己的文件系统中,在linux安装时,可以选择将boot loader安装到MBR中,也可以不安装,而在windows安装时,默认会主动将MBR与boot sector都装一份boot loader。
boot loader功能:1.提供菜单:用户可以选择不同的启动选项,这也是多重引导的重要功能。2.加载内核文件:直接指向可启动的程序区段来开始操作系统。3.转交其他loader:将引导装载功能转交给其他loader负责。
在安装双系统时,要先安装windows再安装linux:
原因在于windows的loader默认不具有控制权转交的功能,因此你不能使用windows的loader来加载linux的loader,因此要后安装linux,保证linux的boot loader覆盖windows的。
加载内核检测硬件与initrd的功能
linux会将内核解压缩到内存当中,并利用内核的功能,测试与驱动各个周边设备,内核文件一般放置在/boot下,/boot/vmlinuz
虚拟文件系统:initialRAM DIsk,
一般使用的文件名是/boot/initrd,这个文件的特色在于,也能够通过boot loader来加载到内存中,然后这个文件会被解压缩并在内存中仿真成一个根目录,并且能够提供一个可执行的程序,通过该程序来加载启动过程中所最需要的内核模块,通过这些模块就是USB,RAID等文件系统与磁盘接口的驱动程序。
第一个进程init:
在内核加载完毕进行完硬件检测和驱动程序加载后,此时你的主机硬件已经准备就绪,此时内核会主动调用第一个进程,/sbin/init,最主要的功能就是准备软件执行的环境,包括系统 的主机名、网络设置等,而所有的操作都会通过init的配置文件,/etc/inittb来规划,而inittab内还有一个很重要的设置选项,那就是默认的run level(启动执行等级)。
run level 执行等级
0 halt(系统直接关机)
1 single user mode(单用户维护模式,用在系统出问题时维护)
2 multi user without NFS
3 full multi user mode
4 unused
5 x11 加载使用x window
6 reboot 重启
posted on 2016-07-21 16:11 sichenzhao 阅读(118) 评论(0) 收藏 举报