Linux 系统启动流程、关键操作及基础运用详解

Linux 系统启动流程、关键操作及基础运用详解

一、开篇介绍

Linux 系统的启动是一个按序执行的复杂过程,从计算机通电到登录界面出现,涉及多个环节的协同运作。掌握这一流程,有助于理解系统工作机制,也是排查启动故障的基础。本文将详细解析 Linux 系统的启动步骤,以及相关的运行级别设置、GRUB2 操作和 root 密码破解等关键内容,同时补充一些基础运用知识,帮助读者更好地进行系统日常操作。

二、Linux 系统启动的详细步骤

(一)开机自检(POST)

计算机加电后,首先执行开机自检(POST,Power-On Self-Test),该过程由 BIOS(基本输入输出系统)或 UEFI(统一可扩展固件接口)主导。其核心任务是检测内存、CPU、硬盘、显卡、键盘等核心硬件组件的可用性。若硬件存在故障,系统会通过蜂鸣声或屏幕提示等方式报错。

自检完成后,BIOS/UEFI 依据预设的启动顺序(可在固件设置中修改)检索启动设备(如硬盘、U 盘、光盘等),确定启动设备后进入下一阶段。

(二)MBR 引导

启动设备确定后,BIOS/UEFI 读取该设备的主引导记录(MBR)。MBR 位于硬盘第一个扇区,固定为 512 字节,包含引导加载器的关键信息。

Linux 系统中,主流引导加载器为 GRUB2。BIOS/UEFI 读取 MBR 后,将系统控制权移交至 GRUB2,由其继续引导启动流程。

(三)GRUB 菜单

GRUB2 获得控制权后,读取配置文件 /boot/grub2/grub.cfg。该文件记录系统内安装的内核版本、操作系统信息等关键配置。

根据配置文件内容,GRUB2 在屏幕显示引导菜单。若系统存在多个内核或操作系统,用户可通过方向键选择启动项;若未进行操作,GRUB2 将按默认配置启动。

(四)加载 Linux 内核

GRUB2 根据选择加载对应的 Linux 内核文件(通常以 vmlinuz 为前缀)至内存。内核是系统核心,负责管理系统资源。

内核载入内存后,GRUB2 完成使命,控制权移交内核。CPU 随即执行内核代码,进行初始化操作,包括任务调度系统初始化、内存分配机制设置、必要硬件驱动加载等,为内核构建稳定运行环境。

(五)运行 systemd 进程

内核初始化完成后,启动系统首个用户空间进程 systemd,其进程号固定为 1,所有其他进程均由其直接或间接启动。

systemd 启动后,读取 /etc/systemd/system/default.target 文件,该文件用于设定系统运行级别。运行级别决定系统启动的服务及功能范围。

三、运行级别详解

Linux 系统定义 7 种运行级别(0-6),各级别功能明确:

0:关机级别,触发系统关机操作。

1:单用户模式,仅 root 用户可登录,用于系统维护与故障排查(如密码修改)。

2:多用户模式,无网络功能,支持多用户登录但无法联网。

3:完全多用户模式(命令行界面),服务器常用模式,支持多用户登录及网络功能,通过命令行操作。对应 systemd 目标为 multi-user.target。

4:保留级别,暂未定义具体用途。

5:图形化界面模式,启动图形桌面环境,支持鼠标与图标操作。对应 systemd 目标为 graphical.target。

6:重启级别,执行系统重启操作。

(一)查看和设置默认运行级别

查看当前默认运行级别的命令:

复制代码
systemctl get-default

执行后显示默认目标(如 multi-user.target 对应 3 级,graphical.target 对应 5 级)。

修改默认运行级别的命令:

systemctl set-default 目标名称

示例:

设置为命令行界面(3 级):

复制代码
systemctl set-default multi-user.target

设置为图形化界面(5 级):

复制代码
systemctl set-default graphical.target

(二)临时切换到图形化界面

当前为命令行界面(3 级)时,临时切换至图形化界面(5 级)的命令:

复制代码
systemctl isolate graphical.target

该切换为临时生效,重启后恢复默认运行级别。

四、GRUB2 相关操作

(一)更新 GRUB2 配置文件

安装新内核或修改启动选项后,需更新配置文件 /boot/grub2/grub.cfg 使修改生效,命令为:

复制代码
grub2-mkconfig -o /boot/grub2/grub.cfg

复制代码
grub2-mkconfig > /boot/grub2/grub.cfg

两者功能一致,均根据系统当前状态重新生成配置文件并保存。

(二)修复 GRUB2

若 grub2 目录被删除导致启动引导器失效,修复步骤如下:

重新在硬盘安装启动引导器:

复制代码
grub2-install /dev/sda

其中 /dev/sda 为硬盘设备名,需根据实际情况调整。执行后恢复 grub2 目录。

  1. 重新生成 grub.cfg 文件:

    grub2-mkconfig -o /boot/grub2/grub.cfg

(三)GRUB2 加密

为防止未授权修改启动选项,可对 GRUB2 加密,支持明文与密文两种方式。

明文加密:

复制代码
vim /etc/grub.d/00_header

cat << EOF
set superusers="hina"
password hina 123456
EOF

其中 "hina" 为超级用户名,"123456" 为密码,可自定义。

