引导过程总览

引导过程总览

开机自检(BIOS)➡MBR引导➡GRUB菜单➡加载内核(kernel)➡ini进程初始化

操作系统内核——硬件

OS外壳——应用

 

系统初始化进程

init进程:由Linux内核加载运行 /sbin/init程序

init进程是系统中第一个进程

init进程的PID(进程标记)号永远为1

systemd是Linux操作系统的一种init软件

CentOS7中采用全新的systemd启动方式,取代传统的sysvinit

CentOS7中运行的第一个init进程是/lib(库文件)/systemd/systemd

 

单元类型

service

.service

描述一个系统服务

Socket

.socket

描述一个进程间通信的套接字

Device

.device

描述一个内核识别的设备文件

Mount

.mount

描述一个文件系统的挂载点

Swap

.swap

描述一个内存交换设备或交换文件

Path

.path

描述一个文件系统中文件或目录

Timer

.timer

描述一个定时器(用于实现类似cron的调度任务)

Snapshot

.snapshot

用于保存一个systemd的状态

Scope

.scope

使用systemd的总线接口以编辑的方式创建外部进程

Slice

.slice

描述居于(group的一组通过层次组织的管理系统进程)

Target

.target

描述一组systemd的单元

Autmount

.autmount

描述一个文件的自动挂载点

运行级别所对应的systemd目标

运行级别

systemd的target

说明

0

target

关机状态,使用该级别时将会关闭主机

1

rescue.target

单用户模式,不需要密码验证即可登录,用于系统维护

2

multi-user.target

用户定义域特定运行级别默认等同于3

3

multi-user.target

字符界面的完整用户模式,大多数服务器主机运行在此级别

4

multi-user.target

用户定义/域特定运行级别,默认等同于3

5

graphical.target

图形界面的多用户模式,提供了图形桌面操作系统

6

reboot.target

重新启动,使用该级别时将会重启主机

 

修复MBR扇区故障

故障原因:病毒、木马等造成的破坏

不正确的分区操作、磁盘读写误操作

故障现象:找不到引导程序,启动中断

无法加载操作系统开机后黑屏

解决思路:应提前做好备份文件

以安装光盘引导进入急救模式

从备份文件中恢复

模拟MBR扇区实验(加一块硬盘做实验)

进系统查看磁盘 fdisk -l 格式化:mkfs.ext4 /dev/sdb

挂载 mount /dev/sdb /oopt

备份MBR扇区数据

dd if=/dev/sda of=/opt/mbr.back bs=512 count=1

模拟MBR扇区故障

dd if=/dev/zero of=/opt/sda bs=512 count=1

出现:operating system not found

光盘引导,进入急救模式,提示操作

从备份文件中恢复MBR扇区

步骤如下:

装入光盘,在光盘引导界面选择troubleshooting

进入troubleshooting菜单选择Rescue a centos system

进入引导可以按回车,或者等待,按1再按回车进入sh-4.2#

急救模式下sdb的挂载 mkdir /sdb mount /dev/sdb /sdb

cd /sdb 查询下该备份文件是否存在

dd if=/sdb/mbr.back of=/dev/sda count=1 bs=512

重启reboot进入系统测试是否正常

 

修复GRUB引导故障

故障原因MBR中的GRUB引导程序遭到破坏

grub.conf文件丢失,引导配置有误

故障现象:系统引导停滞,显示“grub>"提示符

解决思路:

  • 尝试手动输入引导命令
  • 进入急救模式,重写或者从备份中恢复grub.conf
  • 向MBR扇区中重建grub程序

步骤:

  1. cd /boot/grub2 进入grub2
  2. rm -rf grub.cfg 删除grub2.cfg模拟故障
  3. init 6重启出现故障grub>

修复:

  1. 引导急救模式,加载系统镜像chroot /mnt/sysimage
  2. 重新加载sda分区, grub2 install /dev/sda
  3. 重新构建grub菜单配置文件 grub2-mkconfig -o /doot/grub2/grub.cfg
  4. 退出bash环境 exit
  5. 重启reboot

 

忘记root密码

修复:

  1. 引导急救模式,加载系统镜像chroot /mnt/sysimage
  2. 修改密码:passwd root
  3. new:
  4. retry:
  5. 退出bash环境:exit
  6. 重启:reboot

 

