2007年2月24日星期六

复习linux的启动过程

今天复习linux的启动过程,自我感觉记忆力大不如以前了,唉~都是IT惹的祸...windows用习惯了渐渐地连OS是怎么引导的都不是很清楚了,真实悲哀...

1.按下电源
开始bootstrap (俗语:“自己脱掉自己的靴子”也就是说在没有外界的帮助下完成所有工作)

2.装载引导扇区
读取ROM BIOS并根据设置初始化硬件参数,然后将启动设备的整个硬盘第一个引导扇区MBR加载到内存并把控制权转它(注:MBR包含一个小的装入程序和一个分区表),由MBR读取活动分区的引导扇区(如果LILO装在这里的话)

3.装载系统内核
系统根据lilo.conf里的设置加载相应的系统内核
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
*init和single参数
使用init参数直接告诉内核去启动另外一个进程(比如/bin/sh)而不是/sbin/init
使用single参数是将single直接传递给/sbin/init
引导计算机的人必须输入密码但是如果lilo.conf中没有设置password和restrict选项就可以对shell任意操作喽

4.硬件设备驱动初始化
用dmesgmore查看详情
4.1 内核版本号的显示
屏幕会显示内核的版本号
4.2 控制台的初始化
屏幕会显示 Console:colour VGA+ 80x25
4.3 速度指数和内存计算
4.4 检查CPU
4.5 PCI总线的探测和初始化
4.6 TCP/IP的初始化
4.7 串口的初始化
4.8 磁盘驱动器的初始化

5. 装载linux的服务---init进程
init进程号为1,根据/etc/inittab配置文件的参数启动系统服务

6.启动脚本
6.1 init先启动系统初始化脚本/etc/rc.d/rc.sysinit
init根据不同的runlevel传递不同的参数给系统初始化脚本,如l3传递3给rc.sysinit
**************************
*来看看rc.sysinit都作了什么
*--用swapon命令初始化交换空间
*--用fsck检查文件系统的结构和组成
*--装载/proc文件系统并重新装载根文件系统/为可读写
*--装载内核模块并结束运行
***************************
6.2 init开始执行该runlevel的脚本
init先运行控制脚本/etc/rc.d/rc并向其传递runlevel参数3,然后该控制脚本去运行该runlevel对应的脚本文件/etc/rcn.d 如rc3.d(其实在它们是关联到/etc/rc.d/init.d里面的相应的真实脚本)。注意S开头的是启动脚本K开头的是关闭脚本,它们都是按名字顺序执行的。
6.3 init再执行脚本/etc/rc.d/rc.local

7.装载可装载模块
这些可装载模块常常用添加设备的驱动程序,通常来说多数硬件可以在系统初始化时被内核正确设置但有时也会需要装载特殊设备的驱动,用lsmod可以检查系统已经装载的模块,用modprobe可以手动装载模块,用rmmod可以手动卸载模块

至此,linux引导完成

没有评论: