Centos7启动流程及Systemd中Nginx启动配置

Centos7启动流程:

1.post(Power-On-Self-Test) 加电自检

1 主要实现的功能是检测各个外围硬件设备是否存在而且能够正常运行起来,实现这一自检功能的是固化在主板上的ROM(主要代表为CMOS)芯片上的BIOS(Basic Input/Output System)程序;例如BIOS会检测CPU、Memory以及I/O设备是否能够正常运行,如果是个人计算机的话可能还会检测一下显示器。只要一通电,CPU就会自动去加载ROM芯片上的BIOS程序,是这样来实现的。而检测完成之后就进行硬件设备的初始化。

2. bootsequence(BIOS,选择启动设备)

1 主要实现的功能是选择要启动的硬件设备,选择了之后就可以读取这个设备上位于MBR里头的bootloader了。这一步的实现是这样的:根据BIOS中对启动顺序的设定,BIOS自己会依次扫描各个引导设备,然后第一个被扫描到具有引导程序(bootloader)的设备就被作为要启动的引导设备。

3.bootloader(MBR)

这一步实现起来的步骤比较多,前面的BIOS通过读取并执行启动设备的MBR中的bootloader,而bootloader要实现的功能就是提供一个菜单给用户,
让用户去选择要启动的系统或不同的内核版本,然后把用户选择的内核版本加载至RAM中的特定空间,接着在RAM中解压、展开,而后把系统控制权移交给内核。

grub是bootloader中的一种,就grub来说,为了打破在MBR中只有446Bytes用于存放bootloader这一限制,所以这一步的实现是这样的:grub是通过分成三个阶段来实现加载内核这一功能的,这三个阶段分别是:stage1, stage1.5以及stage2。其中:

stage1:存放于MBR的前446Bytes,用于加载stage1.5阶段,目的是为了识别并驱动stage2(或者/boot)所在分区的文件系统;

stage1.5:存放于MBR之后的扇区,加载stage2所在分区的文件系统驱动,让stage1中的bootloader能识别stage2所在分区的文件系统;

stage2:存放于磁盘分区之上,具体存放于/boot/grub目录之下,主要用于加载内核文件(vmlinuz-VERSION-RELEASE)以及ramdisk这个临时根文件系统(initrd-VERSION-RELEASE.img或initramfs-VERSION-RELEASE.img)。

概述:假如要启动的是硬盘设备,首先我们的硬件平台主板BIOS必须能够识别硬盘,然后BIOS才能加载硬盘中的bootloader,而bootloader自身加载后就能够直接识别当前主机上的硬盘设备了;不过,能够识别硬盘设备不代表能够识别硬盘设备中的文件系统,因为文件系统是额外附加的一层软件组织的文件结构,所以要对接一种文件系统,就必须要有对应的能够识别和理解这种文件系统的驱动,这种驱动就称为文件系统驱动。而stage1.5就是向grub提供文件系统驱动的,这样stage1就能访问stage2及内核所在的分区(/boot)了。
注意:kernel和initramfs的文件路径均以grub的"根"作为起始目录,且存放于stage2所在分区上;

需要注意的是,stage2、内核以及ramdisk文件通常放置于一个基本磁盘分区之上,因为grub无法驱动lvm、高级软raid等复杂逻辑设备,除非提供一个复杂的驱动接口,否则如果stage2及内核等文件都存放在lvm等复杂逻辑设备上将无法被stage1所识别,更别说加载了!

4.kernel初始化

Kerenl在得到系统控制权之后,首先要进行自身初始化,而初始化的主要作用是:

(1)探测可识别到的所有硬件设备;

bootloader将系统控制权移交给内核就好比如后朝推翻前朝,统治者(内核)当权之后,首先要检查一下有哪些是前朝所留下的,例如有哪些领土、人力、财力、兵力可用等等。

(2)加载硬件驱动程序,即加载真正的根文件系统所在设备的驱动程序(有可能会借助于ramdisk加载驱动);

这就像统治者(内核)在得知底下存在的人力、财力之后,开始将可以“为我所用”的人力纳入麾下,听自己使唤,而不听使唤的杀掉;