系统服务控制 systemctl 控制类型,服务名称

控制类型

start

启动

stop

停止

restart

服务中断并重新启动

reload

服务不中断,重新加载

status

查看服务状态

enable

开机自启动

disable

开机禁用

查看系统默认的运行级别:systemctl get-default

不重启机器而切换当前的运行级别

  • 字符型界面:systemctl isolate muitl-user.target
  • 图形化界面:systemctl isolate graphical.target

查看当前的运行级别

  • systemctl isolate multi-user.target切换到字符型界面
  • runlevel 5 3
  • 5是前一个运行级别,3是当前的运行级别

也可以用who-r 命令

  • runlevel是当前运行级别 last是上一个运行级别

 

修改默认的运行级别target(重启之后才能生效)

  • systemctl   set-default  multi-user.target

删除链接的目标文件,在创建软链接

  • rm /etc/systemd/system/default.target
  • ln -s /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target

 

查看一个运行级别下面的所有until服务依赖关系

  • systemctl list-dependencies
  • list-dependencies 分析指定target各unit之间的依赖关系,如果不指明target,则表示是默认的target

 

系统服务的启动和控制-ntsysv系统服务管理工具

  • ntsysv
  • ntsysv-level级别列表

按照默认设置,只有当前运行级别会被配置,要配置不同的运行级别使用”--level“选项来指定一个或多个运行级别,例如,命令”ntsysv --level345“配置运行级别345

  • ntsysv——提供一个交互式、可视化窗口,可以在字符终端运行,便于集中管理多个服务
  • systemctl工具——不提供交互式、可视化窗口,管理单个服务效率更高

 

查看哪些target引用了当前运行级别的target

  • (--reverse)
  • systemctl list-dependencies multi-user.target --reverse
  • 现象为——graphical.target
  • multi-user.target被graphical.target所引用

 

systemctl 与关机/重启相关命令

  • 关闭CPU,但未关闭电源(systemctl halt)
  • 关闭电源(systemctl power off )建议使用这个,这个会真正关闭电源
  • 重启机器(systemctl reboot )

理出系统中包含的所有targe

  • systemctl list-unit-files --type=target

查案CentOS的版本

  • cat /etc/redhat-release

查看系统服务的启动状态

  • systemctl is-enanled 服务名称

设置系统服务的启动状态

  • systemctl enable、disable 服务名称

列出所有ative的unit

  • systemctl list-units

列出所有unit包括inactive

  • systemctl list-units --all

列出所有为运行的unit,击状态是inactive的

  • systemctl list-units --all--stste=inactive

列出所有active的服务单元

  • systemctl list-units --type=service

列出所有状态包括active和inactive的所有服务unit

  • systemctl list-units --type=srevice --all

检索某一服务状态

  • systemctl list-units --type=srevice --all |grep 服务名

 

针对四种state的说明

  1. enabled——已建立自启动链接
  2. disabled——设置建立自启动链接
  3. static——该配置文件没有【install】部分无法执行,只能作为其他配置文件的以来
  4. masked——该配置文件被禁止建立启动链接

列出一个服务所依赖的单元

  • list-dependencies

列出一个unit的所有依赖

  • systemctl list-dependencies firewalld.service

查看unit文件

  • systemctl cat openresty.service

重新加载所有修改过的unit文件

  • systemctl daemon-reload

显式指定unit的所有底层参数

  • systemctl show openresty.service

也可以只看其中的一项

  • systemctl show-p PIDFILE openresty.service
  • PIDFILE=/usr/local/openresty/nginx/logs/nginx.pid

daemon:系统为了具备某些功能,需要开启相应的服务,服务就是我们所说的service,但是service的提供者是一些程序,所以为了完成这个service的程序,我们称呼它为daemon,即为完成某个服务需要一个daemon在后台中运行,没有这个daemon就不会有service,基本上每个服务都能找到一个它的daemon,所以昨天学的systemctl daemon-reload非常好用。

getty:这个服务是为了实现多终端功能的,什么是多终端呢,就是累telnet的多线程,为了允许多用户同时登陆时系统的这个功能而实现的。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值