第八章 引导过程与服务控制

一、Linux操作系统引导过程【☆】

        Linux引导过程概括起来说就是加载硬件驱动程序,内核把init进程加载到内存中运行的过程。

1. Linux主要的5个引导过程

①开机自检:根据主板BIOS中的设置,检查硬件设备,检测出第一个能够引导系统的设备(如硬盘或光驱等);

②MBR引导运行MBR扇区里的GRUB主引导程序

③启动GRUB菜单(或启动Boot lodader):系统读取gurb配置文件/boot/grub2/grub.cfg,获取内核的设置和位置,并在屏幕上显示GRUB菜单页面;

④加载Linux内核:基于配置文件加载内核到内存,由内核接管Linux系统的控制权

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

系统初始化:启动内核模块,执行运行级别的脚本,执行/etc/rc.d/rc.local里的命令等

2. init进程

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

3.systemd

        centOS7开始默认的启动方式为systemd,开机服务程序并行启动,启动效率较快;centOS6及以前的版本的启动方式为sysVinit,开机服务程序是通过串行启动/etc/init.d/目录下的shell脚本实现的,容易阻塞,启动效率较慢。常见的systemd单元类型主要记住:service、target等。

Linux系统的运行级别及对应的systemd目标【☆】
运行级别说明对应的systemd单元临时切换命令
0关机poweroff.target

init 0

或systemctl isolate 对应单元

1单用户模式rescue.target
2字符界面多用户模式(无网络)multi-user.target(默认等同于3)
3字符界面多用户模式(完整的,有网络)multi-user.target
4字符界面多用户模式(保留)multi-user.target(默认等同于3)
5图形界面多用户模式graphical.target
6重启reboot.target

二、排除启动类故障【☆】

        故障修复先做好备份文件应对后续故障,备份文件单独存放一个硬盘,恢复时安装光盘引导进入急救模式,从备份文件中恢复。

1.MBR整个扇区数据被破坏了,导致系统无法正常启动,如何修复?

模拟MBR扇区整个扇区数据被破坏:dd if=/dev/zero of=/dev/sda bs=512 count=1,重启后无法正常进入系统。

备份:dd if=/dev/sda of=备份文件 bs=446 count=1
还原:dd if=备份文件 of=/dev/sda 

2.MBR上的GRUB引导程序被破坏了,导致系统无法正常启动,如何修复?

模拟MBR扇区中GRUB主引导程序被破坏:dd if=/dev/zero of=/dev/sda bs=446 count=1,重启后无法正常进入系统。

chroot /mnt/sysimage
grub2-install /dev/sda

3.MBR上的GRUB配置文件被删了了,导致系统无法正常启动,如何修复?

模拟grub引导程序故障:rm -f /boot/grub2/grub.cfg

①重启后手动敲入配置:不建议,略过
②重启进入急救模式,进行重建引导程序
chroot /mnt/sysimage
grub2-mkconfig -o /boot/grub2/gurb.cfg

4. root登录密码忘记了,如何找回?

①急救模式修改,重启电脑加载时迅速按ESC键,选择CD光驱启动。

chroot /mnt/sysimage
passwd root

②进入启动菜单后,按E键进入grub菜单配置中,在内核行内容后面添加 rw single init=bin/bash,再按住ctrl +x保存进入bash环境,敲入passwd root,设置密码即可。如果你没有设置过永久关闭Linux安全功能,这里还需要再添加几行设置:touch /.autorelabel,  exec /sbin/init执行重启系统。(补充:之前安装操作系统时执行的setenforce 0,只是临时关闭Linux安全功能,重启系统后还是会开启,想要永久关闭,vim /etc/sysconfig/selinux,把SELNUX=设置为disabled。)

三、系统服务管理操作

        CentOS7之后:systemctl start/stop/restart/reload/status/is-active 服务名[.service可加可不加],前提是确保在/usr/lib/systemd/system/中有对应的服务文件(.service);

        CentOS6之前:service 服务名 start/stop/restart/reload/status,前提是确保在/etc/init.d/中有对应的服务文件(.service)

1. 设置系统的运行级别【★】
runlever                 #查看上一次运行级别和当前运行级别
systemctl get-default    #查看当前默认的运行级别
systemctl set-default [multi-user.target|graohical.target]     #永久设置默认的运行级别 
等效于做软链接ln -s -f /usr/lib/systemd/system/multi-user.target|graohical.target /etc/system/default.target           

2.设置服务开机自启管理【★】

systemctl is-enabled [服务]          #查看某项服务是否开机自启

systemctl is-active [服务]              #查看某项服务当下是开启还是关闭的状态

①两条命令配合使用,实现永久开启或关闭某个服务

systemctl enable/disable [firewalld.service]           #设置开机自启/关闭开机自启防火墙

systemctl start/stop [firewalld.service]                    #开启/关闭防火墙服务

②一条命令关闭或开启服务

systemctl [disable/enable] --now [forewalld.service] 

③ntsysv命令可以进入图形化界面批量设置开机自启

④chkconfig命令修改服务开机自启的方法

chkconfig --add 服务名          #服务名就是/etc/init.d/目录下的脚本文件名,必须一致

chkconfig --leverl 指定运行级别 服务名 on/off  #设置开启或者关闭服务在哪些运行级别下开机自启

chkconfig --list 指定服务名    #查看自启状态

3.其他

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

②设置永久运行级别
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

systemctl set-default multi-user.target

③永久修改主机名
hostnamectl set-hostname newname
查看主机名的状态
hostnamectl status 

④设置系统语言为中文
localectl set-locale LANG=zh_CN.utf8
查看当前系统使用的语言
localectl [status]

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

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

⑤查看系统启动耗时
systemd-analyze 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值