系统的引导与关机
1、加载bios的硬件信息
2、读取MBR的Boot Loader引导信息
3、加载内核
4、内核执行/sbin/init加载/etc/inittab信息执行rc.sysinit
5、启动核心的外挂模块(/etc/modules.conf)
6、init执行运行级的各个批处理文件(scripts)
7、执行/bin/login程序
8、登入后开始以shell管理主机
启动过程
1. BIOS自检:当识别出第一块硬盘及其空间之后,系统控制将从 BIOS 传递到引导装载程序。
2.引导装载程序:装载第一块硬盘的前 512
个字节的物理数据扇区(主引导记录,MBR)到内存中,位于此扇区开始位置的引导装载程序(如:GRUB)将接管系统控制。引导装载程序执行的命令决定了
引导进程剩余的部分。引导装载程序随后将控制传递到实际的操作系统(Linux 内核)。
3. 加载RAM盘:提供了一个最小的 Linux 环境,可在装入实际根文件系统之前执行程序。
4. 在RA M盘中运行init:
这个程序执行装入真正的根文件系统所需的所有操作。装载内核模块:根据硬件配置的不同,可能需要一些特殊的驱动程序来访问计算机的硬件部件(最重要的部件是硬盘)。要访问最终的根文件系统,内核需要装载适当的文件系统驱动程序。
管理 RA ID 和 LVM:若系统配置在 RAID 或 LVM 下保存根文件系统,则 init 将设置 LVM 或 RAID 以支持稍后对根文件系统的访问。
加载最终的根文件系统:找到根文件系统后,对其进行错误检查并装入。
运行根文件系统上的 init:若上述操作成功,将清除RAM盘并读取系统引导配置文件 /etc/inittab 执行真正的根文件系统上的 init 程序。
/etc/rc.d/rc.sysinit–系统初始化脚本
I. 挂载/proc文件系统
II. 设置系统时钟
III. 系统一般的环境变量设置(如主机名等)
IV. 初始化USB和HID设备
V. 设置PnP
VI. 加载键盘映射
VII. 加载系统字体
VIII. 加载系统模块(如声音模块等)
IX. 初始化 RAID
X. 初始化卷映射
XI. 检查文件系统
XII. 挂载文件系统
XIII. 激活磁盘限额
XIV. 激活swap分区
XV. 初始化串口设备
XVI. 生成系统启动信息的log文件
XVII. 等等
/etc/rc.d/rcX.d/[KS]* –根据运行级别(X)配置服务
5.
I. 终止以”K”开头的服务
II. 启动以”S”开头的服务
/etc/rc.d/rc.local–执行本地特殊配置
其他–不同运行级别的特殊服务
I. mingetty (除了运行级别1)
II. xdm/gdm/kdm (运行级别5)
init进程
init进程是由Linux内核引导运行的,是系统中运行的第一个进程,其进程号(PID)永远为”1″。init进程运行后将安装其配置文件,引导运行系统所需的其他进程,init进程将作为这些进程的父进程。
init进程在运行时将读取系统引导配置文件/etc/inittab中的信息。这些信息包括默认的运行级别和由init启动的进程。 文件/etc/inittab中以#开头的行为注释行,其他的每一行包括如下四个字段(每个字段用”:”间隔):
id:runlevels: action:process
其中:
id : 是各有效行的标识符。对定义getty的各行来说,该标识符指定getty运行的终端(即设备文件/dev/tty之后的
数字字符);对其他行来说,除了有长度限制外没有特殊要求,但该字段在整个文件中必须唯一。
runlevels : 指定运行级别,各运行级别由单个的数字表示,可以指定多个运行级别,但不能包含任何间隔符。
action : 指定运行状态,可以有如下的取值
respawn : 当下一个字段指定的命令结束后,重新运行该命令
wait : 执行下一个字段指定的命令,并等待其结束再运行其他命令
once : 执行下一个字段指定的命令,不等待其结束
boot : 在系统启动时执行下一个字段指定的命令,并忽略运行级别
bootwait : 在引导完成后执行下一个字段指定的命令,并等待其结束
off : 指示init撤消下一个字段指定的命令所对应的进程
initdefault : 指定首次启动时所进入的运行级别状态
sysinit : 在与系统控制台通讯时执行下一个字段指定的命令
powerwait : 当出现电源错误时执行下一个字段指定的命令,并等待其结束
powerfail : 当出现电源错误时执行下一个字段指定的命令,不等待其结束
powerokwait : 当电源恢复时执行下一个字段指定的命令
ctrlaltdel : 当按下C trl+Alt+De l组合键时执行下一个字段指定的命令
process : 该字段指定要运行的命令
下面是一个init进程配置文件/etc/inittab的例子:
# cat /etc/inittab
# 定义的各种运行级别:
# 0 – halt (Do NOT set initdefault to this)
# 1 – Single user mode
# 2 – Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 – Full multiuser mode
# 4 – unused
# 5 – X11
# 6 – reboot (Do NOT set initdefault to this)
# 定义默认的运行级别
id:3:initdefault:
# 系统初始化
si::sysinit:/etc/rc.d/rc.sysinit
# 不同级别的脚本调用
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
# 跟踪CTRL-ALT-DELETE三键重启
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# 当系统发现UPS电源故障后2分钟后执行关机操作
pf::powerfail:/sbin/shutdown -f -h +2 “Power Failure; System Shutting Down”
# 如果在2分钟之内UPS恢复正常则取消关机操作
pr:12345:powerokwait:/sbin/shutdown -c “Power Restored; Shutdown Cancelled”
# 在2、3、4、5运行级别中启动6个虚拟控制台
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
# 在5运行级别中启动xdm管理器
x:5:respawn:/etc/X11/prefdm -nodaemon
为什么使用字符工作方式 ?
Linux是一种类UNIX操作系统。在UNIX发展的早期,类UNIX操作系统根本没有图形操作界面,只有字符工作模式。后来随着GUI的发
展,在类UNIX操作系统上开发了X Window系统,使类UNIX系统有了图形用户界面。虽然图形用户界面操作简单,但是字符操作方式仍
然沿用至今,这主要是因为:
在字符操作方式下可以高效地完成所有的任务,尤其是系统管理任务。
系统管理任务通常在远程进行,而远程登录后进入的是字符工作方式。
由于使用字符界面不用启动图形工作环境,大大地节省了系统资源开销。
虚拟控制台
当在系统启动时直接进入字符工作方式后,系统提供了多个(默认为6个)虚拟控制台。每个虚拟控制台可以独立使用,互不影响。
可以使用Alt+F1~Alt+F6
进行多个虚拟控制台之间的切换。如果用户使用startx命令在字符界面下启动了图形环境,那么可以使用C trl+Alt+F1~C trl+Alt+F6切换字符虚拟终端,使用C trl+Alt+F7
切换到图形界面。
本地用户注消
若要注销登录,用户可以在当前的登录终端上输入logout
命令或使用<C trl>+<d>
快捷键进行。
超级用户的提示符是”#”,普通用户的提示符是”$”。退出系统直接输入:#exit
1. Linux系统是严格区分大小写的,无论用户名,还是文件名、设备名都是如此。即:ABC、Abc、abc是三个不同的用户名或文件名。
2. 基于安全的考虑,一般应该使用普通用户登录系统,不要使用root用户登录,当需要进行超级用户的工作时可以使用 su – 命令切换为超级用户身份。初学者尤其要注意这一点。
系统运行级别
Linux 系统任何时候都运行在一个指定的运行级上,并且不同的运行级的程序和服务都不同,所要完成的工作和所要达到的目的都不同。C e ntO S 设置了如下表所示的运行级,并且系统可以在这些运行级别之间进行切换,以完成不同的工作。
运行级说明
0 所有进程将被终止,机器将有序的停止,关机时系统处于这个运行级别
1 单用户模式。用于系统维护,只有少数进程运行,同时所有服务也不启动
2 多用户模式。和运行级别3一样,只是网络文件系统(NFS)服务没被启动
3 多用户模式。允许多用户登录系统,是系统默认的启动级别
4 留给用户自定义的运行级别
5 多用户模式,并且在系统启动后运行X-Window,给出一个图形化的登录窗口
6 所有进程被终止,系统重新启动
1. 如果系统启动后进入字符登录界面,则说明系统默认的运行级别为3;如果系统启动后进入图形登录界面,则说明系统默认的运行级别为5。
2. 如果用户已经启动了字符界面,想要进入图形界面可以使用如下命令:#startx
运行级的查看和切换
用户可以使用如下的命令查看当前系统的运行级
runlevel
用户可以使用如下的命令切换运行级
init [0123456Ss]
即在 init 命令后跟一个参数,此参数是要切换到的运行级的运行级代号,如:
用 init 0 命令切换至运行级别 0 ,即关机
用 init 1 命令切换至运行级别 1 ,即进入单用户运行模式
用 init 6 命令切换至运行级别 6 ,即重新启动
也可以使用 telinit 命令,在 C e ntO S 中,telinit
命令是 init 命令的符号链接。
关机与重新命令
系统的关机和重新启动,实际上是进行运行级别的切换。此次可以使用 init 命令进行关机和重启,命令 init 用于立即关机或重启,但是在多用户系统中,若想给用户发送关机警告信息以便各个用户完成自己的工作并注销登录,则必须使用shutdown ;halt
关闭系统最简单方式 ;reboot
快速的重新启动 ;poweroff
请linux关闭电源。
在多用户环境下,通常使用 shutdown 命令关闭和重新启动系统。shutdown
命令能够以一种比较安全的方式来关闭系统,所有登录到系统上的用户将被通知系统将要关闭,而新的登录操作将被阻止;同时所有的进程也将被通知系统将要关
闭,这样有些程序,如 vi 将能够及时保存用户编辑的文件并退出。
shutdown 命令的格式为:
shutdown [参数] time [warning-message]
其中:
time :设置多长时间后执行 shutdown 指令,可以使用如下三种格式:
hh:mm :指定绝对时间,hh用于指定小时,m m 用于指定分钟
+m :指定相对时间,m 为数字,单位为分钟
now :现在立刻进行,相当于 +0
warning-message :用于设置发给用户的警告信息
常用参数如下:
-t sec :送出警告信息和删除信息之间要延迟多少秒再通知 init 执行运行级切换
-k :并不真的关闭系统,只是给每个用户发送警告信息
-r :关闭之后重新启动系统
-h :关闭之后停止系统
-f :重新启动后不用fsck检查磁盘
-F :重新启动后强制用fsck检查磁盘
例如:
# # 警告所有用户系统将在5分钟后重新启动系统
# shutdown -r +5 ” System will be reboot in 5 minites, Please save your work.”
# # 立即关闭系统
# shutdown -h now
# # 立即重新启动系统,并在重新启动后强制用fsck检查磁盘
# shutdown -h -F now