(3)以只读方式挂载根文件系统;

如果有借助于ramdisk这个临时文件系统(虚根),则在这一步之后会执行根切换;否则不执行根切换。

(4)运行用户空间的第一个应用程序:systemd.

到这里内核空间的启动流程就结束了,而接下来是用户空间完成后续的系统启动流程。

5.init管理用户空间服务进程

systemd执行默认target配置,配置文件/etc/systemd/system/default.target
systemd执行sysinit.target初始化系统及basic.target准备操作系统
systemd启动multi-user.target下的本机与服务器服务
systemd执行multi-user.target下的/etc/rc.d/rc.local
Systemd执行multi-user.target下的getty.target及登录服务
systemd执行graphical需要的服务

编写Nginx的systemd配置文件, 实现nginx进程开机启动

vim /lib/systemd/system/nginx.service
 [Unit]
 Description=nginx server
 After=network.target

 [Service]
 Type=forking
 ExecStart=/usr/sbin/nginx

 [Install]
 WantedBy=multi-user.target

[root@localhost ~]#systemctl enable nginx.service

总结

以上所述是小编给大家介绍的Centos7启动流程及Systemd中Nginx启动配置,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • centos7系统安装配置openvpn服务端

    一直没研究过vpn,最近找个视频,学了下,搭环境,测试成功,速记录在案: 使用环境: openvpn服务端安装在centos7系统平台上:   openvpn客户端安装在windows平台上: 其中的操作步骤有些很像此前写过的一篇文章CA服务器签署证书的步骤: openvpn就是安全的vpn,通过openssl实现ssl加密解密: openvpn实现的简单原理个人理解是: 通过openvpn客户端和服务器端用虚拟网卡建立逻辑的安全的通信连接,然后再通过物理网卡传输数据: 即首先openvpn服务

  • 在Win2003服务器上架设VPN服务器的方法

    通过在美国服务器或VPS上架设VPN服务,您可以访问一些被国内屏蔽的网站,如facebook.twitter等.当然,千万不能用这个工具来访问色情和政治性的网站,这是不道德的.如果你是在基于Virtuozzo虚拟化技术的VPS上架设VPN,请先联系你的服务商在母服务器开启VPN功能,否则无法进一步配置.如果是基于Xen或者Hyper-V技术的VPS,则直接就可以配置.之前本人配置VPN的时候,在网上很难找到一步一步的配置文章,也没有附上图片说明,现在我详细写出配置步骤,并附上截图,供后来者参考.

  • CentOS 6 启动流程详细介绍

    CentOS 6 启动流程详细介绍 1. POST(Power On Selt Test) 上电自检: 按下电源键首先要检测硬件设备是否能正常运行,如:cpu.内存.硬盘等硬件设备.当然POST不是由硬件去检测(硬件也不会啊!),而是依靠一个软件来完成的,这个软件就是BIOS(Basic Input Output System)基本输入输出系统,它安装在CMOS芯片上,上电就是给CMOS加电,然后启动BIOS程序,BIOS会根据CMOS上记录的硬件信息去读取硬件并检测是否能正常运行,之后初始化硬

  • CentOS7安装Nginx并配置自动启动的方法步骤

    1.官网下载安装包 http://nginx.org/en/download.html,选择适合Linux的版本,这里选择最新的版本,下载到本地后上传到服务器或者centos下直接wget命令下载. 切换到/usr/local目录,下载软件包 # cd /usr/local # wget http://nginx.org/download/nginx-1.11.5.tar.gz 2.安装nginx 先执行以下命令,安装nginx依赖库,如果缺少依赖库,可能会安装失败,具体可以参考文章后面的错误提

  • 在Windows Server 2008 R2服务器下架设VPN服务器的方法

    系统环境: Windows Server 2008 R2 Enterprise 6.1.7600.16385 RRAS 5.2.0000 NPS 6.1.7600.16385 测试目的:架设VPN服务器并通过VPN访问内部网络 操作步骤: 1.在服务器管理器中添加角色"网络策略和访问服务",并安装以下角色服务: 下一步直到安装完成. 2.在 开始->管理工具->路由和远程访问 中打开RRAS,简陋的界面如下: 点击服务器状态,可看到目前只有一台服务器(就是本机).以我的计算

  • Linux下使用docker搭建Openvpn代理的方法

    说明 openvpn方式与pptpd方式对比(个人感觉): 复杂度:openvpn>pptpd 安全性:openvpn>pptpd 稳定性:openvpn>pptpd 1.安装 1.下载 docker pull kylemanna/openvpn 2.全局变量(方便设置) OVPN_DATA="/root/ovpn-data" // 下面的全局变量换成你的服务器的外网ip IP="xxx.xxx.xxx.xxx" 3.创建文件目录 mkdir ${

  • 快云vps主机配置免费vpn服务器的方法(windows/linux)

    最近发现有好多的朋友在找免费的vpn帐号,通过免费vpn代理ip,利用vpn翻墙技术去寻找自己想要的东西,临渊羡鱼,不如退而结网,今天快云VPS小编,就分享一下,利用相关的免费vpn代理软件和快云VPS怎么配置自己的免费vpn代理服务器,有了自己的免费vpn代理服务器,建立自己的vpn帐号,就不用在到处去找免费的vpn了,或许你还可以送给你的小伙伴一些免费vpn帐号. 因为快云VPS最低的配置型号-快云VPS基础型都支持安装Windows系统,所以,我们首先需要根据我们个人习惯,或者对Windo

  • Windows 2008 R2 单网卡搭建vpn实战设置方法

    本人原创,转载请注明CSDN转载,如有错误欢迎指正 谢谢! 由于公司突然不让上QQ和旺旺之类的聊天工具,一直对外联系也靠QQ,现在突然间没有办法使用基本上就断了对外联系的工具,本人通过公司的一个小型服务器为自己搭建了一个vpn,暂时先使用着,过程不复杂现在和大家分享一下,因为服务器网段没有限制所以出此下策,操作如下: 首先需要一个服务器(废话)如下图: 第一步:安装角色: 第二步:勾选"网络策略和访问服务" 第三步:检查配置 第四步:把图上选项全勾上 然后:确认安装阶段 再来多一个图

  • Python 实现选择排序的算法步骤

    选择排序算法步骤: 找到数组中最小的那个元素中, 将它和数组的第一个元素交换位置, 在剩下的元素中找到最小的元素,将它和数组的第二个元素交换位置, 如此往复,知道将整个数组排序. 逐步分析: 假设一个数组有 6 个元素, [5, 1, 4, 3, 2, 6] 第 1 个元素为 5,与剩余 5 个元素相比,1 是最小的元素,所以 5 和 1 交换位置, [1, 5, 4, 3, 2, 6] 第 2 个元素为 5,与剩余 4 个元素相比, 2 是最小的元素,所以 5 和 2 交换位置, [1, 2,

  • Win2008 r2服务器配置VPN服务器教程(图文详解)

    系统环境:WindowsServer2008R2Enterprise(完全安装) 1.配置准备工作 1.1.点击"开始"右边的"服务器管理器" 1.2.在"服务器管理器"里点击"角色" 1.3.在"角色"上点击右键选译"添加角色",点击"下一步" 1.4.在"角色"里选择"网络策略和访问服务",点击"下一步"

  • windows 2008 VPN(PPTP/L2TP)搭建教程

    PPTP和L2TP只差一步配置,现在苹果已经不支持PPTP,所以只能使用L2TP连接.废话不多说,下面开始搭建: 1.PPTP VPN 配置 新安装好的OS,进入系统,首先添加角色 勾选添加网络策略和访问服务 如图勾选需要的角色服务 安装完成后,依次点击开始-管理工具-路由与远程访问工具 如图在服务器上右键,选择"配置并启动路由和远程访问服务" 因为是单网卡机器,所以选择自定义配置 选择VPN访问和NAT. 向导安装完成之后,配置添加VPN连接客户机所用的地址池. 此处也可以配置dhc

随机推荐