Linux云计算架构-Linux系统启动原理

Linux云计算架构-Linux系统启动原理

1. centos6启动原理

在这里插入图片描述

# centos6系统启动过程
1.加载bios的硬件信息,根据设定获取第一个可开机引导设置。
2.读取硬盘中MBR的boot Loader(主引导程序),即grub引导。【MBR=主引导程序(boot loader)+分区表(Partition table)+MBR有效标识】
3.依据boot loader的设定,到引导分区加载Kernel,Kernel会开始侦测硬件并加载驱动程序。
4.硬件驱动程序加载成功后,Kernel会主动执行init程序,init程序读取/etc/inittab文件获取run-level信息。
5.init执行/etc/rc.d/rc.sysinit文件来准备软件执行的作业环境 (如网络、时区等)。
6.init执行run-level下各个服务并启动(script方式)。【7个运行级别(0-6)】
7.init执行开机后自动运行脚本/etc/rc.d/rc.local文件。
8.init执行虚拟终端机控制程序mingetty来启动login程序,最后就等待用户登录。
# centos6启动的相关配置文件
/boot/grub/grub.conf  # 主引导程序的配置文件
/etc/inittab          # 定义系统运行级别
/etc/rc.d/rc.sysint   # 系统初始化脚本
/etc/rc.d/rc3.d/*     # 在对应运行级别下,会执行对应目录下的服务的启动文件【S启动K关闭,数字为启动或关闭的顺序】
/etc/rc.d/rc.local    # 登录前自动运行脚本

2. centos7启动原理

在这里插入图片描述

# centos7系统启动过程
1.UEFi或BIOS初始化,运行POST开机自检

2.选择启动设备,引导装载程序,centos7是grub2,centos6是grub

3.加载装载程序的配置文件:/etc/grub.d/(根据此目录下文件设置 grub.cfg)
[root@server ~]# ll -d /etc/grub.d/
drwx------. 2 root root 182 6月  30 16:07 /etc/grub.d/

# 用/etc/default/grub文件配置/boot/grub2/grub.cfg文件
[root@server ~]# ll /etc/default/grub 
-rw-r--r--. 1 root root 279 6月  30 16:08 /etc/default/grub
[root@server ~]# ll /boot/grub2/grub.cfg 
-rw-r--r--. 1 root root 4287 6月  30 16:09 /boot/grub2/grub.cfg

4.加载内核,加载initramfs初始化伪文件系统【虚拟文件系统,/boot/initramfs能通过boot loader加载到内存中。用于提供启动过程中的重要内核模块。】
[root@server ~]# ll /boot/initramfs-*
-rw-------. 1 root root 73998306 6月  30 16:07 /boot/initramfs-0-rescue-e1e61b24281c4661a62720f8c084ca3d.img
-rw-------. 1 root root 31879114 6月  30 16:09 /boot/initramfs-3.10.0-957.el7.x86_64.img
-rw-------. 1 root root 13575929 7月  21 20:15 /boot/initramfs-3.10.0-957.el7.x86_64kdump.img
 
5.内核初始化,启动systemd程序【centos7用systemd代替init】

6.执行initrd.target所有单元,包括挂载/etc/fstab

7.从initramfs根文件系统切换到磁盘根目录
[root@server ~]# pwd
/root

8.systemd执行默认target配置,配置文件/etc/systemd/system/default.target
[root@server ~]# ll /etc/systemd/system/default.target
lrwxrwxrwx. 1 root root 36 6月  30 16:08 /etc/systemd/system/default.target -> /lib/systemd/system/graphical.target

9.systemd执行sysinit.target初始化系统及basic.target准备操作系统
[root@server ~]# ll /etc/systemd/system/ | grep wants
drwxr-xr-x. 2 root root 4096 6月  30 16:03 sysinit.target.wants
drwxr-xr-x. 2 root root   57 6月  30 16:05 basic.target.wants

10.systemd启动multi-user.target下的本机与服务器服务
drwxr-xr-x. 2 root root 4096 7月   3 07:40 multi-user.target.wants

11.systemd执行multi-user.target下的/etc/rc.d/rc.local
drwxr-xr-x. 2 root root 4096 7月   3 07:40 multi-user.target.wants

12.systemd执行multi-user.target下的getty.target及登录服务
drwxr-xr-x. 2 root root   32 6月  30 16:03 getty.target.wants

13.systemd执行graphical需要的服务
drwxr-xr-x. 2 root root  133 6月  30 16:35 graphical.target.wants

[root@server ~]# ll /etc/systemd/system/ | grep wants
drwxr-xr-x. 2 root root   57 6月  30 16:05 basic.target.wants
drwxr-xr-x. 2 root root   31 6月  30 16:03 bluetooth.target.wants
drwxr-xr-x. 2 root root   87 6月  30 16:03 default.target.wants
drwxr-xr-x. 2 root root   38 6月  30 16:05 dev-virtio\x2dports-org.qemu.guest_agent.0.device.wants
drwxr-xr-x. 2 root root   32 6月  30 16:03 getty.target.wants
drwxr-xr-x. 2 root root  133 6月  30 16:35 graphical.target.wants
drwxr-xr-x. 2 root root   35 6月  30 16:03 local-fs.target.wants
drwxr-xr-x. 2 root root 4096 7月   3 07:40 multi-user.target.wants
drwxr-xr-x. 2 root root   48 6月  30 16:03 network-online.target.wants
drwxr-xr-x. 2 root root   26 6月  30 16:04 printer.target.wants
drwxr-xr-x. 2 root root   31 6月  30 16:03 remote-fs.target.wants
drwxr-xr-x. 2 root root  217 6月  30 16:05 sockets.target.wants
drwxr-xr-x. 2 root root 4096 6月  30 16:03 sysinit.target.wants
drwxr-xr-x. 2 root root   44 6月  30 16:03 system-update.target.wants
drwxr-xr-x. 2 root root   34 6月  30 16:03 timers.target.wants

3. 管理服务

动作centos6centos7
启动service 独立服务名 startsystemctl start 独立服务名
停止service 独立服务名 stopsystemctl stop 独立服务名
重启service 独立服务名 restartsystemctl restart 独立服务名
状态service 独立服务名 statussystemctl status 独立服务名
重载或重启服务(先加载,再重启)systemctl reload 独立服务名
动作centos6centos7
自启动chkconfig name onsystemctl enable name
禁用自启动chkconfig name offsystemctl disable name
查看所有服务的开机自启状态chkconfig --listsystemctl list-unit-files --type service
# 服务状态
loaded            # Unit配置文件已处理
active(running)   # 一次或多次持续处理的运行
active(exited)    # 成功完成一次性的配置
active(waiting)   # 运行中,等待一个事件
inactive          # 不运行
enabled           # 开机启动
disabled          # 开机不启动
static            # 开机不启动,但可被另一个启用的服务激活

# 系统的启动级别,及启动级别的切换。
0:关机                          Init 0      systemctl poweroff
1:单用户模式,用于系统恢复。        Init 1      systemctl isolate rescue.target
2:不完全命令行模式,无网络        
3:完全命令行模式,有网络,字符界面   Init 3      systemctl isolate multi-user.target
4:系统保留  
5:图形化界面,有网络              init 5       systemctl isolate graphical.target
6:重启                          init 6       systemctl reboot


# 可以在不同级别下,设置服务是否随系统启动而运行。
[root@server ~]# ll /usr/lib/systemd/system/*.target | grep runlevel
lrwxrwxrwx. 1 root root  15 6月  30 16:03 /usr/lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root  13 6月  30 16:03 /usr/lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root  17 6月  30 16:03 /usr/lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root  17 6月  30 16:03 /usr/lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root  17 6月  30 16:03 /usr/lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root  16 6月  30 16:03 /usr/lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root  13 6月  30 16:03 /usr/lib/systemd/system/runlevel6.target -> reboot.target

# 查询target目标态类型的运行级别
[root@server ~]# systemctl list-unit-files --type target 

# 查询随着系统以某种运行级别启动时,所对应的服务的启动情况【依赖于某个系统运行级别所启动或关闭的服务】
[root@server ~]# systemctl list-dependencies runlevel3.target
[root@server ~]# systemctl list-dependencies runlevel5.target
# 系统运行级别切换
[root@server ~]# runlevel 
3 5
[root@server ~]# init 3

# 设置默认目标态default.target【默认启动级别】
# 设置默认目标态,即是将默认目标态用软连接指向对应启动级别的目标态
[root@server ~]# ll /etc/systemd/system/default.target
lrwxrwxrwx. 1 root root 36 6月  23 17:54 /etc/systemd/system/default.target -> /lib/systemd/system/graphical.target
[root@server ~]# systemctl set-default multi-user.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
[root@server ~]# ll /etc/systemd/system/default.target
lrwxrwxrwx. 1 root root 41 7月  22 17:27 /etc/systemd/system/default.target -> /usr/lib/systemd/system/multi-user.target
# grub和grub2的区别
1.centos6的grub配置文件/boot/grub/grub.conf
2.centos7的grub2配置文件/boot/grub2/grub.cfg
3.grub和grub2都是用于加载内核,但grub2有一个默认启动项配置文件

# centos7修改内核启动的顺序
[root@server ~]# cat /etc/default/grub 
GRUB_TIMEOUT=5   # 默认5s后启动内核
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved  # 默认使用的内核,0为第一个内核,1为第二个内核
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

# 查询加载的内核
[root@server ~]# uname -r
3.10.0-957.el7.x86_64

# centos6修改内核启动顺序
[root@server ~]# vim /boot/grub/grub.conf
default=1
[root@server ~]# reboot

如果不是很清楚服务应该怎样管理的,可以看看这篇博客:服务管理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值