八、启动引导
八、启动引导
1.linux的启动流程
1.BIOS自检
2.启动GRUB/LILO
3.运行linux kernel 并检测硬件
4.挂载根文件系统
5.运行linux系统的第一个进程init(其PID 永远为1,是所有其他进程的父进程)
6.init读取系统引导配置文件 /etc/inittab 中的信息进行初始化
7.执行系统初始化脚本--/etc/rc.d/rc.sysinit,执行系统初始化(包括很多内容)
8.根据指定的运行级别(runlevel)来运行脚本程序,在执行脚本 /etc/rc.d/rc.local
9.运行一些其他的特别服务,一般为 /sbin/mingetty 和 /etc/X11/prefdm
10.linux控制台(console)提示用户输入用户名、密码进行登录
总结:BIOS初始化--检查外围设备--检查启动设备--读取MBR
2.在linux中常用的启动引导工具:grub和lilo
在linux和Windows两系统并存时就需要安装GRUB,GRUB被广泛的用于替代lilo,GRUB支持在启动时使用命令行模式,支持MD5加密保护,还可以从ext2/ext3、reiseFS/JFS、FAT、minix即FFS文件系统上启动其配置文件为/boot/grub/grub.conf,更改grub.conf即可立时生效如果硬盘上的MBR被更动过,可以用/sbin/grub-install /dev/hda 来重装grub现在我们打开 /boot/grub/grub.conf查看一下
vim /boot/grub/grub.conf
内容如下:
[root@centos6 ~]# vim /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda2
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0 #default=0表示默认启动第一个系统,如果系统有两个系统是用做什么做为分隔符的呢?title就是系统的分隔符,第一个title后面就是第一个系统,用0表示。
timeout=5 #timeout=5,就是默认在启动选择界面停留的时间,单位是秒。等待5秒自动进入默认操作系统
splashimage=(hd0,0)/grub/splash.xpm.gz #splashimage是grub启动背景界面,如果是自己写grub.conf文件,这个可以不用写。
hiddenmenu # 隐藏菜单
title CentOS (2.6.32-279.el6.x86_64) #title后面就是系统在启动时候显示的名字
root (hd0,0) # root 启动文件所在位置
kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=UUID=60f8bff4-1626-4ffa-a11c-57f0c41ea77a rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet #kernel内核所在的位置和名字
initrd /initramfs-2.6.32-279.el6.x86_64.img # initrd内核镜像的名字
grub.conf范例:
timeout=10 # 等待10秒自动进入默认操作系统
splashimage=(hd0,0)/grub/splash.xpm.gz #grub启动背景画面
default=0 #默认进入第一个标题
title Red Hat Linux(2.4.20-18) # Red Hat Linux标题
root(hd0,0) #根文件系统位置
kernel /vmlinuz-2.4.20-18 ro root=LABEL=/ #核心位置与核心加载参数
initrd /initrd-2.4.20-18.img #启动initrd ram盘
title Windows # 另一个操作系统的标题
rootnoverify(hd0,1) # 操作系统存放在hd0,1上,不要在grub里mount
chainloader +1 # 从hd0,1的第一个扇面启动