猪八戒托管赏金做网站,泸西县住房和城乡建设局网站,网页制作招聘信息,图书管理系统网站开发设计过程一、Linux内核的组成相关概念#xff1a;Linux系统的组成部分#xff1a;内核根文件系统内核#xff1a;进程管理、内存管理、网络协议栈、文件系统、驱动程序。IPC(Inter-Process Communication进程间通信):就是指多个进程之间相互通信#xff0c;交换信息的方法。Linux I… 一、Linux内核的组成相关概念 Linux系统的组成部分内核根文件系统 内核进程管理、内存管理、网络协议栈、文件系统、驱动程序。 IPC(Inter-Process Communication进程间通信):就是指多个进程之间相互通信交换信息的方法。Linux IPC基本上都是从Unix平台上继承而来的。主要包括最初的Unix IPCSystem V IPC以及基于Socket的IPC。另外Linux也支持POSIX IPC。 运行中的系统环境可分为两层内核空间、用户空间 内核空间内核代码系统调用 用户空间应用程序进程或线程 内核设计流派 单内核设计把所有的功能集成于同一个程序Linux 微内核设计每种功能都使用一个单独的子系统实现Windows solarls Linux内核特点 1支持模块化.KOkernel object 2支持模块运动时动态装载或卸载 组成部分 核心文件/boot/Vmliuz-VERSION-release ramdirk: CentOS5:/boot/initrd-VERSION-release.img CentOS6,7:/boot/initramfs-VERSION-release.img二、CentOS系统启动流程总体启动顺序POST(加点自检)--Boot Sequence(BIOS:基本输入输出系统)--Boot Loader(MBR:主引导记录)--Kernel(ramdisk)--rootfs(根文件系统)--switchchroot--/sbin/init/(/etc/inittab /etc/init/*.conf)--设定运行级别--系统初始化脚本--关闭启动相应服务--启动终端 总流程图各流程细化说明 1、POST加电自检 主要是检测硬件设别是否能正常的运行然而实现自检功能主要是由镶嵌在主板芯片(CMOS)上的BIOS(basic input output system)程序检测没问题之后进行硬件设备的初始化。 2、Boot Sequence(启动管理程序):选择启动顺序加载MBRBoot Sequence是一个程序它依赖于某个硬盘硬件准确的说是第一个硬盘扇区的MBR从而按次序查找各引导设备。3、MBR引导bootloader引导加载器启动程序 MBR(Master Boot Record)此记录在0磁道1扇区总共为512字节前446字节为bootloder后64字节为分区表信息主分区加上扩展分区不能大于四个最后2个字节为校验信息为55AA。提供一个菜单允许用户选择要启动的系统或不同的内核版本把用户选定的内核装载到RAM中的特定空间中解压、展开而后把系统控制权移交给内核。4、kernel内核实现 kernel自身初始化实现功能借助ramdisk探测可识别的程序以自读方式挂载根文件系统运行应用程序/sbin/init 5、/sbin/init/管理用户空间服务进程 设定运行级别进行初始化脚本关闭或启动相应的程序启动终端。 GRUBGRand Unified Bootloader加载内核就是MBR中的前 446 个字节是BooTLoader的一种它的作用是要选择要启动的内核。 GRUB相关说明 演示………………………………………………………………………………………………………………………主要是由device.mapmenulststage1,stage2,以及一系列的stage1_5组成。device.map存放的是内核文件的根分区menu.lis为菜单列表里面为可选择的菜单列表存放于stage2中。stage用于grub引导程序过大所以分2段引导第一段存放在MBR中第二段存放于内核文件系统中第一段引导完成后可以找到第二段。 但是第二段是存放于内核文件系统中的此时还没有格式化文件系统如何可以访问到第二段的menu.lst就需要借助于中间层 stage1_5有它来协助 stage1 段来访问stage2阶段。stage1_5通常位于stage1 字段后的 63 个扇区。 由于stage2 在内存中存放可以使用的文件系统不确定所以这就是有多个stage1_5 的原因。Grub Legacy分三阶段stage1存放在MBR上stage1_5存放在MBR之后的扇区让stage1中的bootloader能识别stage2所在的分区上的文件系统stage2磁盘分区/boot/grub/ 引导加载程序先读取MBR上的gurb第一阶段由于MBR很小只有512字节采用grub这种方式引导程序随后读取扇区中的stage1.5阶段读取1.5阶段以后从而就能驱动第二阶段stage2所在的磁盘分区stage2是存放在磁盘分区上的还包括了内核文件及ramdisk等都在这个分区上存放的这就是为什么通过Bootloader之grub就能够加载内核文件的原因。 注意当前硬件平台主板BIOS必须能识别硬盘然后BIOS才能加载硬盘中的Bootloader磁盘中的Bootloader自身加载完以后就能够识别当前主机上的硬盘设备了。但硬盘设备能识别并不代表硬盘上的文件系统能识别因为文件系统是额外附加的一层软件组织的文件结构所以要能够对接一种文件系统必须要用到文件系统驱动对应的应用程序必须能识别和理解这样的文件系统才可以这种程序就称为文件系统驱动grub的1.5阶段就是给gurb提供了文件系统驱动的从而就能够访问对应的第二阶段和内核所在的分区了这通常是一个基本磁盘分区所以grub第二阶段以及内核和ramdisk文件通常都会放在一个基本磁盘分区上因为grub驱动不了逻辑卷这种高级接口。 stage2一般是挂载至/boot/grub/目录下grub也有自己的配置文件/boot/grub/grub.conf且通常有个符号链接文件/etc/grub.conf stage2的功用 1提供菜单或交互式接口 2能加载用户选择的内核或操作系统 3为菜单通过了保护机制。/boot/grub/grub.conf配置文件详解[rootcentos6 grub]# ll /etc/grub.conf #/etc/grub.conf /boot/grub/grub.conf为连接文件
lrwxrwxrwx. 1 root root 22 8月 11 03:29 /etc/grub.conf - ../boot/grub/grub.conf
[rootcentos6 grub]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root/dev/sda2
# initrd /initrd-[generic-]version.img
#boot/dev/sda
default0 #设定默认启动菜单项默认为0开始
timeout5 #指定菜单等待选择的时长
splashp_w_picpath(hd0,0)/grub/splash.xpm.gz #指定菜单的背景图片的路径为xpm格式采用gzip压缩
hiddenmenu #是否影藏菜单
password [--md5] $1$JO0kw$z.qtBMH.KL4A6qZ7dK4N30 #菜单编辑认证
title CentOS 6 (2.6.32-642.el6.x86_64) #定义菜单项
root (hd0,0) #本次grub查找stage2及其kernel文件所在设备分区指定grub的根
kernel /vmlinuz-2.6.32-642.el6.x86_64 ro rootUUID240533cf-b37f-4460-974f-702bab867da5 nomodeset rd_NO_LUKS KEYBOARDTYPEpc KEYTABLEus rd_NO_MD crashkernelauto LANGzh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet #需要启动的内核
initrd /initramfs-2.6.32-642.el6.x86_64.img #内核匹配的ramfs文件
password [--md5] STRING #启动内核选定的内核或操作系统是进行的认证
[rootcentos6 grub]#进入单用户模式 1编辑grub菜单选定要编辑的title而后使用e命令 2在选定的kernel后附加1 s 或single 3在kernel所在的行键入b键 演示启动时按e键上下选择到kernel后按e编辑输入1或s、S、single,再次按b键重启6、根切换 在挂载根文件系统时为了避免内核中有bug或操作过程中有bug导致根文件系统被损坏先只读挂载根文件系统加载完成后才读写挂载完成整个挂载根文件系统后直接去找/sbin/init程序即开始运行用户空间的第一个程序。用户空间启动流程7、/sbin/init程序 init程序主要依赖于配置文件/etc/inittab大体分为设定默认启动级别 -- 设定系统初始化脚本 -- 启动对应级别的服务 -- 打印各终端登录界面如果级别为3处理提供文本登录界面如果级别为5还提供图形登录界面8、设置默认运行级别 1运行级别为了系统的运行或维护等目的而设定的机制 0-6共7个级别 0关机shutdown 1单用户模式single userroot用户无须认证维护模式 2多用户模式multi user会启动网络功能但不会启动NFS维护模式 3多用户模式multi user完全功能模式文本界面 4预留级别目前无特别使用目的但习惯以同3级别功能使用 5多用户模式multi user完全功能模式图形界面 6重启reboot图示读取配置文件:/etc/inittab 2配置文件/etc/inittab定义了很多功能每一行定义一种操作action以及与之对应的process仅适用于CentOS 5一行就定义了init要执行的任务甚至是一堆任务每一行的语法格式为 id:runlevels:action:process id为一个任务的标识符 runlevels在哪些运行级别下启动此任务例32345也可为空表示所有级别 action在什么条件下启动此任务 wait等待切换至此任务所在的级别时执行一次刚刚切换进来时 respawn一旦此任务终止时就自动重启如登录终端执行logout登出后会再次启动 initdefault设定默认允许级别此时process省略为空 sysinit设定系统初始化方式此处一般为指定/etc/rc.d/rc.sysinit脚本CentOS 5,6都用到此脚本CentOS 7是靠systemd完成的在CentOS 6中仅保留此配置文件中设定启动运行级别的功能。 process具体任务通常为应用程序或脚本或二进制的程序取决于自定义。演示9、系统初始化脚本系统初始化脚本/etc/rc.d/rc.sysinit1设置主机名2设置欢迎信息3激活udev和selinux4挂载/etc/fstab文件中定义的所有文件系统5检测根文件系统并以读写方式重新挂载根文件系统重新挂载是指根文件检测完之后6设置系统时钟7根据/etc/sysctl.conf文件来设置内核参数8激活lvm即软raid设备9激活swap设备10加载额外设备的驱动程序内核加载驱动只加载根文件系统的11清理操作注意在init配置文件/etc/inittab中有一行内容是定义/etc/rc.d/rc.sysinit此脚本文件是负责完成系统初始化的脚本文件。10、关闭/启动对应级别下的服务 脚本文件/etc/rc.d/rc作用为当级别切换时启动或停止服务此脚本接受传递的参数给脚本中$runlevel变量然后读取/etc/rc$runlevel.d/K*和/etc/rc$runlevel.d/S*所有文件这些文件就是为什么开机启动后有些服务会自动启动有些服务没有启动的原因。K*要停止的服务K##*优先级数字越小越优先关闭依赖的服务先关闭然后再关闭被依赖的。S*要启动的服务S##*优先级数字越小越是优先启动被依赖的服务先启动而依赖的服务后启动。/etc/rc.d/init.d目录还有个链接目录为/etc/init.d目录这两目录下文件相同。如上诉定义将会启动3级别下的以S打头的进程图示11、启动终端图形终端 操作系统启动完成三、系统启动流程总结。内核级别1.POST做开机启动时候的硬件检测功能2.BootSequence(BIOS)启动加载主引导分区MBR中的引导加载器程序BootLoader 在LInux现行的BootLoader是三段划分(打破446字节限制)的GRUB程序 第1段写在BootLoader中 第1.5段在其后扇区用于文件系统的引导 第2段在boot/grub中提供内部接口和调用系统内核kernel3.Kernel识别硬件、加载驱动、只读挂载根文件系统、同时交付给用户空间第一个程序/sbin/init此处特别要注意系统发行商为了适应多种硬件接口驱动调用会在第一次安装系统时候自动识别硬件接口并调用唯一驱动程序来生成ramdisk文件以内存当磁盘做虚根驱动接口后会切换到真实的根文件系统上CentOS 5系列是initrd当磁盘映像文件会造成二次缓存缓冲CentOS 6/7系列改进为initramfs以文件系统形式可以不二次占用缓存和缓冲用户空间级别4./sbin/init接管后更具其配置文件来初始化5.根据/sbin/init中的配置会设置默认运行级别以及一些在/etc/init.d/设置的开机服务6./etc/rc.d/rc.sysinit运行系统初始化脚本完成系统初始化7.关闭对应级别下需要停止的服务启动对应级别下需要开启的服务8.设置登录终端本文出自小耳朵综合总结如有相识之处可留言小耳朵管理员:) 转载于:https://blog.51cto.com/purify/1843124