Linux引导过程与服务控制

Linux引导过程与服务控制,第1张

Linux引导过程与服务控制
  1. Linux *** 作系统引导过程
  2. 排除启动类故障
  3. 服务控制及切换运行级别
  4. 优化启动过程
  5. 总结
  1. Linux *** 作系统引导过程

 

 

开机自检

服务器主机开机以后,将根据主板BIOS中的设置对CPu(Central Processing Unit,中央处理器)、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交控制权,大多时候会一脚给本机硬盘。

总结:检测出第一个能够引导系统的设备,比如硬盘或光驱、优盘

MBR引导

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

总结:运行放在MBR扇区里的启动GRUB引导程序

GRUB菜单

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

总结:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的路径位置

加载Linux内核

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

总结:把内核和镜像文件系统加载到内存中

init进程初始化

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

总结:加载硬件驱动程序,内核把init进程加载到内存中运行

传统SysVinit依赖于串行执行Shell脚本启动服务,导致效率低下,系统启动速度较慢

systemd能够将更多的服务进程并行启动,并且具有提供按需启动服务的能力,是的启动更少进程提高系统启动速度

 

 

 

MBR第一个部分:主引导程序446字节

第二个部分:分区表,一个分区16字节,四个分区共64字节

第三个部分:MBR有效标识符,2个字节

GRUB2与GRUB的区别

支持多种文件系统格式

在grup中stage1  stage1-5  stage2已经被取消

grub2使用模块机制,通过动态加载需要的模块来扩展功能,这样做的好处允许core镜像更小

支持自动解压

配置文件的不同最明显的。

init:

启动时间长,init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。

启动脚本复杂,init进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长

systemd:首先它并不是一个命令,而是一组命令,它涉及到系统方方面面的并行

 

 

 Socket:Ip+端口号进行通讯

 

 

0:系统停机模式,系统默认允许级别不能设置位0,否则不能正常启动,机器关机

1:单用户模式,root权限,用于系统维护,禁止远程登陆(只能通过实机进去),类似windows下的安全模式登录(进入单用户模式的时候root不需要密码就可以登录,所以在此模式下可以修改root密码)

2:多用户模式,没有NFS和网络支持

3:完整的多用户文本模式,有NFS和网络,登录后进入控制台命令行模式

4:系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记电池用尽时,可以切换到这个模式来做一些设置

5:图形化模式,登陆后进入图像GUI模式,X windows系:

6:重启模式,默认允许级别不能设为6,否则不能正常启动。运行init6机器就会重启

2.排除启动类故障

 

首先添加一个磁盘

[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host2/scan  ###刷新

或者重启(磁盘才能检测出来)

[root@localhost ~]# fdisk /dev/sdb    ###进入给磁盘分区

[root@localhost ~]# mkfs.xfs /dev/sdb1  ###刷新磁盘才可使用

[root@localhost ~]# mkdir /xy        ###创建一个目录

[root@localhost ~]# mount /dev/sdb1 /xy   ###将sdb1挂载到新建的目录

[root@localhost ~]# dd if=/dev/sda of=/xy/mbr.bak bs=512 count=1

###将sda磁盘的前512字节复制到mbr.bak

[root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=512 count=1

###模拟破坏MBR引导扇区

init 6 重启机器

选择第三个

 

 再选择第二个

 输入1回车再回车进入带sh -4.2#提示符的Bash Shell环境

mkdir /xy    ###创建一个目录

mount /dev/sdb1 /xy  ###将sdb1挂载带有备份的磁盘到新建目录

dd if=/xy/mbr.bak of=/dev/sda    ###恢复备份文件

exit   ###退出重启恢复完成

 

首先添加一个磁盘

[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host2/scan  ###刷新

或者重启(磁盘才能检测出来)

[root@localhost ~]# fdisk /dev/sdb    ###进入给磁盘分区

[root@localhost ~]# mkfs.xfs /dev/sdb1  ###刷新磁盘才可使用

[root@localhost ~]# mkdir /xy        ###创建一个目录

[root@localhost ~]# mount /dev/sdb1 /xy   ###将sdb1挂载到新建的目录

[root@localhost ~]# dd if=/dev/sda of=/xy/gurb.bak bs=446 count=1

###建立grup引导程序的备份

[root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1

###模拟对MRB中的GURB引导程序的破坏,但不破坏分区表

init 6 重启机器

按上一个案例进入带sh -4.2#提示符的Bash Shell环境

mkdir /xy    ###创建一个目录

mount /dev/sdb1 /xy  ###将sdb1挂载带有备份的磁盘到新建目录

dd if=/xy/mbr.bak of=/dev/sda    ###恢复备份文件

exit   ###退出重启恢复完成

另一种方法:引导页面进入急救模式,重建GRUB菜单配置文件

rm -rf /boot/grub2/grub.cfg

###删除文件,重启机器,在页面输入exit后可进入选择页面,再按照第一个案例的方式进入到急救模式

chroot /mnt/sysimage   ###进入急救模式,加载光盘镜像,切换到系统根环境

grub2-install /dev/sda   ###宠幸将GRUB引导程序安装到第一块硬盘(/dev/sda)的MBR扇区,如果有多个分区可省略

grub2-mkconfig -o /boot/grub2/grub.cfg   ###重新构建GURB菜单的配置文件

exit   

reboot

###退出环境并重启

 

 

 

修改密码前需要关闭加强服务

[root@localhost ~]# vim /etc/sysconfig/selinux    ###进入这个文本

在文本里SELINUX的值改为SELINUX=disabled,保存并退出

进入单用户模式修改root密码为例

重启开机按esc,第一行按e再启动GRUB菜单中选择编辑选项,按键“e”进入编辑

编辑修改:大约再低16行找到“ro”,将“ro”修改为“rw init=/sysroot/bin/bash”;

 

 

按Ctrl+x重启,输入命令进入系统

#:chroot /sysroot

字符集修改

#:LANG=en_US.UFT-8    ###修改前可修改字符集

#:passwd root   ###重置root密码

#:exit

#:init 6

###退出chroot,并重启

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

 

 

systemctl 参数

get-default:取得当前的target

set-default:设置指定的target为默认的运行级别

isolate:切换到指定的运行级别

unit.target:上面列出的运行级别

示例:

systemctl get-default      ###查看默认运行级别

systemctl set-default multi-user.target   ###设置默认的允许级别为mulit-user

systemctl isolate multi-user.target    ###在不重启的情况下,切换到运行级别mulit-user下

Systemctl isolate get-default    ###在不重启的情况下,切换到图形界面下

 

 

chkconfig工具

格式:chkconfig  --list [服务名称]

chkconfig --add 服务名称

chkconfig --add 服务名称

chkconfig --level:级别列表服务名on/off

示例

chkconfig --add httpd

chkconfig --level 35 httpd on

4.总结

 Linux *** 作系统引导过程

Linux系统服务控制

运行级别切换

优化开机自动加载服务

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5694090.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存