复制代码
grub2-mkconfig -o /boot/grub2/grub.cfg

打开配置文件:

在文件中添加:

更新配置使加密生效:

密文加密:

密文加密更安全,步骤如下:

复制代码
grub2-mkpasswd-pbkdf2

输入密码后,复制生成的密文(注意避免多余空格)。

复制代码
vim /etc/grub.d/00_header

cat << EOF
set superusers="hina"
password_pbkdf2 hina 粘贴密文密码
EOF

其中 "hina" 为超级用户名,粘贴密文至对应位置

复制代码
grub2-mkconfig -o /boot/grub2/grub.cfg

生成密文密码:

打开配置文件:

添加内容:

更新配置:

五、破解 Linux 管理员 root 密码

遗忘 root 密码时,可按以下步骤破解:

重启系统,GRUB2 引导菜单出现时按 "e" 进入编辑模式。

找到 Linux 内核所在行,在末尾添加 "rd.break",按 Ctrl+X 启动。

进入伪系统后,重新挂载根目录并赋予读写权限:

复制代码
mount -o remount,rw /sysroot

进入真实系统:

复制代码
chroot /sysroot

修改 root 密码,两种方式可选:

输入passwd root,按提示输入新密码并确认。

复制代码
echo linux123 | passwd --stdin root

直接将密码设为 linux123(可替换为自定义密码)。

为 SELinux 写入标签:

touch /.autorelabel

两次输入exit退出,系统重启后即可用新密码登录 root 用户。

此外,设置 root 密码也可使用:

复制代码
echo redhat | passwd --stdin root

该命令将密码设为 redhat,可按需修改。

六、基础运用内容

(一)系统状态查看

查看系统版本信息:不同的 Linux 发行版查看系统版本的命令有所不同。在 CentOS 系统中,可使用cat /etc/redhat-release命令;在 Ubuntu 系统中,可使用lsb_release -a命令。这些命令能帮助我们快速了解所使用的系统版本,以便进行相应的操作和配置。

查看系统运行时间:使用uptime命令可以查看系统的运行时间、当前登录用户数以及系统的平均负载。平均负载是指在特定时间间隔内运行队列中的平均进程数,一般来说,平均负载的值不超过系统 CPU 核心数较为合理。

查看内存使用情况:free -h命令可以以人类可读的方式显示内存的使用情况,包括总内存、已使用内存、空闲内存、共享内存、缓冲和缓存等信息。通过这些信息,我们可以判断系统内存是否充足,是否需要进行内存优化或扩容。

查看磁盘使用情况:df -h命令用于查看文件系统的磁盘空间使用情况,包括每个分区的总容量、已使用容量、可用容量以及挂载点等。当磁盘空间不足时,该命令能帮助我们找到占用空间较大的文件或目录,以便进行清理。

查看进程信息:ps aux命令可以显示系统中所有正在运行的进程信息,包括进程 ID、用户、CPU 使用率、内存使用率、启动时间等。如果需要查看特定进程的信息,可结合grep命令使用,例如ps aux | grep nginx可以查看 nginx 进程的相关信息。

(二)服务管理

查看服务状态:使用systemctl status 服务名称命令可以查看指定服务的运行状态,例如systemctl status sshd可以查看 ssh 服务是否正在运行、启动时间等信息。如果服务正在运行,会显示 "active (running)";如果服务未运行,会显示 "inactive (dead)"。

启动服务:systemctl start 服务名称命令用于启动指定的服务,例如systemctl start httpd可以启动 Apache 服务。

停止服务:systemctl stop 服务名称命令用于停止指定的服务,例如systemctl stop mysql可以停止 MySQL 服务。

重启服务:当服务的配置文件进行修改后,通常需要重启服务使修改生效,可使用systemctl restart 服务名称命令,例如systemctl restart nginx重启 nginx 服务。

设置服务开机自启:为了保证服务在系统重启后能自动运行,可使用systemctl enable 服务名称命令设置服务开机自启,例如systemctl enable sshd设置 ssh 服务开机自启。如果需要取消开机自启,可使用systemctl disable 服务名称命令。

(三)日志查看

系统日志:Linux 系统的日志文件通常存放在/var/log目录下,其中/var/log/messages是系统的主要日志文件,记录了系统的各种重要事件,如系统启动、服务启动和停止、错误信息等。使用tail -f /var/log/messages命令可以实时查看日志文件的最新内容,便于及时发现系统问题。

服务日志:许多服务都有自己的日志文件,例如 Apache 服务的日志文件通常在/var/log/httpd目录下,包括访问日志(access_log)和错误日志(error_log);MySQL 服务的日志文件位置可在其配置文件中查看。查看服务日志有助于排查服务运行过程中出现的问题。

七、总结

Linux 系统启动流程包括开机自检、MBR 引导、GRUB 菜单、加载内核、运行 systemd 进程五个核心步骤,各环节紧密衔接。掌握运行级别设置、GRUB2 操作及 root 密码破解等知识,对系统管理与维护至关重要。同时,了解系统状态查看、服务管理和日志查看等基础运用内容,能帮助我们更好地进行日常的系统操作和问题排查。通过本文解析,可全面理解 Linux 启动机制及相关基础运用,为实际操作与故障处理提供支撑。