开机流程:
1. BIOS
计算机加电之后做的第一件事就是启动基本输入输出系统——BIOS,BIOS会做以下几件事:
(1)读取CMOS信息,初始化硬件环境
(2)进行硬件自检
(3)找到第一个可开机设备,读取位于其MBR内的Boot Loader,转交控制权
2. Boot Loader
Boot Loader是位于MBR内的开启启动管理程序,可以提供以下三个功能:
(1)提供开机选单
(2)加载kernel和initrd到内存,转交控制权
(3)将控制权转交给其他Boot Loader
关于initrd(Initial RAM Disk):虚拟文件系统,可以提供系统开机所必须的信息(例:硬件驱动);多用于在无法识别硬盘的情况下提供硬盘驱动
GRUB是目前最主流的Boot Loader,其配置文件是/boot/grub/menu.lst
GRUB的启动是分为两个阶段的:
(1)执行位于MBR的主程序
(2)通过主程序加载位于硬盘的配置文件
GRUB对于硬盘的解析与Linux系统是不一样的,它所找到的第一个硬盘的第一个扇区会命名为(hd0,0)
GRUB可以利用chainloader来转交控制权给其他的Boot Loader程序
手动安装GRUB:
(1)grub-install - 将grub所有配置文件都复制到指定目录,默认为/boot/grub/
(2)新建并编辑menu.lst
(3)使用grub命令将GRUB主程序安装到MBR
root - 选择含有grub目录的设备
find - 查找文件,不是在目录树中查找,是在grub所识别的硬件设备中查找
setup - 将grub安装到MBR或指定扇区
password - 为指定项加密;1. 放在所有title前,在title下用lock锁住;2. 直接放在title下的第一行(不安全)
grub-md5-crypt - 用md5加密密码
在menu.lst中追加参数vga可以配置tty默认分辨率
命令mkinitrd可以手动重建initrd文件
chroot:切换根目录;可用于切换不同的Linux系统
3. Kernel
Kernel启动后会进行自己的硬件检测,不会依赖于BIOS的检测结果,检测成功后会启动init程序
kenel是压缩文件,系统中与kernel相关路径:
(1)核心 - /boot/vmlinuz
(2)initrd - /boot/initrd
(3)核心模块 - /lib/modules/$(uname -r)/kernel (核心模块的配置文件:/lib/modules/$(uname -r)/modules.dep)
管理核心模块的相关命令:
查看核心模块详细信息 - modinfo
管理核心模块 - modprobe
查看当前核心模块 - lsmod
追加指定核心模块 - insmod
删除指定核心模块 - rmmod
新建/更新modules.dep文件 - depmod
4. Init
init是系统启动的第一个程序,是所有其他程序的父程序
目前init的启动有两种方式:
(1)System V Initialization - 最重要的是/etc/inittab文件,从/etc/inittab开始执行一系列初始化脚本
(2)Upstart(事件驱动) - 最重要的是/etc/init/目录,脚本的启动与否取决于是否触发了该事件
自定义开机启动的位置:/etc/rc.d/rc.local
查看当前runlevel的命令:runlevel
切换runlevel的命令:init
阅读(488) | 评论(0) | 转发(0) |