CentOS系列启动流程(5系列,6系列,7系列)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS系列启动流程(5系列,6系列,7系列)相关的知识,希望对你有一定的参考价值。
一、Linux启动内核文件
1.Linux系统组成
动态视角:内核+根文件系统
静态视角:磁盘分区+相关文件
2.Kernel特点
(1)支持某块化:.ko (kernel object)文件
centos7的ko文件:
centos6的ko文件:
注意:
Linux内核模块文件的命名方式通常为<模块名称.ko>
centos6系统的内核模块被集放在/lib/modules/‘uname -r ‘/目录下
centos7系统的内核模块被集放在/usr/lib/modules/‘uname -r ‘/目录下
(2)支持模块运行时动态装载或卸载;
模块的相关命令:
a)加载模块:insmod modprobe
insmod和modprobe的区别:
当a模块与b模块有依赖关系时,假设安装b模块需先安装a模块。
如果用insmod命令那么需要先insmod a.ko 然后再insmod b.ko。
如果用modprobe命令那么直接可以modprobeb.ko。
其中/lib/modules/“内核版本号”/modules.dep中记录了模块之间的依赖关系。
通过modprobe加载的内核均在当前的计算机内有效,计算机重新启动后需要重新加载才有效。
如果想要开机后自动挂载内核,需要将modprobe命令写入/etc/rc.sysint文件中
b)卸载模块:rmmod modprobe -r
rmmod:只需要调用模块名即可,比如安装的时候是inmod a.ko 安装完毕后该模块存在于内核中的名字为a,那么卸载该模块只需要rmmod a即可。
modprobe -r:能将依赖的模块一并卸载掉
[[email protected] ~]# modprobe ip_vs #动态加载ip_vs模块
[[email protected] ~]# lsmod |grep ip_vs #查看模块是否加载成功
ip_vs 125220 0
libcrc32c 1246 1 ip_vs
ipv6 317340 289 ip_vs
[[email protected] ~]# modprobe -r ip_vs #卸载动态模块
[[email protected] ~]# lsmod |grep ip_vs #模块已经卸载干净
c)查看模块:lsmod
输出三列信息
分别为模块 占用内存 是否被调用
如果第三列为0则该模块可以随时可以卸载。
总结:Linux kernel在单内核设计模型上,吸取了多内核设计的优点,使用了模块化设计
单内核设计:把所有功能集成于同一个程序;如Linux
微内核设计:每种功能使用一个单独的子系统实现;如Windows, Solaris
3.kernel组成
(1)核心文件
1)/boot/vmlinuz-VERSION-release
注: vmlinuz最后一一个z表示压缩格式的kernel文件
2)ramdisk(中间临时文件根系统,动态创建出来的,使用缓冲和缓存来加速对磁盘上的文件访问)
安装操作系统后临时生成的文件,能够扫描当前操作系统的硬盘驱动,装载对应的模块
用于实现系统初始化的基于内存的磁盘设备,把内存中的一段空间当内存使用
CentOS 5:/boot/initrd-VERSION-release.img
工具程序:mkinitrd
CentOS 6,7:/boot/initramfs-VERSION-release.img
工具程序:dracut, mkinitrd
注意:
a)不是必须的,当自编译内核时候知道硬盘接口时候将硬盘驱动编译进kernel,ramdisk就不用了
b)initrd,基于ramdisk的磁盘映像文件;initramfs,基于ramdisk的文件系统
initrd启动该后用free查看memory时候,有一段空间被buffers和cached占用,二次缓存
本文出自 “2913680” 博客,谢绝转载!
以上是关于CentOS系列启动流程(5系列,6系列,7系列)的主要内容,如果未能解决你的问题,请参考以下文章
系列6使用Dockerfile创建带mysql5.7的Centos Docker镜像1