linux操作系统常规启动流程:
POST-->BIOS(boot sequence)-->MBR(bootloader(512,446))-->Kernel-->initramfs-->init
MBR(bootloader)详述:
GRUB:GRand Unified Bootloader 比较流行的启动引导程序,突破了446字节的限制
Stage1:MBR 主要目的为了引导第二阶段
Stage1_5: 用来识别常见的不同的 文件系统 的
Stage2: 位于内核所在的分区,/boot/grub/(这是一个基本磁盘分区,肯定能访问的)
GRUB的配置文件:
/boot/grub/grub.conf
#boot=/dev/sda
default=0 #默认启动的title的编号
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz #指定grub的背景图片
hiddenmenu #隐藏菜单
#password --md5 密码串 #通过grub-md5-crypt命令生成密文密码串(防止编辑GRUB)
title CentOS 6 (2.6.32-573.el6.x86_64) #内核或操作系统的标题可自由修改
root (hd0,0) #内核文件所在的设备,对grub而言,硬盘识别为hd(磁盘,分区)
kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet #内核路径及传递给内核的参数,/boot是独立分区的,grub直接
访问的分区而不是通过文件系统访问的,所以内核路径在/vmlinux
#password --md5 密码串 #(启动内核需要密码)
initrd /initramfs-2.6.32-573.el6.x86_64.img #ramdisk文件路径(操作系统安
装过程最后一步生成的;ramdisk与内核版本要保持一致)
GRUB的使用:
安装grub stage1:
# grub
grub> root (hd0,0)
grub> set (hd0)
安装grub第二种方式:
# grub-install --root-directory=/path/to/boot的父目录 /PATH/TO/DEVICE
GRUB配置文件丢失后:
启动进入grub命令行
grub> find(hd0,0)/ 查看分区下都有什么问题件
grub> kernel /PATH/TO/KERNEL_FILE
grub> initrd /PATH/TO/INITRD_FILE
grub> boot
kernel初始的过程:
1、设备探测
2、驱动初始化(可能会从initramfs文件中装载驱动模块)
3、以只读挂载根文件系统:
4、装载第一个进程init(PID:1)
/sbin/init: (配置文件/etc/inittab,centos5是顺序启动的很慢,centos6文件被切割了)
upstart: 并行启动,基于envent-drive事件驱动d-bus (/etc/init/*.conf很多配置文件)
systemd: 并行启动
原文:http://iceyang.blog.51cto.com/10506844/1751555