引导过程和服务控制

embedded/2024/10/16 2:26:37/

1、Linux系统开机引导过程

1)开机自检        检测硬件设备,找到能够引导系统的设备,比如硬盘
2)MBR引导         运行MBR扇区里的主引导程序GRUB
3)启动GRUB菜单    系统读取GRUB配置文件(/boot/grub2/grub.cfg)获取内核的设置和位置,并在屏幕显示GRUB菜单页面
4)加载Linux内核   把内核加载到内存,将系统控制权交接给内核
5)init进程初始化  内核将init进程加载到内存中运行,并把init进程作为系统的第一个进程
6)系统初始化      启动内核模块,执行运行级别的启动脚本,执行/etc/rc.d/rc.local文件里的命令等

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

2、进程的启动方式

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

套接字文件   应用程序直接的数据连接文件
套接字格式   ip:port       ftp  192.168.80.20:21

3、linux系统的运行级别

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

4、启动类故障修复

MBR: 主引导程序 1~446字节   硬盘分区表 447~510字节

(1)

如果是 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

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

5、服务管理操作

systemctl start|stop|restart|reload(重新加载)|status(查看服务状态)|is-active 服务名[.service]            #要确保在 /usr/lib/systemd/system/ 目录中有相关服务的 XXX.service 文件

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

6、服务开机自启管理

systemctl enable|disable [--now] 服务名[.service]       # --now选项可实现立即开启|关闭服务
systemctl is-enabled 服务名[.service]:查看开机自启

7、图形化管理开机自启

ntsysv    #图形化管理开机自启

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

查看上一次运行状态和此时运行状态:runlevel

查看当前的默认运行级别:systemctl get-default

8、设置默认运行级别

systemctl set-default multi-user.target|graphical.target      #设置默认运行级别
等效于 ln -s -f /usr/lib/systemd/system/multi-user.target|graphical.target  /etc/systemd/system/default.target

9、字符集编码

ASCII  127个字符   
GBK    中国字符集编码   
UTF-8  万国字符集编码

hostnamectl set-hostname XXX
localectl set-locale LANG=语言.字符集


http://www.ppmy.cn/embedded/17647.html

相关文章

Java设计模式-原型模式

概念: 原型模式是一种创建型设计模式,它允许通过复制现有对象来创建新对象,而无需通过标准构造函数来创建。在原型模式中,新对象的创建是通过克隆现有对象而实现的,因此它是基于原型对象的复制而创建新对象的。 在Jav…

隧道智能巡检机器人:科技助力隧道维护与管理

在现代社会,隧道已经成为城市、交通网络和基础设施的重要组成部分。尽管如此,隧道的安全运营和维护仍然存在着各种挑战。传统的隧道巡查方式主要依赖于人工巡检,但这种方式存在诸多问题,如工作负荷大、检测标准不统一、效率低下、…

详解23种设计模式——单例模式

单例模式 | CoderMast编程桅杆单例模式 单例模式是最常用的设计模式之一,他可以保证在整个应用中,某个类只存在一个实例化对象,即全局使用到该类的只有一个对象,这种模式在需要限制某些类的实例数量时非常有用,通常全局…

【R语言简介】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

JVM学习笔记(五)内存模型

目录 1、原子性 1.1 问题分析 1.2 解决方法 2、可见性 2.1 退不出的循环 2.2 解决办法 3、有序性 3.1 诡异的结果 3.2 解决办法 3.3 有序性理解 3.4 happens-before 4、CAS与原子类 4.1 CAS 4.2 乐观锁与悲观锁 4.3 原子操作类 5、synchronized 优化 5.1 轻量…

JVM之初识垃圾收集器

JDK 8:Parallel Scavenge(新生代) Parallel Old(老年代)JDK8以后:G1收集器 什么是串行回收和并行回收? Serial收集器:串行收集器 新生代使用标记复制算法,老年代使用标记…

GITEE本地项目上传到远程

由于需要,我这边将本地的仓库上传至GITEE。之前在网上搜索了相关的文档,但是步骤很繁琐,我这边介绍一个非常简单的。 一、在GITEE新建仓库 跟着指引一步步新建。 二、打开本地仓库,删除.git文件 默认情况下不会有这个.git文件&a…

iOS - 多线程-GCD-队列组

文章目录 iOS - 多线程-GCD-队列组1. 队列组1.1 基本使用步骤 iOS - 多线程-GCD-队列组 开发过程中,有时候想实现这样的效果 多个任务并发执行所有任务执行完成后,进行下一步处理(比如回到主线程刷新UI) 1. 队列组 可以使用GC…