开机启动流程
centos6开机启动流程
1.内核引导
2.运行init
3.系统初始化
4.建立终端
5.用户登录系统
运行级别
运行级别(runlevel)的分类:
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户状态(没有文件系统)
运行级别3:完全的多用户状态(有文件系统),登陆后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
查看运行级别
# 查看当前运行级别
runlevel
[root@localhost /etc/yum.repos.d]#
runlevel
N 3
此处3是当前的级别,当前使用了什么级别,就显示几
N是上一次使用的级别,因为没有使用所以是N
临时切换运行级别
[root@zls ~]# init 5
[root@zls ~]# runlevel
3 5
永久切换运行级别
[root@zls ~]# vim /etc/inittab id:3:initdefault
启动流程
1.内核引导
- BIOS加电自检,检测主板上的硬件设备
- 读取/boot分区下,所有的内核文件
2.运行init
0 关机运行级别
1 单用户级别
2 多用户级别(没有文件系统)
3 多用户级别 有文件系统
4 保留
5 多用户模式,图形化模式
6 重启运行级别
# 运行init 会读取/etc/inittab
# 读取配置文件中的默认运行级别
# 获取当前系统的运行级别
C6
id3:initdefault:
c7
multi-user-target:
3.系统初始化
根据运行级别设置开机启动服务来启动
centos6
chkconfig --list
centos7
ll /etc/system/multi-user.target.wants/
4.建立终端
5.用户登录系统
命令行登录
ssh ssh user@IP地址
图形化登录
linux关机命令
init 0
shutdown
shutdown 关机指令,你可以man shutdown 来看一
下帮助文档。例如你可以运行如下命令关机:
shutdown –h 10 ‘This server will
shutdown after 10 mins’ 这个命令告诉大家,计
算机将在10分钟后关机,并且会显示在登陆用户的当前
屏幕中。
shutdown –h now 立马关机
shutdown –h 20:25 系统会在今天20:25关机
shutdown –h +10 十分钟后关机
poweroff
linux重启
init 6
shutdown –r now 系统立马重启
shutdown –r +10 系统十分钟后重启
reboot 就是重启,等同于 shutdown –r now
centos7开机启动流程
1.BIOS(开机自检)
2.MBR ( Master Boot Record 主引导记录)
3.GRUB2 Bootloader(引导菜单)
4.Kernel(内核引导)
5.Systemd (不再使用init,改成了systemd)
6.Runlevel-Target (运行级别)
1.bios(开机自检)
- bios开机自检,检测主板上的硬件设备
- 读取/boot分区下,所有的内核引导
2.MBR引导
主引导记录放在Linux引导硬盘的第一个扇区中,此信息通过BIOS预加载到ROM(只读内存)中。
MBR的大小只有512个字节,它包含用于引导操作系统的机器代码指令,称为引导加载程序,以及分区表。一
旦BIOS找到引导加载程序(GRUB2)并将其加载到(ROM)内存或硬盘驱动器中,它就会控制引导过程。
只是MBR(主引导记录)加载并执行GRUB2引导加载程序。
3.GRUB2(引导加载程序版本2)引导加载程序
言简意赅:grub2菜单,如果装了双系统会让你进行选择,Linux?还是windows?还是MacOS?
GRUB2是所有最新版本(如Red Hat/CentOS 7)中的默认引导加载程序,也是9.10版中的Ubuntu。它已经被GRUBbootloader(也称为GRUBLegacy)所取代。
grub2配置文件位于/boot/grub2/grub.cfg中,由grub2mkconfig使用/etc/grub.d中的模和/etc/default/grub
中的设置自动生成。不建议编辑GRUB2配置文件。
引导加载程序(rhel 7的grub2)启动rhel7内核和初始RAM磁盘(initrd)。GRUB 2安装在服务器硬盘的引导扇区中,配置为加载Linux内核和initramfs,initrd是一个初始根文件系统,将在Linux系统上的实际根文件系统之前安装。
4.kernel内核引导
Linux内核是操作系统的核心,它是系统上第一个加载的程序。当系统启动时,内核从initrd.img加载所有必要的内核模块和驱动器,以加载Linux7中的系统第一个进程systemd,在6里面,init
是爸爸,在7里面换了个爸爸,那就是systemd
下面的命令将帮助您找到SystemD进程ID(PID)
[root@zls ~]# ps -ef | grep [s]ystemd
root 1 0 1 22:58 ? 00:00:00 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2965 1 0 22:58 ? 00:00:00 /usr/lib/systemd/systemd-journald
root 2985 1 1 22:58 ? 00:00:00 /usr/lib/systemd/systemd-udevd
root 5633 1 0 22:58 ? 00:00:00 /usr/lib/systemd/systemd-logind
dbus 5649 1 0 22:58 ? 00:00:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
获取当前默认的运行级别
[root@localhost /etc/yum.repos.d]# systemctl get-default
multi-user.target
centos7的运行级别
runlevel0.target -> poweroff.target # 关机
runlevel1.target -> rescue.target # 单用户级别
runlevel2.target -> multi-user.target # 多用户模式,没有文件系统
runlevel3.target -> multi-user.target # 多用户模式 有文件系统
runlevel4.target -> multi-user.target # 多用户运行级别
runlevel5.target -> graphical.target # 图形化
runlevel6.target -> reboot.target # 重启
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户运行级别(没有文件系统)
运行级别3:完全的多用户状态(有文件系统),登陆后进入控制台命令行模式
运行级别4:多用户运行级别
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
centos7进入单用户模式-忘记root密码
在开机进入选择系统界面时,使用e
进入编辑选定模式
在编辑选定模式中按下方向键往下到linux16行末
在linux16行末写入
enforcing=0 init=/bin/bash
按ctrl + X
进入单用户模式
无法修改密码,因为当前的/目录是只读状态
# 重新挂载/
mount -o rw,remount /
# 修改密码
echo 111 | passwd --stdin root
# 重新加载init
exec /sbin/init
免挂载方式
# 可以少输入一步
mount -o rw,remount /
直接在编辑选定模式把ro
改为rw
修改默认运行级别
systemctl set-default reboot.target
centos7进入单用户模式-修改默认运行级别
在开机进入选择系统界面时,使用e
进入编辑选定模式
在编辑选定模式中按下方向键往下到linux16行末
把ro
改为rw
在行末写入rd.break
ctrl + x
# 重新挂载root权限目录
mount -o rw,remount /sysroot
# 获取root权限
chroot /sysroot
# 修改默认运行级别
systemctl set-default multi-user.target
# 退出
exit
# 重启
reboot
centos7进入救援模式
# 删除了grub2引导
rm -fr /boot/grub2/
将CD-ROM Drive 用+号顶到第一个
F10 保存退出
# 获取一个root环境
chroot /mnt/sysimage
# 修复/dev/sda第一块磁盘
grub2-install /dev/sda
# 修复grub.cfg配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
# 查看是否修复
ls /boot/grub2
# 退出root环境
exit
# 重启
reboot
# 改回之前的磁盘启动
systemd 管理服务
# 启动服务
c7
systemctl start 服务名
c6
/etc/init.d/服务名 start
# 停止服务
systemctl stop 服务名
c7
systemctl stop 服务名
c6
/etc/init.d/服务名 stop
# 重启服务
systemctl restart 服务名
c7
systemctl restart 服务名
c6
/etc/init.d/服务名 restart
# 重新加载
systemctl reload 服务名
c7
systemctl reload 服务名
c6
/etc/init.d/服务名 reload
# 检查服务的启动状态
systemctl status 服务名
c7
systemctl status 服务名
c6
/etc/init.d/服务名 status
# 判断服务是否在运行
systemctl is-active 服务名
[root@localhost ~]# systemctl is-active
sshd
active 运行
[root@localhost ~]# systemctl is-active
nginx
unknown 没运行
# 禁用某个服务
systemctl mask 服务名
# 取消禁用的服务
systemctl unmask 服务名
开机自启服务管理
# 查看开机自启的服务有哪些
chkconfig
# 设置开机自启
systemctl enable 服务名
# 关闭自启服务
systemctl disable 服务名
systemctl disable firewalld
Removed symlink
/etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink
/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
# 查看指定服务是否开机自启
systemctl is-enabled firewalld
disabled 不允许开机自启
systemctl is-enabled network
network.service is not a native service,redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig network --level=5
enabled 允许开及自启