首页 > 其他分享 >引导过程与服务控制

引导过程与服务控制

时间:2024-04-21 18:11:07浏览次数:16  
标签:引导 服务 target GRUB 控制 init systemctl 级别 运行

目录

1.Linux操作系统引导过程

(1)引导过程总览

1)开机自检:检测硬件设备,找到能够引导系统的设备,比如硬盘或者光驱

服务器主机开机以后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。

2)MBR引导:运行MBR扇区里的主引导程序GRUB

当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR(主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR 记录中的引导信息调用启动菜单(如 GRUB)。

3)启动GRUB菜单:系统读取GRUB配置文件获取内核的设置和位置,并在屏幕显示GRUB菜单页面

对于Linux操作系统来说,GRUB(统一启动加载器)是使用最为广泛的多系统引导器程序。系统控制权传递给GRUB以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权转交给内核。
*注:CentOS 7 采用的是 GRUB2 启动引导器。

4)加载Linux内核:把内核加载到内存,将系统控制权交接给内核

Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个Linux操作系统的运行过程。
CentOS 7系统中,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”。

5)init进程初始化:内核将init进程加载到内存中运行,并把init进程作为系统的第一个进程

为了完成进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内存中运行(运行中的程序称为进程),init 进程负责完成整个系统的初始化,最后等待用户进行登录。


(2)系统初始化进程


init进程 文件位于 /sbin/init -> /lib/systemd/systemd ,init进程PID号固定为 1 ,是系统中其它所有进程的父进程

Systemd是Linux操作系统的一种init软件, CentOS7中运行的第一个init进程是/ib/systemd/systemd

进程启动方式:centos7开始的版本默认的启动方式是 systemd,开机服务程序为并行启动,启动效率较快
centos6及以前版本的启动方式是 sysVinit,开机服务程序是通过串行执行/etc/init.d/目录下的shell脚本启动的,容易阻塞,启动效率较慢

(3)Systemd单元类型

(4)运行级别所对应的Systemd目标

运行级别 功能 对应的systemd单元 切换
0 关机 poweroff.target init 0 ; systemctl isolate poweroff.target
1 单用户模式 rescue.target init 1 ; systemctl isolate rescue.target
2 字符界面的多用户模式(无网络) multi-user.target init 2
3 字符界面的多用户模式(完整的,有网络) multi-user.target init 3 ; systemctl isolate multi-user.target
4 字符界面的多用户模式(保留) multi-user.target init 5
5 图形界面的多用户模式 graphical.target systemctl isolate graphical.target
6 重启 reboot.target init 6 ; systemctl isolate reboot.target


2.排除启动类故障

(1)启动类故障恢复

MBR 主引导程序 1~446字节 硬盘分区表 447~510字节
如果是 MBR 整个扇区数据被破坏了,需要进入到急救模式将备份的MBR数据导入还原
备份命令:dd if=/dev/sda of=备份文件 bs=512 count=1
还原命令:dd if=备份文件 of=/dev/sda

(2)如果是 MBR 的GRUB主引导程序被破坏了

1)在急救模式下使用备份文件恢复 dd if=备份文件 of=/dev/sda bs=446 count=1











2)在急救模式下重建MBR的GRUB主引导程序 chroot /mnt/sysimage -> grub2-install /dev/sda

(3)如果是GRUB配置文件被删了

在急救模式下重建GRUB配置文件 chroot /mnt/sysimage -> grub2-mkconfig -o /boot/grub2/grub.cfg


(4)如果是root密码忘记了

1)在急救模式下 先切换系统根环境 chroot /mnt/sysimage -> passwd root

2)在GRUB菜单按 e 键,修改内容

在 linux16 /vmlinuz-3.10.0-1160.71.1.el7.x86_64 root=UUID=a99fd431-dc10-4233-a655-3c4b8d710624 ro rhgb quiet LANG=zh_CN.UTF-8 这行后面追加配置
rw single init=/bin/bash ,再按 ctrl + x 重启系统

再在bash界面输入 passwd root 修改密码 -> touch /.autorelabel --> exec /sbin/init


没有修改过,要输入touch /.autorelabel --> exec /sbin/init


3.服务控制及切换运行级别

(1)系统服务控制

systemctl 控制类型 服务名称

控制类型
start 启动
stop 停止
restart 重新启动
reload 重新加载
status 查看服务状态

(2)服务管理操作

systemctl start|stop|restart|reload|status|is-active 服务名[.service] ####要确保在 /usr/lib/systemd/system/ 目录中有相关服务的 XXX.service 文件



service 服务名 start|stop|restart|reload|status ####要确保在 /etc/init.d/ 目录中有相关服务的管理脚本文件

(3)服务开机自启管理

systemctl enable|disable [--now] 服务名[.service] #####--now选项可实现立即开启|关闭服务

systemctl is-enabled 服务名[.service]

ntsysv ##图形化管理开机自启

