linux引导过程与服务控制

linux操作系统引导过程

引导过程总览:

(1).开机自检

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

(2).MBR 引导

当从本机硬盘中启动系统时,首先根据硬盘第0磁道中的0扇区中 MBR(Master Boot Record主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR 记录中的引导信息调用启动菜单(如 GRUB)。Boot loader(主引导程序) 占1——446的空间 , DPT(硬盘分区表)占447——510的空间(64个字节每个主分区占16个字节,所以只能有四个主分区。结束标识(55aa16进制的数字)占两个        字节。511——512

(3).GRUB 菜单

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

即:

(4).加载 Linux 内核

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

就是把内核放到内存里面,利用内核启动其他的必要程序。

(5).init 进程初始化(systemd)

为了完成进一步的系统引导过程,Linux 内核首先将系统中的“/sbin/init”程序加载到内存中运行(运行中的程序称为进程),init 进程负责完成一系列的系统初始化过程,最后等待用户进行登录。pstree(查看进程的静态信息,随时间会变动)

系统初始化进程及文件 (PID 进程标识号)

Linux 操作系统中的进程使用数字进行标记,每个进程的身份标记号称为PID为在引导Linux 操作系统的过程中,“/sbin/init”是内核第一个加载的程序,因此init进程对应的 PID 号总是为 1。(只有第一个进程是唯一的其他都不是唯一的)

init 进程运行以后将陆续执行系统中的其他程序,不断生成新的进程,这些进程称为 init进程的子进程。反过来说,init 进程是这些进程的父进程。当然,这些子进程也可以进一步生成各自的子进程,依次不断繁衍下去,最终构成一棵枝繁叶茂的进程树,共同为用户提供服务。

从以上描述可以看出,init 进程正是维持整个 Linux 操作系统运行的所有进程的“始祖”,因此 init 进程是不允许被轻易终止的。需要切换不同的系统运行状态时,可以向 init 进程发送正确的执行参数,由 init 自身来完成相关操作。

2 3 4 5 都是可以多用户来登录的有的是字符页面有的是图形页面。

2 3 4 都是属于字符界面,只有 5 是图形界面。

(runlevel查看运行级别)(systemctl get-defaults查看运行级别;systemd目标)

(init 3进入3号级别)

Systemd概述

Systemd 是 Linux 操作系统的一种 init 软件,CentOS 7 系统中采用了全新的Systemd启动方式,取代了传统的 SysVinit。Systemd 启动方式使系统初始化时诸多服务并行启动,大大提高了开机效率。CentOS 7 系统中“/sbin/init”是“/lib/systemd/systemd”的链接文件。换言之CentOS 7 系统中运行的第一个init 进程是“/lib/systemd/systemd”。systemd 守护进程负责 Linux 的系统和服务systemctl 用于控制 Systemd 管理的系统和服务状态。Linux 系统服务是指运行在后台并提供特定功能的应用程序,如网站服务、FTP服务等。Linux 通过将不同的系统服务进行搭配组合来协同满足不同的功能需求。不同的服务组合其实现的功能也各不相同,就好比不同的药方能医治不同的病症一样。早期Linux 操作系统中的 SysVinit 机制,默认包括七种不同的服务搭配方式,其中每一种搭配方式称为运行级别,类似于 Windows 系统中的正常启动、安全模式、不带网络连接的安全模式等。这些运行级别分别使用数字 0,1,…,6 来表示。为了向下兼容 SysVinit系统,Systemd 使用了相应的 target(目标)模拟了 SysVinit 的运行级别

查看系统的运行级别

明确当前系统所在的 target 将有助于管理员排除一些应用故障。若未能确知当前所处的目标,可以直接执行“runlevel”命令进行查询,显示结果中的两个字符分别表示切换前的目标、当前的目标。若之前尚未切换过运行级别,则第 1 列将显示“N”

切换系统的target

当用户需要将系统转换为其他的 target 时,可以通过传统的 init 程序进行,只要使用与运行级别相对应的数字(0~6)作为命令参数即可,或者使用 systemctl 命令进行目标切换。例如,为了节省系统资源,将系统运行的 target 由图形模式(5)切换为字符模式(3),可以执行“init 3”或“systemctl isolate multi-user.target”命令将系统切换到字符模式以后,图形桌面环境不再可用。这时按 Alt+F7 组合键也无法恢复图形桌面环境。需要再次使用图形桌面时,可以执行“init 5”或者“systemctl isolategraphical.target”命令切换回去。通过切换 target 的操作,还可以实现两个特殊的功能,那就是关机和重启。运行级别 0、6 分别对应关机、重启这两个特殊模式,因此只要执行“init 0”与“init 6”命令就可以实现相应的关机、重启操作了。设置永久运行要执行reboot命令否不生效

runlevel只能查看切换运行级别与当前运行级别

systemctl get-default只能查看默认的运行级别

init的命令参数是运行级别所对应的数字

systemctl的命令参数是具体的target

在centos7当中查看运行级别有两个命令runlevel和systemctl get-default

centos7可以兼容centos6的命令,centos6不可以兼容centos7的命令

在 CentOS 系统中,各种系统服务的控制脚本默认放在/usr/lib/systemd 目录下。通过systemctl 命令工具可以实现对指定系统服务的控制。

start(启动):运行指定的系统服务程序,实现服务功能。

stop(停止):终止指定的系统服务程序,关闭相应的功能。

restart(重新启动):先退出,再重新运行指定的系统服务程序。

reload(重新加载):不退出服务程序,只是刷新配置。

status(查看服务状态):查看指定的系统服务的运行状态及相关信息。

优化开机自动加载的服务

Linux 操作系统在每次开机后会进入默认的 systemd运行目标(如字符模式或图形模式),并运行该目标中默认设为启动的各种系统服务。若要禁止某些系统服务自动运行,可以使用ntsysv 或者 systemctl 工具进行优化。

先安装ntsysv软件包(yum -y install ntsysv)

使用(空格键)加*或去掉*,按下(tab)键调到下行,然后退出。

使用 systemctl 工具

systemctl 工具与 ntsysv 的功能类似,但是 systemctl 不提供交互式的操作界面它用于查询或设置系统服务的默认启动状态。当需要设置某一个服务在当前运行目标中的默认启动状态时,使用 systemctl 工具会更有效率。

enable:开机自动启动。

disable:开机自动关闭。

is-enable:查看开机启动状态。

设置运行界别就相当于做了一个软连接

以.service结尾的就代表这是一个服务脚本

system除了控制与管理系统的systemctl命令之外,还有一些其他的系统命令

更改系统主机名:使用hostname命令可以显示和临时修改系统的主机名。在Centos 7版本中的主机配置文件变为/etc/hostname文件,而systemd的命令hostnamectl用于修改此文件信息。除此之外hostnamectl命令还可以查看主机名的状态。

设置永久生效的都是通过配置文件来生效的,修改主机名也对应的配置文件

修改主机名之后不会立即生效,可以通过执行命令bash来使他生效。

临时修改不会修改配置文件,永久修改就会修改配置文件

修改日期时间

先创建一个独立的硬盘。随后分区,格式化为xfs的格式,然后挂载到一个新创建的文件下,然后dd if=/dev/sda of=/bak/sda.mbr.bak bs=512 count=1

(抓取/dev/sda盘中的0磁道的0扇区输出到新创建的/bak/sda.mbr.bak文件下,block大小为512字节,一个块)

然后进入救援模式(即单用户模式)然后再创建一个挂载点,随后将/dev/sdb1挂载进去,然后再将文件写入到/dev/sda,

dd if=/aaa/sda.mbk.bak of=/dev/sda 然后exit,就ok了。

先用光盘进入救援模式,切记(一定在进度条没完成之前按下esc键进入救援模式)切换/ (硬盘为/目录),cd /boot/grub,将之前的grub备份文件进行一个还原。

备份:(cp grub.cfg grub.cfg.bak)

切换/: (chroot /mnt/sys image)(将硬盘作为/)

还原: (cp grub.cfg.bak grub.cfg)

如果没有备份的情况下,误删除内核文件的话,可以通过指定GRUB文件方式进入系统,命令:先指定磁盘文件系统的类型(insmod xfs)回车,然后再指定所用到的内核文件,(linux 16 /vmlinuz-3.10.0 -1160.e17.x86_64)紧接着指定(/)分区的挂载点(root=/dev/mapper/centos-root)然后回车。再指定初始化镜像文件,对应好内核文件版本信息,(initrd16 /initramfs-3.10.0-1168.e17×86_64.img)后缀名必须加上(.img)随后回车。然后boot,会根据指定的信息,开启操作系统,(以上命令进行的时候,多用TAB键去补全,提高命令输入的正确性)

然后使用vi编辑器,进入vim/boot/grub2/grub.cfg

把同版本内核的grub.cfg的文件复制进去就Ok了。

如果忘记密码了怎么处理?

依然使用光盘进入救援模式,如果要修改用户密码的时候会读取/etc/passwd以及/etc/shadow.所以还是要切换/,将硬盘作为/(chroot /mnt/sys image)

然后passwd root修改root用户的密码即可。

为提高安全性可以设置一个密码。

在进度条没走完的时候按下F2进入,设置完了以后按下F10保存。

  • 29
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值