标签:login 没有 机制 环境 随机 快捷 加载驱动 硬件 mode
Linnux系统的启动过程如下:
BIOS,开机自我测试与MBR
(1) 启动整个系统就得让系统加载BIOS,并通过BIOS程序去加载CMOS的信息,并且通过CMOS的设置值取得主机的各项硬件配置,比如CPU、各设备的I/O地址等
(2) 取得这些信息之后,BIOS还进行开机检测,然后执行硬件的初始化,之后定义可启动设备的顺序
(3) 由于不同的操作系统,文件格式不同,所以需要不同的boot loader来加载内核。BIOS首先通过硬件的INT 13中断功能读取检测到的第一个启动设备的第一个扇区即MBR(这是硬件本身就支持的功能),然后执行boot loader
注:如果主机有两块硬盘,就有两个MBR。首先读取哪个MBR,决定于BIOS的设置,即将哪块硬盘设置为第一个启动设备。
Boot loader的功能
(1) 提供菜单:供用户可以选择不同的启动选项
(2) 加载内核文件:直接指向可启动的程序区段来开始操作系统
(3) 转交其他loader:将引导加载功能转交给其他loader负责
注:windows的loader默认不具有控制权转交。每个操作系统默认是会安装一套boot loader到它自己根目录所在的文件系统的boot sector(引导扇区)。Linux在安装时,可以选择将boot loader安装到MBR,也可以不安装。但是windows理论上,会在MBR和boot sector都安装一份boot loader。安装多系统的时候,先安装linux后安装windows,windows会覆盖掉linux的boot loader,不能出现linux的菜单选项,所以安装多系统一般都是先安装windows然后安装linux。
加载内核检测硬件与initrd的功能
(1) boot loader开始读取内核文件后,linux会将内核解压缩到内存当中,并且利用内核的功能,开始测试与驱动各个周边设备,包括存储设备与CPU、网卡、声卡等。内核文件会放置到/boot,并取名为/boot/vmlinuz。
(2) linux是通过加载根目录下/lib/momdules内的动态模块来提供加载驱动程序功能的,比如识别USB、SATA、SCSI等磁盘设备(/lib不能与/分别放在不同的分区)
(3) 虚拟文件系统:一般使用文件名为/boot/initrd,该文件也是通过boot loader来加载到内存中,被解压缩并且在内存当中仿真成一个根目录,并提供一个可执行程序,通过该程序来加载启动过程中所需要的动态模块。来解决内核无法识别SATA等磁盘,无法挂载根目录,无法加载/lib/modules的动态模块来识别SATA等磁盘的问题。
(4) Initrd解压缩成根目录,内核凭此加载适当驱动程序后,虚拟文件系统会释放掉,并挂载实际的根目录文件系统。
注:如果linux系统是安装在IDE接口的磁盘上,并且使用默认的ext2/ext3文件系统,不需要initrd也可以进入系统,USB、SATA、SCSI需要initrd。
第一个进程init及配置文件/etc/inittab
内核主动调用的第一个进程就是/sbin/init,PID是1,配置文件是/etc/inittab,主要的功能是准备软件之星的环境,包括系统的主机名、网络设置、语系处理文件系统格式等
Init的处理流程是根据/etc/inittab文件内容一行一行从上往下处理的,流程如下:
(1) 先取得runlevel,假设run level是5
(2) 使用/ec/rc.d/rc.sysinit进行系统初始化
(3) 由于run level是5,只进行“5:5:wait:/etc/rc.d/rc5”
(4) 设置好[ctrl]+[alt]+[del]这组的组合键功能
(5) 设置不断电系统的pf,pr两种机制
(6) 启动mingetty的6个终端机
(7) 最终以/etc/X11/perfdm-nodaemon启动图形界面
Init系统初始化流程(/etc/rc.d/rc.sysinit)
不同发行版本的linux会有不同的脚本名称,以/etc/inittab中定义的为准
/etc/rc.d/rc.sysinit的主要工作大概有以下:
(1) 取得网络环境与主机类型
(2) 测试与挂载内存设备/proc及USB设置/sys
(3) 决定是否启动SELinux
(4) 启动系统的随机数生成器(帮助系统进行性一些密码加密演算的功能)
(5) 设置终端机字体
(6) 设置显示启动过程中的欢迎界面
(7) 设置系统时间与时区设置:需读入/etc/sysconfig/clock设置值
(8) 接口设备的检测与Plug and Play(PnP)参数的测试
(9) 用户自定义模块的加载:用户可以在/etc/sysconfig/modules/*.modules中加入自定义的模块
(10) 加载内核的相关设置:系统会主动去读取/etc/sysctl.conf这个文件的设置值
(11) 设置主机名与初始化电源管理模块
(12) 初始化软件磁盘阵列:主要是/etc/mdadm.conf来设置好的
(13) 初始化LVM的文件系统功能
(14) 以fsck检验磁盘文件系统,会进行filesystem check
(15) 进行磁盘配额quota的转换
(16) 重新以可读写模式挂载系统光盘
(17) 启动quota功能
(18) 启动系统为随机数生成器
(19) 清除启动过程当中的临时文件
(20) 将启动相关信息加载/var/log/dmesg中
启动系统服务与相关启动配置文件
(1) 通过外部的第一号参数($1)来取得想要执行的脚本目录,即由 /etc/rc.d/rc x可以取得/etc/rcx.d这个目录来准备处理相关的脚本程序
(2) 找到/etc/rcx.d/K??*开头的文件,并进行/etc/rcx.d/K??*stop的操作
(3) 找到/etc/rcx.d/S??*开头的文件,并进行/etc/rcx.d/S??*start的操作
注:/etc/rcx.d/[SK]xx其实就是跑到/etc/init.d/去找到对应的服务脚本,然后分别start或者stop而已。(xx是表示执行的顺序)
用户自定义开机启动程序(etc/rc.d/rc.local)
用户自定义的shell script不需要放在/etc/init.d里面,只要把shell script的完整文件名写入/etc/rc.d/rc.local
Linux 启动加载完核心之后,系统就已经准备好,等待程序执行。第一个启动的程序就是“/sbin/init”。
Init 程序的工作相当多,它除了利用配置文件“/etc/inittab”来获取运行等级(Run level)之外,还会通过运行等级的设置来启动不同的服务项目。根据有无网络与有无 X Window,Linux 启动分为 6 个运行等级,分别是
0‐halt 系统直接关机。
1‐single user mode 单用户维护模式,用于系统出现问题的时候进行维护。
2‐Multi‐user,withoutNFS 与等级 3 类似,但无 NFS 服务。
3‐Full multi‐user mode 完整的含有网络功能的纯文本模式。
4‐unused 系统保留功能。
5‐X11 与等级 3 类似,但是用 X Window。
6‐reboot 重新启动
文件/etc/inittab 的内容
#设置熊启动的运行等级设置项目
id:3:initdefault:
#开始启动运行等级的服务前,使用检测与初始化系统环境的设置文件:
si::sysinit:/etc/rc.d/rc.sysinit
#7 个不同运行等级需要启动的五福的脚本放置路径:
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
l0:6:wait:/etc/rc.d/rc 6
#是否允许按下[Ctrl]+[alt]+[del]就重新启动的设置项目:
ca::ctrlaltdel:/shin/shutdown ‐t3 一 r now
#本机终端启动的个数:
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
#在 X Window(运行等级 5)环境下的启动脚本设置项目:
x:5:once:/etc/X11/prefdm ‐nodaemon
这个文件的语法是这样的:
[设置项目」:[run level]:[init 的操作行为]:[命令项目]
1.设置项目:
最多 4 个字符,表示 init 的主要工作项目,只是一个简单的表示说明。
2.运行等级:
该项目在哪些运行等级下执行。如果是 35 则表示运行等级 3 与 5 都会执行.
3.init 的操作项目:
主要项目的意义如下:
initdefault:表示取认的运行等级设置值。
sysinit:表示系统初始化的操作项目。
ctrlaltdel:表示[ctrl]+[alt]+[del]三个按健是否可以重新启动的设里。
wait:表示后面接的命令项目必须要执行完毕,才能继续随后的操作。
respawn:表示后面接的 init 仍会主动“重新”启动。
根据文件分析
如 果 我 们 不 想 让 用 户 使 用 [ctrl]+[alt]+[del] 来 重 新 启 动 系 统 , 我 们 可 以 注 释 掉 :
ca::ctrlaltdel:/shin/shutdown ‐t3 一 r now
若果我们想设置系统启动的默认运行等级我们可以修改 id:3:initdefault:的数字。
快捷键:Ctrl+Alt+Del
作用:关闭计算机
注:
快捷键:Alt+Fn(F1,F2,F3……)
作用:切换至第 n 个控制台
注:
1.默认情况下 Linux 为我们提供了 6 个终端或者说是控制台(console)加上图形界面 F7。
2.切换控制台后缓存内容也会被清除。
快捷键:Scroll Lock
作用:当屏幕输出滚动过快的时候可以用这个键给屏幕定格,再按一次解除锁定。
注:
1.锁定屏幕时仅仅只是看上去没有反应,但其实输入的东西系统依旧在处理,只不过你看不到罢了。
2.如果你的控制台出现莫名的无响应,像死机一样,可以尝试一下是否因为不小心触发而造成屏锁定。
快捷键:Shift+PageUP 或 Shift+PageDown
作用:上、下滚动控制台缓存。
注:
快捷键:Ctrl+L
作用:清楚屏幕,相当于 Clear
注:
快捷键:Ctrl+C 或者 Ctrl+\
作用:杀死或者说结束当前任务
注:
快捷键:Ctrl+D
作用:作用是 EOF 即文件末尾(End‐of‐file)。
注:
快捷键:Ctrl+Z
作用:结束进程
注:
快捷键:Ctrl+A
作用:把光标移动到命令行最开始的地方。
注:
快捷键:Ctrl+E
作用:把光标移动到命令行末尾。
注:
快捷键:Ctrl+U
作用:清除命令行中光标所处位置之前的所有字符。
注:
快捷键:Ctrl+W
作用:清除左边的字段
注:
快捷键:Ctrl+Y
作用:将会贴上被 Ctrl+U 或者 Ctrl+K 或者 Ctrl+W 清除的部分
注:
快捷键:Ctrl+R
作用:将自动在命令缓存中增量搜索后面输入的字符。
注:
快捷键:Tab
作用:命令行自动补全
注:
快捷键:Ctrl+K
作用:清除从提示符所在位置到行末尾之间的字符。
标签:login 没有 机制 环境 随机 快捷 加载驱动 硬件 mode
原文地址:http://www.cnblogs.com/fengze/p/6691634.html