Linux系统初始流程
一、0S(内核的功能):平台类软件(通用软件)
进程管理:进程调度器(scheduler)维持一个任务结构(task_struct)
内存管理:如何使用线性地址空间,如何分段,如何分页,如何避免内存(页内,页外)碎片等
I/O管理:给设备提供驱动程序,以及让各设备注册I/O,完成中断
文件系统:ext4,reiserfs,xfs
驱动程序:驱动硬件设备
安全相关:SELinux,加密解密库
二、内核设计的两大流派
1、单内核设计(单一体系结构):将所有功能都做成一个整体在内核中
Linux是单内核(兼具微内核的特性):
模块化设计:核心+外围功能性模块组成
.ko:kernel object
内核支持动态装卸载模块
2、微内核(多体系结构):将各功能做成内核子系统
Windows是微内核:更适合线程类的编程
3、进程由fork()而来,而init负责管理用户空间的进程,这也是之所以init的PID(进程ID)号永远为1的原因,/sbin/init可执行文件
三、Linux系统的初始化流程
1、POST(Power On Self Test)加电自检:ROM+RAM
2、BIOS:Boot Sequence(启动次序)
3、MBR:
前446KB:bootloader
LILO:Linux Loader
不能引导位于1024 Cylinder以后的分区中的OS
GRUB:GRand Unified Bootloader
1st stage:位于MBR中,为了引导2nd stage
1.5 stage:位于boot基本磁盘分区中,为识别内核文件所在的文件系统提供文件系统识别扩展
2nd stage:位于boot基本磁盘分区中,GRUB的引导程序
boot分区大小:
CentOS5:100M
CentOS6:200M
Grub的功能:
选择要启动的内核或系统
交互式接口
基于密码的保护
grub.conf配置文件语法:
default=#:指定默认启动的内核或OS
timeout=#:等待用户选择要启动的内核或OS的时长,单位为秒
splahimage=/path/to/splashimage_file:指定使用的背景图片
hiddenmenu:隐藏菜单
title
root(hd0,0)
(Device,Part)
Device表示方式:在gurb中,全部以hd开头,并紧跟一个数字做各磁盘设备的标记,从0开始编号
Part:表示方式,代表分区,从0开始编号
kernel
指定内核文件及传递给内核的参数
参数:ro root=/path/to/DEVICE quiet(初始化信息以静默模式,不再输出)
initrd
文件:通常为cpio归档,并使用gzip压缩;通常以img作为文件名后缀
grub的安装:
第一种方式:
# grup
grub> root (hd#,#)
grub> setup (hd#)
grub> quit
第二种方式:
# chroot /mnt/sysimage
# grub-install --root-directory=/ /dev/sda(指磁盘)
然后64KB:分区表
最后2KB:5A(特殊标记,用来表示分区表是否有效)
kernel文件:必须要放在基本磁盘分区上(CentOS5:initrd,CentOS6:initramfs)
4、/sbin/init
/lib/modules
initrd:
rd:ram disk,把内存当做磁盘来使用
/sbin/init:
/etc/inittab
/etc/rc.d/rc.sysinit脚本
(CentOS5:/etc/inittab,CentOS6:/etc/init/*.conf)
init:
CentOS 5:SysV格式的系统初始化程序
串行化:A --> B --> C
需要A启动完成后才能启动B,B启动完成后才能启动C
CentOS 6:Upstart并不兼容SysV
基于dbus通信
并行初始化:A启动了不用等到A启动完成就启动B
/etc/inittab中定义的操作:
设定默认运行级别
指定系统运行的初始脚本
启动指定级别下的要启动的服务,并关闭需要停止的服务
/etc/init.d/
/etc/rc.d/rcN.d(0-6)
S##
K##
定义Ctrl+Alt+Delete组合的动作
初始化字符终端
终端:对应的设备
/dev/tty#,/dev/ttyS#,/dev/console,/dev/pts/#
调用:login-->/etc/issue
启动图形终端
X-Window,调用桌面管理器
CentOS 7:SystemD参考了OS X中并行初始化的特性,又能完全兼容SysV
5、系统初始化脚本/etc/rc.d/rc.sysinit
设置主机名
打印文本欢迎信息
激活SELinux和udev
激活swap
挂载/etc/fstab定义的本地文件系统
检测根文件系统并对其以读写方式重新挂载
设置系统时钟
挂载键盘映射
根据/etc/sysctl.conf设置内核参数
激活RAID和LVM设备
清理操作
Linux系统初始流程的更多相关文章
- 9.Linux系统引导流程
一.Linux系统引导流程 当我们按下主机电源键的那时候开始,主板上的CMOS/BIOS模块将进行固件自检,以此检查各个硬件是否正确连接. 在Linux引导流程中,一般可以分为以下几个主要过程: 1. ...
- 使用VM虚拟机安装Linux系统详细流程
最近新换了个电脑,所以需要重新安装虚拟机和Linux系统,话不多说,看流程吧 1.安装vm,这个就不说了,打开VM 2.点击安装虚拟机 3.选择自定义安装 4.选择稍后安装 5.选择要安装的系统 6. ...
- linux系统开机流程详解
今天,我们主要来谈谈计算机系统的启动流程 1.BIOS启动 BIOS是写入到主板上的一个韧体(韧体就是写入到硬件上的一个软件程序).开机的时候,BIOS是计算机系统会主动执行的第一个程序.BIOS主要 ...
- linux系统引导流程
1.固件:硬件和软件结合.加电自检是我们按下电源会检测硬件像cpu.内存.网卡等信息.(从硬件层次检测硬件是否可用) 固件设置实例:设置时间 软件时间和硬件时间: [root@VM_0_12_cent ...
- Linux系统初始化流程
POST-->BIOS(Boot Sequence)-->MBR(bootloader)-->Kernel(initrd)-->/sbin/init(/etc/inittab) ...
- Linux系统初始配置标准化
Inux系统标准化 配置环境:4台Centos7.6版本的虚拟机,刚刚最小化安装完成,未作任何操作,分别是node1.node2.node3.node4 本文打算利用ansible工具对这四台虚拟机进 ...
- Linux——系统引导流程学习简单笔记
开启电源: 固件 firmware(CMOS/BIOS) → POST 加电自检 对硬件就行检查 ↓ 自举程序 BootLoader(GRUB) → 载入内核 ↓ 载入内核 Kernel 1:驱动硬件 ...
- linux系统开机流程
基本步骤:上电->bios->MBR引导->GRUB菜单->加载内核->运行init进程初始化->启动/etc/rc.d*脚本与相关配置文件->执行rc.lo ...
- Linux系统开机启动流程
(来源学习Linux时,自己做的笔记) Linux系统有7个运行级别(runlevel)运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动运行级别1:单用户工作状态,root权限, ...
随机推荐
- 转载:CDH5.X完全卸载步骤
http://blog.csdn.net/wulantian/article/details/42706777 //CDH5.X完全卸载步骤 # by coco # 2015-01-14 1. 关 ...
- JSTL(1.1)的配置
1.查看你的项目中web.xml实际配置的servlet版本号? 2. servlet2.4所需要的jstl版本是1.1,所以上网下载jstl(1.1)的2个jar包,然后把这个2个jar包拷贝到你自 ...
- iOS学习之单例模式
单例模式(Singleton) 概念:整个应用或系统只能有该类的一个实例 在iOS开发我们经常碰到只需要某类一个实例的情况,最常见的莫过于对硬件参数的访问类,比如UIAccelerometer.这个类 ...
- iOS学习之设计模式
iOS开发学习中,经常弄不清楚ios的开发模式,今天我们就来进行简单的总结和探讨~ (一)代理模式 应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现. 优势:解耦合 敏捷 ...
- Cardinal样条曲线的Javascript实现(理论篇)
首先,要对样条曲线进行插值的原因是:希望通过给定的关键帧点生成一条希望的直线或者曲线. 1.直线插值 生成一条直线,给定直线首尾的关键点P0,P1,就能确定这条直线的特性,比如y=kx+b中的斜率k和 ...
- HTML5在VS2010中的智能提示
按照baidu首页的方法是行不通的,于是尝试下面的方法 原文来自这里,我翻译以下 下载这个文件 this archive 并解压. 复制 html_5.xsd to D:\Program File ...
- 在Android Studio和Android Eclipse 更改现有项目里的SDK版本
一,在Eclipse下改项目里的SDK的版本方法有几种,都比较简单:1.右键单击项目--->properties---->Resource----->Android在Project ...
- 关于反射率(reflectance)
首先,BRDF的内容因为见的多,用的多,所以比较容易理解.但是由BRDF引申出来的反射率,跟BRDF比不太常见,有些东西反而不易理解.尤其是组里的某大牛都不甚清楚(说明这个问题不太容易或者太过冷门), ...
- ZOJ 3911 线段树
题意:有N个数字,M个操作,然后回答每个Q开头的询问 操作形式: A val pos:在pos位置上+val Q l r:询问l~r之间有多少个质数 R val l r:把l~r之间的数字替换成val ...
- ajax的status为201依然触发jquery的error事件的问题
昨天在调试一个ajax的时候发现,即使status是201,仍然会触发jquery的error事件.statusText是"parseerror". 通过在stackoverflo ...