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修复磁盘
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+shell编程 笔记 启动关机的流程与加载程序
- 《鸟哥的linux》-第18章-启动关机的流程与加载程序
- 第18章 启动关机的流程与加载程序
- linux的启动流程和加载程序
- linux启动引导程序配置文件
- [Linux内核完全剖析]第六章 引导启动程序(boot)总结
- Linux0.12引导启动程序
- gm8180:arm linux启动加载模块、运行程序 分类: arm-linux-Ubuntu 2013-07-22 16:30 416人阅读 评论(0) 收藏
- Linux 引导启动程序(boot)
- Linux系统启动引导程序配置文件解析
- linux启动引导程序lilo与grub区别
- Linux下程序的加载、运行和终止流程 .
- 试图搞懂MDK程序下载到Flash(一)--Nand Flash启动流程,加载域和运行域
- Linux 引导启动程序(boot)
- linux启动引导程序配置文件
- Linux系统启动引导程序配置文件解析
- linux0.11 引导启动程序目录boot/分析
- linux内核完全注释---学习札记--引导启动程序boot
- Linux-0.11学习总结——引导启动程序部分
- Linux系统启动引导流程