您的位置:首页 > 运维架构 > Linux

Linux的启动和关机的流程、引导加载程序

2017-05-07 22:25 483 查看
本文为鸟哥中18章笔记

18.1 启动流程

不能随意关机,多用户的操作系统,关机导致其他在线用户数据丢失

后台任务的数据丢失,硬盘损坏

启动过程

加载bios,获取第一个启动设备的代号

读取第一个启动设备的MBR的引导程序grub或lilo的启动信息

加载操作系统核心,解压缩、尝试驱动所有硬件设备

核心执行init程序并获取运行信息

init执行/etc/rc.d/rc.sysinit文件

启动核心的外挂模块/etc/modprobe.conf

执行各个批处理文件

init执行/etc/rc.d/rc.local文件

执行login程序

登陆之后shell控制主机

引导加载程序与核心载入

MBR (mater boot record)

第一个启动设备是硬盘,硬盘的MBR中安装了 引导加载程序 ,因为系统核心为加载时无法识别文件系统,引导加载程序就是找到系统的核心文件并加载它到主存储中。

核心加载过程中,可能会建立initrd虚拟盘RAM disk

加载核心之后,开始执行init程序



init程序、/etc/inittab与runlevel 运行等级

init根据/etc/inittab的运行等级启动服务和程序

运行等级

作用,规定系统启动的服务,让linux的运行环境不同

0-halt 直接关机

1-single User mode 单用户模式,用于系统出问题的维护,类似windows安全模式

2-multi-user ,without nfs 没有nfs服务

3-full multi-user mode 完整的网路功能的文本模式

4-unused 系统保留

5-x11 和3类似但是使用xwindow模式

6-reboot 重新启动

0、4、6 不能用于默认的启动模式

启动模式设置在/etc/inittab文件中,ubuntu不在该文件夹下

一般用3、5设置启动等级

接下来启动 sysinit

init处理系统初始化流程sysinit

获取网络环境和主机类型

载入内存设备/proc 和usb设备/sys

决定是否启动SELinux

监测设备和pnp参数测试

自定义模块的加载

。。。。

。。。

将启动信息写到dmesg文件

启动系统服务 /etc/rc.d/rc3,可以打开看看文件的格式

要在运行等级为3时启动某个服务,要将其写入到rc3.d文件中,该文件

S开头的文件为启动时要启动的服务,K开头的文件为关闭时要关闭的服务

SK后接的时执行顺序

用户自定义启动程序

/etc/rc.d/rc.local

将脚本的完整文件名写到该文件中,就可以开机自启动

切换运行等级

运行等级不同启动,结果只是启动了/ect/rc.d/rc[0-6]的文件里的服务不同而已

修改运行等级

修改默认等级需要修改/etc/initab

暂时修改 init [0-6]

执行的过程,将如现在是rc3 执行init 5,系统执行的动作有

比较rc3与rc5之间的K、S文件不同

关闭rc3中启动的而rc5中没有的服务

启动rc5中有二rc3中没有启动的服务

查看当前运行等级 runlevel

18.2 核心与核心模块

启动过程中核心 驱动主机的硬件设备

核心可以读取驱动程序modules

核心和核心模块的位置

核心:/boot/vmlinuz,已编译的二进制文件

核心的解压缩RAM Disk /boot/initrd,

核心modules:/lib/modules,

核心源码/usr/src/linux,

如果要添加一个新硬件,操作系统不支持,需要重新编译核心

核心modules与依赖性

核心的文件结构

2. 核心的依赖性保存在 modules.dep文件中

使用depmod可以建立该文件

将已编译好的驱动程序放到kernel目录的对应文件夹下,执行depmod就可以更新modules.dep文件,核心就能识别该模块

核心modules的观察 lsmod 、modinfo

查看modules的信息

核心modules的加载与删除

insmod 手动添加模块

不会分析模块的依赖性

rmmod删除模块

modprobe处理模块的加载问题

该命令直接搜索modules.dep文件的依赖性,更方便

modprobe modulename

核心模块的额外参数设置

在/etc/modprobe.conf

18.3引导加载程序 Grub

MBR的512k不足以安装grub,分阶段安装

stage1:安装grub的最小主程序,并不加载相关设置文件,主程序安装在MBR或者超级块(分区的第一个扇区)

stage2:加载引导加载程序的相关设置文件和相关环境参数,一般在/boot

grub可以完成的功能:

指定并取用核心文件,加载到主存储器中

将加载任务交给下一个加载程序

例如

MBR中安装了windows和linux的grub,/dev/hda2/的超级块安装了linux的grub2,核心文件放在该分区/boot/linuz,/dev/hda1安装了windows的grub1,

mbr可以直接指定核心文件启动

可以将起交给grub2启动

交给grub1启动

linux可以将grub的主程序安装在mbr或超级块,windows只能安装在超级块,所以需要先安装windows在安装linux,否则linux的主程序将会被覆盖。

但是可以修改

18.5 启动过程的问题

忘记root密码

以运行等级1进入单用户模式

修改/etc/shadow 将root的哪一行的第二个字段去掉,root就没密码了

使用knoppix工具

设置错误无法进入系统

例如磁盘配额错误

进入单用户模式 重新载入根目录,

没有正常关机

进入单用户模式运行fsck修复磁盘
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  操作系统 linux