目录
1.centos7 系统启动过程
加载 BIOS/UEFI 信息,进行硬件检测。按照 BIOS 设定找到第一个可以启动的设备。
读取第一个设备的 MBR(主引导记录),加载 MBR 中的 BootLoader(启动引导程序 grub2)
依据 grub2 的设置加载内核,内核再次进行系统检测。
grub2 加载 initramfs 虚拟文件系统,在内存中加载虚拟文件系统/boot/initramfs.
内核初始化,以加载动态模块的形式加载部分硬件的驱动。并且调用 initrd.target,挂载/etc/fstab 中的文件系统。此时可以由虚拟文件系统模拟出的根目录切换回硬盘真实的根目录。
内核启动的第一个进程,systemd。systemd 接管启动过程,并行启动后续程序。
systemd 调用默认 default.target 单元组,并按照 default 运行子单元组。
在 systemd 中将启动程序成为单元 unit,多个单元组成单元组(target)。
systemd 调用 sysinit.target 单元组,初始化系统。检测硬件,加载剩余硬件的驱动模块等。
systemd 调用 basic.target 单元组,准备操作系统。加载外围硬件的驱动模块,加载防火墙,
加载 SELinux 安全上下文等。
systemd 调用 mutil-user.target 单元组,启动字符界面所需的程序。
systemd 调用 mutil-user.target 单元组中/etc/rc.d/rc.local 文件,执行文件中命令。
Systemd 调用 mutil-user.target 单元组中的 getty.target 单元组,初始化本地终端。
Systemd 调用 graphical.target 单元组(字符界面不需要)。
2.登陆系统图解
3.管理系统服务
服务状态
[root@localhost ~]# systemctl list-unit-files
#显示状态
loaded:Unit 配置文件已处理
active(running):一次或多次持续处理的运行
active(exited):成功完成一次性的配置
active(waiting):运行中,等待一个事件
inactive:不运行
enabled:开机启动
disabled:开机不启动
4.运行级别
总结:centos6 和 7 运行级别的变化
CentOS6 CentOS7
init systemd
Traditional runlevel | New target name Symbolically linked to...
Runlevel 0 | runlevel0.target -> poweroff.target
Runlevel 1 | runlevel1.target -> rescue.target
Runlevel 2 | runlevel2.target -> multi-user.target
Runlevel 3 | runlevel3.target -> multi-user.target
Runlevel 4 | runlevel4.target -> multi-user.target
Runlevel 5 | runlevel5.target -> graphical.target
Runlevel 6 | runlevel6.target -> reboot.target
Init 0 à systemctl poweroff 关机
Init 1 à systemctl isolate rescue.target 单用户
Init 3 à systemctl isolate multi-user.target 字符界面
Init 5 à systemctl isolate graphical.target 图形化
Init 6 à systemctl reboot 重启
5.运行级别的切换
在 centos6/7 下切换到字符界面:
[root@localhost ~]# init 3 #切换到字符界面
[root@localhost ~]# init 5 #切换到图形界面
centos7 设置默认系统默认启动级别
systemctl set-default name.target 来修改我们的目标态。
我们看一下我们的默认目标态究竟为何物
[root@localhost ~]# ll /etc/systemd/system/default.target
例 1:默认系统启动使用 3 级别字符界面
[root@localhost ~]# 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@localhost ~]# ll /etc/systemd/system/default.target #查看链接
lrwxrwxrwx 1 root root 41 5 月 23 19:08 /etc/systemd/system/default.target -> /usr/lib/systemd/system/multi-user.target
例 2:默认系统启动使用 5 级别图形界面
[root@localhost ~]# systemctl set-default graphical.target
mutil-user.target 和 graphical.target 的关系:
systemctl list-dependencies sysinit.target
grub2 和 grub 区别
在 centOS6 上,我们的 grub 文件是/boot/grub/grub.conf在 centOS7 使用 grub2,配置文件改成/boot/grub2/grub.cfg 了, 但是功能还是大致一样的都是用于加载内核的,不过在 centOS7 上设置默认启动项发生了一些变化。
例 3: centos7 修改内核启动顺序
[root@localhost ~]# vim /etc/default/grub
GRUB_TIMEOUT=5
#开机时 grub 默认 5 秒后启动内核
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
改:GRUB_DEFAULT= saved
为:GRUB_DEFAULT= 1
#这里我们改成 1,0 代表第一个内核,1 代表第二个,以此类推。
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
#修改完成后,并没有立即生效,使用此命令来生成 grub2.cfg 文件,在下次启动的时候就会默认选择新的默认内核。
[root@localhost ~]# uname -r
3.10.0-693.2.2.el7.x86_64
[root@localhost ~]# reboot
[root@localhost ~]# uname -r
3.10.0-693.el7.x86_64
例 2: centos6 修改内核启动顺序-了解
[root@localhost ~]# vim /boot/grub/grub.conf
改:10 default=0
为:10 default=1
[root@localhost ~]# reboot