chkconfig --add 服务名 ####服务名就是 /etc/init.d/ 目录下的脚本文件名
chkconfig --level 运行级别列表 服务名 on|off ####开启|关闭服务在哪些运行级别下开机自启
chkconfig --list 服务名 ####查看自启状态

(4)Linux系统的运行级别

(1)查看运行级别

runlevel命令——runlevel只能查看切换运行级别与当前运行级别
systemctl工具——systemctl时能查看默认的运行级别

runlevel ####查看上一次的运行级别 和 当前的运行级别
systemctl get-default ####查看当前的默认运行级别

(2)临时切换运行级别

init命令——init的命令参数是运行级别所对应的数字
systemctl工具——systemctl的命令参数是具体的target



(3)设置永久运行级别

systemctl set-default multi-user.target|graphical.target ####设置默认运行级别3或5

等效于 ln -s -f /usr/lib/systemd/system/multi-user.target|graphical.target /etc/systemd/system/default.target

标签:引导,服务,target,GRUB,控制,init,systemctl,级别,运行
From: https://www.cnblogs.com/zsy828/p/18139885

相关文章

  • Ubuntu 设置 FTP 服务
    安装VSFTP服务sudoaptinstallvsftpd检查配置文件sudovim/etc/vsftpd.conf确保以下配置项正确:#禁止匿名访问anonymous_enable=NO#接受本地用户local_enable=YES#允许上传write_enable=YES允许VSFTP服务开机自启sudosystemctlenablevsftpd连接FTP服......
  • 服务器硬件与RAID
    1.服务器硬件详解**查看服务器CPU的信息**cat/proc/cpuinfo或lscpumodelname#CPU型号physicalid#物理CPU的IDcpucores#每个物理CPU中的核心数processor#逻辑CPU的ID查看服务器内存的信息cat/proc/meminfo或......
  • 如何在服务器上搭建git仓库
    参考:https://blog.csdn.net/qq_43615903/article/details/104875791安装git并创建用户该服务器上如果已经建过仓库,可以直接跳到下一部分使用yuminstallgit安装git,使用git--version检查是否安装成功。使用addusergit创建用户,使用passwdgit设置密码,其中用户名和......
  • 2024最新云服务器优惠大全,免费一年云服务器!
    本人推荐的服务器全部都是大品牌,不存在跑路等!所有的小品牌全部都删除了,包括什么9元一年主机,那都不靠谱!还有其他大品牌,号称优惠,但是一个月好几百,也都删除了,真实优惠!! 1:京东云服务器,一年2g2h3m云服务器,只要50元!3年只要296!详情点击链接查看!京东云购买链接:https://tool.lengle......
  • UDP客户端和服务端的实现
    服务端的实现:publicclassUDPServer{publicstaticvoidmain(String[]args)throwsException{DateGramSocketsocket=newDateGramSocket(8888);//创建端口为8888的服务端byte[]b=newbyte[1024];//临时存放数据的包DateGramPacketp=newDateGramPacket(b,b.l......
  • 服务端与客户端的创建
    ServerSocketserver=newServerSocket(9999);//创建客户端,端口为9999Socketsocket=server.accept();//客户端与服务端连接InputStreamin=socket.getInputStream();BufferedReaderbr=newBufferedReader(newInputStreamReader(in));//将字节流转化为字符流,用缓......
  • 中间件 ZK分布式专题与Dubbo微服务入门 8-6 使用tomcat启动dubbo服务
    0课程地址https://coding.imooc.com/lesson/201.html#mid=12744 1重点关注1.1本节内容使用tomcat启动dubbo服务tomcat启动dubbo服务的弊端    2课程内容2.1tomcat启动dubbo服务的弊端tomcat本身也是软件,占用内存  ......
  • 游戏服务器开发的基本体系与服务器端开发的一些建议
    刚开始时以为做游戏服务器和做web差不多,但是经过一段时间之后,才发现代码太多,太乱了,一看代码都想重构,都是踩着坑往前走。这里我把一些游戏开发方面的东西整理一下,希望能对那些想做游戏服务器开发的朋友有所帮助近年来,我身边的朋友有很多都从web转向了游戏开发。他们以前都没有做过......
  • Linux下注册系统服务
    前言init历史上,Linux的启动一直采用init进程。在类Unix的计算机操作系统中,init(初始化的简称)是在启动计算机系统期间启动的第一个进程。init是一个守护进程,它将持续运行,直到系统关闭。它是所有其他进程的直接或间接的父进程。因为init的参数全在/etc/init.d目录下,所以使......
  • shell脚本while循环、read读取控制台输入与函数
    while循环while循环结构while[条件判断]do程序done脚本示例:点击查看代码#!/bin/bashwhile[$a-le$1]do sum=$[$sum+$a]doneecho$sum简易写法:点击查看代码#!/bin/basha=1while[$a-le$1]do letsum+=a leta++doneecho$sumread读取......