生活随笔 2012-03-20
引导流程
1. 固件 firmware(CMOS/BIOS) -> POST 加电自检
固件时钟和软件时钟的同步
date 查看软件时钟
hwclock 查看固件时钟
hwclock --hctosys 通过硬件时钟去修改软件时钟
hwclock --systohc 通过软件时钟去修改硬件时钟
hwclock --set --date="9/22/96 16:45:05"
date 121511302012.38修改软件时间
2. Master boot record MBR 主引导记录 0柱面0磁头1扇区,载入自启动程序
bootLader 自启动程序
3. GRUB 自举程序 -> 载入内核
GRUB vi /etc/grub.conf 查看自举配置文件
4. Kernel 内核 -> 驱动硬件
5. 启动进程init
init启动后,读取inittab文件
init 的PID 永远都是1
PID为0的进程的是内核调度器
linux 运行级别
0 关机 shutdown
1 单用户模式 Single user mode,没有图像界面,只能root登陆
2 没有NFS服务 network file server 字符界面的运行级别,没有图像界面
3 有NFS服务 字符界面的运行级别,没有图像界面
4 自定义运行级别
5 系统缺省的运行级别 X11 图形化的多用户模式
6 重启 reboot
runlevel 查看当前运行级别
init[0123456Ss] 或 telinit[0123456Ss] 去换运行级别 demo: init 1
grep -v '^#' 排除于#开头的行
man 可以查看系统命令帮助和系统配置文件的帮助信息
inittab 文件解析
所有的条目采用的格式都是 id:run-levels:action:process
id: 标示符,一般为2位字母或数字
run-levels:指定运行级别,可以指定多个
action: 指定运行状态
process:指定要运行的脚本/命令
action常用取值
initdefault: 指定系统缺省启动的运行级别
sysinit:系统启动执行process中指定的命令
wait: 执行process中指定的命令,并等其结束在运行其他命令
once: 执行process中指定命令,不等待其结束
ctrlaltdel: 按下Ctrl+Alt+ Del执行process指定的命令
respawn: 一旦process指令的命令中止,便重新运行该命令
powerfail: 当出现电源错误时执行process指定的命令,不等待其结束
powerokwait: 当电源恢复时执行process指定的命令
在/etc/rc.d/rc.sysinit下的shell脚本开机就会运行
/etc/rc.d/rc脚本执行相应运行级别目录中的服务程序,完成相应运行级别初始化设置
/etc/rc.d目录下有7个服务启动shell脚本 rc0.d 到 rc6.d,在开机时,系统设置为缺省的运行级别时,它就会运行运行级别对应的服务启动shell脚本来完成系统的后续引导
rc3.d下面有2种类型的文件
S12syslog
S开头 Start 表示要开启问服务
K开头 Kill 表示要不开启的服务
第二个是数字,数字越小,越优秀启动,数字相同,这安装定义脚本的优先顺序执行
第三个是定义脚本的名称
手动开启和关闭服务
/etc/rc.d/init.d目录下
demo: /etc/rc.d/init.d sshd restart 重启sshd服务
引导流程大致步骤
firmware
|
BootLoader
|
Kernel
|
init进程
|
/etc/inittab
|
initdefault
|
/etc/re.d/rc.sysinit
|
/etc/rc.d/rc
|
/etc/rc.d/rcN.d N = 0-6
|
username/password
设置自启动程序
ln -s 设置软连接 ln -s 源文件 软链接目录
chkconfig 查看自启动程序
chkconfig --list name
chkconfig --add name
chkconfig --levels 123 sshd off 把123运行级别的sshd服务关闭
ntsysv 更改当前运行级别的自启动程序
ntsysv --level 3 将显示出指定运行级别的所以自启动程序,并可以修改
dmesg 查看系统启动的所有信息