1.开机时的先后顺序
BIOS-MBR(Boot Loader)-Kernel-init
- Kernel主要是载入驱动程序,以及以读的方式来挂载/根目录,所以/dev,/lib,/etc,/bin,/sbin必须要装在/下.
- init会根据运行级别来运行以下程序:
/etc/rc.d/rc.sysinit
/etc/rc.d/rc and /etc/rc.d/rc?.d
/etc/rc.d/rc.local
X Display Manager
2.BIOS初始化 (Basic Input and Output System)
- 计算机外设的检测(Power on self test--POST)
- 选择由哪个设备引导(对应BIOS 的Boot,通常为磁盘驱动器)
- 选择读取开机设备的第一个磁区(MBR)
3.Boot Loader
- Boot Loader可以安装在Master Boot Record里, 也可以安装在某个分区的boot sector(引导扇区)
- Boot Loader的分两阶段:第一阶段大小为446bytes,存于MBR or boot sector;第二阶段Loaded from boot partition
4.GRUB and grub.conf
从载入boot loader到载入init(MBR-Kernel-init)第一个程序之间都是由GRUB这个多重开机管理程序负责.
- GRUB全名:the GRand Unified Bootloader,特性:
- 可以在开机提示界面输入命令
- 支持的系统文件格式有:ext2/ext3,ReiserFS,JFS,FAT,minix,FFS
- 支持设置MD5密码来保护GRUP的设定文件
- /boot/grub/grub.conf (GRUB设置文件)
- 当改变grub.conf文件后,设置会立即生效
- 如果MBR被不小心删掉,可以使用命令: /sbin/grub-install /dev/hda重安装GRUB
grub.conf文件
*********************************************************************
default=0
timeout=10
splashimage=(hd0,5)/grub/splash.xpm.gz #其中的(hd0,5)为/boot目录,本机把/boot挂载到hda6分区.
password centos #设定GRUB的保护密码为centos
hiddenmenu #隐藏开机菜单
title CentOS (2.6.18-164.el5)
root (hd0,5) #先指定/boot位置
kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet
#指定内核位置为上行申明的/boot下的/vmlinuz-2.6.18-164.el5
#ro意思为read only , ro root=LABEL=/ 以只读的方式挂载根目录,另外也可用ro root=/dev/hda7的方式挂载,如果是逻辑卷,也可以用这种方式挂载; rhgb 是以图形的形式取代文字画面(Red Hat graphical boot); quiet 是指开机过程中不显示错误信息.
initrd /initrd-2.6.18-164.el5.img
#这行是把initrd的img文件载入到内存里,这个img文件存放的是驱动程序
title Windows
rootnoverify (hd0,0)
chainloader +1
*****************************************************************************
5.进入GRUB开机多重管理程序后可进行的操作
1> 按下a 键后,可以给kernel设定追加一个参数,但该操作无法修改kernel的设定.
/grub append> ro root=LABEL=/
- 在行后输入 空格 1 表示single user mode ,这时不用输入root帐号的密码就可以用root帐号登录系统 . (忘记root密码,在这模式下修密码)
设定GRUB保护密码
- 在/boot/grub/grub.conf 里title前面添加一行:
password yourpassword - 建立GRUB的MD5密码,输入命令:
grub-md5-crypt
产生md5密码后,然后打开/boot/grub/grub.conf文件,插入一行
password --md5 后面跟上面命令生成的md5密码 ,存盘退出.
2>按下e 键编辑,再按一次e 键进入编辑状态,改完后回车保存,按b键用更改后的设定引导系统.其它操作见GRUB引导下的说明.
6.Kernel Initialization
- kernel在引导过程中功能
- 检测设备
- 设备驱动初始化,并载入到kernel
- 以只读的方式挂载根目录
- 载入init 程序(初始化进程)
7.init intialization
init读取/etc/inittab配置,根据inittab文件中设定的运行级别决定下面的操作.
三个常用的run level:
1 single user mode
3 full multiuser mode
5 x11(X window)
- initial run level
- 执行系统初始化脚本 /etc/rc.d/rc.sysinit
- init根据inittab中的run level执行指定的脚本目录
例:id:5:initdefault:
/l5:5:wait:/etc/rc.d/rc 5 (rc 5就为/etc/rc.d/rc5.d/) - 设定组合键
- 定义UPS在断电/恢复时要执行的脚本
- 产生6个virtual consoles (tty1-tty6)
- 初始化3指定的环境,如例即初始化run level 5的x window环境
init初始化流 程:id5:5:initdefault----/etc/rc.sysinit----/etc/rc.5d/*(并执行/etc /rc.local)----/sbin/mingetty----如果为run level5 /etc/X11/prefdm ; 非5 进入text mode
8.Run levels : Run level就是当电脑启动时定义要开启哪些服务。
- 0 用来关机,不能设置在initdefault中
- 1,S,emergency Single user modes(只有root帐号能登陆),主要用来做系统的维护工作。
它们的不同点是执行脚本的多寡 Run Level 1 init--> /etc/rc.sysinit --> /etc/rc1.d/*
Run Level S init --> /etc/rc.sysinit
Run Level emergency init --> /etc/rc.sysinit 中一些必要的程序 - 2 Multi-user,without NFS networking
- 3 Full multi-user mode.(含网络功能)
- 4 用户可自定义(预设下和Run Level 3完全相同)
- 5 X11(和Run Level 3完全同,不同的是开机后会启动x window图形界面)
- 6 用来重启,不能设置在initdefault中
特性:
- 使用init命令来定义使用哪个run level (0-6, S , emergency应急)
- 有三种方式用来选择进入哪个run level:
- 开机预设在/etc/inittab文件中
- 在boot loader中传一个参数给kernel
- 开机后运行init x命令选择进入哪个run level 例如输入:init 3
- 显示上一次和当前的run level,使用命令:/sbin/runlevel
9. /etc/rc.d/rc.sysinit (对应到init流程的第二步/etc/rc.sysinit)
文件进行的几个重要工作:
- 启用udev(热插拔设备)和SElinux
- 在/etc/sysctl.conf中设置kernel的参数
- 设定系统时间
- 载入键盘设定(keymaps)
- 启用swap分区
- 设置主机名 --> /etc/sysconfig/network
- 检测根目录并且重挂载成rw方式
- 启用RAID和LVM设备
- 启用磁盘配额(Disk quotas)
- 检查和挂载其它的文件系统
- 清除开机时的临时文件
10. /etc/rc.d/rc的作用: ((对应到init流程的第三步/etc/rc.5 d/*)
根据载入的run level来执行runlevel对应目录里的程序以便决定要启用哪些服务。
例如:查看ls -l /etc/rc.d/rc5.d 目录下都是对应到 etc/rc.d/init.d/目录下程序的Link
其中rc.d , rc5.d , init.d 中的d是Daemon的意思。
11.Daemon processes
定义:A daemon process is a program that is run in the background (一个在后台运行的提供系统服务的程序称之为进程)
分两种类型:
- Standalone:
- 开机时由init启动 如:virtual console
- System V daemon 如:httpd
- Transient:与standalone不同的是使用者必需通过xinetd这个 “super-daemon" 才能提供服务 ,而 standalone类型的服务自己就能提供服务给使用者。
12. System V Script特性:
Run level就是当电脑启动时定义要开启哪些服务。
- 每个run level都有其对应的目录
- System V的初始化的脚本都放在/etc/rc.d/init.d目录下
- run level之所以能提供服务是因为在run level目录下以链接的方式呼叫init.d目录下的脚本,并且还包含了起动或停止服务的参数。
在run level目录下的链接解释举例:
K73ypbind -> ../init.d/ypbind
S12syslog -> ../init.d/syslog
这此链接分三个区,第一区以K或S开头,第二区是一个两位的数字,第三区是链接的System V程序名称。
第一区以K开头为Kill的缩写,代表要停用该链接服务。S是Start的缩写为启用链接服务。
第二区的数字代表执行的先后顺序,数字小的先执行。K和S的顺序是先执行K的停用操作。 - 程序的启动和停止都是用同一个程序,只是后面加有start or stop参数
13. /etc/rc.d/rc.local (对应到init流程的第三步/etc/rc.local)
执行完run level对应目录的链接程序后,就会执行该脚本。
如果要自定义开机执行的程序可以在这个地方定制。
14.Virtual Consoles (对应到init流程的第四步/sbin/mingetty)
- virtual console定义在/etc/inittab 文件中
- 使用ctrl-alt-F[1-7] 切换虚拟控制台
- vritual console的文件是在/dev/tty*
- /dev/tty0 代表当前使用的virtual console
- 默认的RHEL virtual console设置:
- 共定义了12个virtual console
- 只有1-6的virtual console可以登录
- 图形界面通常使用tty7
15.Controlling Services (控制服务的停止与启动)
- 预设自动启动服务工具:
- ntsysv 不加参数表示设置当前的run leve,要同时设置加参数 --level 35 (设置run level3和5)
- chkconfig 用法举例: chkconfig gpm --level 123 off 停用鼠标服务
- system-config-services
- 手动启动服务工具:
- service 可以立即启动或停用standalone类型的服务 举例: service gpm stop
- 指定服务的绝对路径后 面跟start,reload,restart,status or stop参数 (这种方法采用System V的设计,在所有linux都支持,最好使用该方法)
- chkconfig 可以停用xinetd管理的服务
- system-config-service
16.使用命令关机和重启
以下四个关机动作都会执行sync操作:将内存中的暂存资料写入到硬盘中.
- init0
- halt
- poweroff
- shutdown -h now shutdown -h 23:00
重启电脑
- init6
- reboot
- shutdown -r now shutdown -r 23:45
- ctrl+alt+del(Virtual console)
![](http://img.zemanta.com/pixy.gif?x-id=7eb618b6-e1df-8435-b7c2-2579b40eb573)