接下来我们继续对linux继续进行深入学习,这次一起分享的是我在学习linux引导流程的一些笔记!
linux引导流程解析:
课程大纲:
linux引导流程
linux运行级别
linux启动服务管理
grub配置与应用
启动故障分析与解决
首先我们要清楚系统的引导流程,具体如下:
固件 firmware (cmos/bios) - post加电自检
↓
自举程序BootLoader(grub) - 载入内核
↓
载入内核Kernel – 驱动硬件
↓
启动进程init
↓
读取执行配置文件/etc/inittab
接下来,对流程进行详细的剖析:
一、常用固件设置
比如:安全设置 可引导介质列表 可引导介质搜索顺序 电源管理 启动设置 等都是常用的固件设置
这里我们学习一些关于时钟的东西,首先我们要知道时钟分为硬件时钟和软件时钟,硬件时钟是固化在固件中的,可以通过hwclock查到,而软件时钟,可以通工date命令查到
硬件时钟与软件时钟有时候可能不一致,所以我们需要同步时钟,我们可以man一下hwclock命令
发现其中两个选项:
-s | –hctosys set the system time from the hardware clock 设置硬件时间为系统时间
-w | –systohc set the hardware clock to the current system time 设置系统时间为硬件时间
我们可以使用这两个选项来同步时间!
另外,如果硬件与软件都是错,还有一个选项 –set 修改硬件时间 –date 可以修改软件时间
date 121411302011.38 修改系统时间为2011年12月14日 11点30分38秒
hwclock –set –date=”9/22/96 15:45:05″修改硬件时钟为96年9月22日 15点45分5秒
二、如果固件没有问题,接下来接下来读取MBR (master boot record )即主引导记录 位于零柱面零磁头零扇区
MBR里面保存着三个东西
bootloader、 partition table 磁盘分区表、magic number结束标志字
今天解释一下 bootloader:
linux中常用grub windows常用ntldr 因为windows为nt内核
nt为new techonicla的缩写
GRUB的应用和配置在后面详细介绍
自举程序最重要的作用的载入内核,不管什么操作系统
内核包括计算机整个管理的完成
2.6.18 主版本号-次版本号-末版本号 第二位比较重要
奇数为测试版 偶数为正式版
内核可以下载并且升级
内核为独立的一个文件 /usr/src/linux 中放着没有编译的内核文件
三、载入内核kernel 以后 内核只做两件事情
一个是驱动硬件,下载的内核中保存中最多的都是驱动程序;可以进行裁剪。二是 启动进程init 是系统启动的第一个进程
init的工作:
init启动后读取inittab文件,执行确省运行级别,从而继续引导过程。在unix操作系统中,init时第一个可以存在的进程 他的PID恒为1,但他也必须向一个更高级的功能负责,PID为0的内核调度器(kernel scheduler)用来分配cpu时间,从而获得cpu时间
父进程终止,子进程终止
父进程死了 子进程还没有死,这个时候称作孤儿进程,这样的进程是不允许存在的,如果检测到这样的进程时,自动将其父进程指向为init、
子进程死了,父进程还不知道,还在保持联系,还没切断,这样进程教程僵尸进程,用Z表示,这样的进程也是不允许存在的!
四、接下来读取/etc/inittab配置文件
首先讲linux的运行级别
runlever 从0到6
运行级别类似与windows中安全模式选项等 ,可以在linux出现安全故障时进行修复
0 系统不推荐
1是linux的单用户模式 只有root可以登录 没有图形界面
2和3都是linux的多用户模式,
2与3的区别是2没有nfs功能,nfs可以实现文件共享,简单设置,但是安全性不好
4.没有在使用的,可以用户自己定义
5.系统缺省的运行级别 x11是图形界面版本号。 图形化的多用户环境
6.reboot不停重启
运行级别的切换:
1 查看当千运行级别 runlevel
2 运行级别的切换 init[0123456Ss] telinit[0123456Ss]
telinit是init的一个软链接
所以一般使用init