菜鸟科技网

Linux开机命令有哪些?

Linux开机命令是系统启动过程中涉及的一系列指令和操作,用于控制系统的启动流程、服务加载、硬件初始化等核心环节,这些命令通常在系统引导的不同阶段执行,从BIOS/UEFI加载到用户登录界面,每个阶段都有特定的命令和脚本发挥作用,以下从开机流程的各个阶段出发,详细解析相关命令及其作用。

Linux开机命令有哪些?-图1
(图片来源网络,侵删)

开机流程与阶段命令

Linux系统的启动过程可分为多个阶段,每个阶段对应不同的命令和配置文件,确保系统从硬件到软件逐步初始化。

BIOS/UEFI阶段

系统加电后,BIOS(基本输入输出系统)或UEFI(统一可扩展固件接口)首先执行硬件自检(POST),并查找启动设备,此阶段不涉及Linux命令,但可通过BIOS/UEFI设置界面进行操作,如:

  • 设置启动顺序:通过方向键选择启动设备(如硬盘、U盘)。
  • 进入BIOS/UEFI:开机时按DelF2F10等键(具体按键因主板而异),可修改启动模式(Legacy BIOS或UEFI)、安全启动(Secure Boot)等选项。

引导加载程序阶段

BIOS/UEFI完成后,会加载引导加载程序(如GRUB、systemd-boot),负责加载Linux内核和初始化内存盘(initramfs),此阶段的核心命令和操作如下:

  • GRUB命令行模式
    若GRUB配置文件损坏或需要手动修复,可在GRUB菜单界面按c进入命令行模式,执行以下命令:

    Linux开机命令有哪些?-图2
    (图片来源网络,侵删)
    • ls:列出所有磁盘分区及文件系统,例如(hd0,gpt1)表示第一块硬盘的GPT分区1。
    • set root=(hd0,gpt1):指定根分区,确保内核和initramfs路径正确。
    • linux /vmlinuz-5.4.0-91-generic root=/dev/sda1 ro:加载内核,vmlinuz为内核文件,root=/dev/sda1指定根分区,ro表示以只读模式挂载。
    • initrd /initrd.img-5.4.0-91-generic:加载initramfs,用于驱动必要的硬件(如存储、文件系统)。
    • boot:启动系统。
  • GRUB修复命令
    若GRUB引导菜单丢失,可通过Live USB进入系统后,使用grub-installupdate-grub修复:

    sudo mount /dev/sda1 /mnt  # 挂载根分区
    sudo grub-install --target=x86_64-efi --boot-directory=/mnt/boot /dev/sda  # UEFI模式安装
    sudo update-grub -o /mnt/boot/grub/grub.cfg  # 重新生成GRUB配置

内核初始化阶段

内核加载后,会以只读模式挂载根分区,并启动第一个进程(通常是systemdinit),此阶段的关键参数和命令包括:

  • 内核参数修改
    在GRUB菜单中选择编辑模式,在linux行末尾添加参数,

    • init=/bin/bash:以单用户模式启动,直接进入bash shell(用于系统修复)。
    • systemd.unit=rescue.target:进入救援模式,仅启动基础服务。
    • nomodeset:禁用内核显卡驱动,解决黑屏问题(适用于NVIDIA等显卡)。
    • quiet splash:简化启动日志,显示图形化启动界面(需安装plymouth)。
  • initramfs相关命令
    initramfs(初始内存盘)包含驱动模块,用于挂载真实根分区,若更新驱动后initramfs未同步,可能导致无法挂载根分区,可通过以下命令重建:

    Linux开机命令有哪些?-图3
    (图片来源网络,侵删)
    sudo update-initramfs -u  # 更新当前内核的initramfs
    sudo update-initramfs -k all -u  # 更新所有内核的initramfs

系统初始化阶段

内核启动后,由systemd(现代Linux发行版主流)或init(旧版)管理系统服务,此阶段的命令和服务管理密切相关:

  • systemd目标(Target)
    目标是服务组的集合,相当于运行级别,常用目标及切换命令如下:
    | 目标名称 | 作用 | 切换命令 |
    |----------------|-------------------------------|------------------------------|
    | default.target | 默认多用户图形模式 | systemctl isolate default.target |
    | multi-user.target | 多用户命令行模式 | systemctl isolate multi-user.target |
    | rescue.target | 救援模式(单用户,仅基础服务)| systemctl isolate rescue.target |
    | emergency.target | 紧急模式(仅最小系统) | systemctl isolate emergency.target |

  • 服务管理命令
    在启动过程中,systemd会按顺序启动服务,可通过以下命令查看和控制:

    • systemctl status:查看服务状态,例如systemctl status sshd查看SSH服务。
    • systemctl enable/disable:设置服务开机自启/禁用,例如systemctl enable nginx让Nginx开机启动。
    • systemctl mask/unmask:隐藏/取消隐藏服务(阻止其启动),例如systemctl mask bluetooth禁用蓝牙服务。
    • journalctl -b:查看本次启动的系统日志,journalctl -xb查看带时间戳的日志,用于排查启动失败问题。

用户登录阶段

系统初始化完成后,显示登录界面(如gdmlightdm或命令行登录),此阶段可通过命令行或图形界面登录,常用操作包括:

  • 命令行登录
    输入用户名和密码后,进入Shell环境,可通过startxexec gnome-session启动图形界面(若未自动启动)。

  • 图形化登录管理
    若登录界面异常,可通过以下命令重启显示管理器:

    sudo systemctl restart gdm  # GNOME桌面
    sudo systemctl restart sddm  # KDE桌面
    sudo systemctl restart lightdm  # 轻量级桌面

开机故障排查常用命令

当系统无法正常启动时,可通过以下命令快速定位问题:

  1. 检查磁盘文件系统
    若提示root fs couldn't be mounted,可能是文件系统错误,用fsck修复:

    sudo fsck /dev/sda1  # 修复指定分区
    sudo fsck -y /dev/sda1  # 自动修复所有问题(-y表示确认)
  2. 查看启动日志
    使用journalctldmesg查看内核和服务日志:

    dmesg | less  # 查看内核启动日志
    journalctl -p err -b  # 查看本次启动的错误日志
  3. 进入紧急模式修复
    若系统无法进入多用户模式,通过GRUB添加systemd.unit=emergency.target进入紧急模式,执行mount -o remount,rw /重新挂载根分区后修复配置。

相关问答FAQs

Q1:如何取消Linux开机自启某个服务?
A1:使用systemctl命令可以管理开机自启服务,取消nginx服务的开机自启,执行sudo systemctl disable nginx,若需临时禁用服务(不修改自启配置),可用sudo systemctl stop nginx停止服务,sudo systemctl mask nginx可彻底阻止服务启动(即使手动调用也无法启动)。

Q2:Linux开机时提示“boot partition not found”怎么办?
A2:此错误通常表示GRUB找不到引导分区,可通过Live USB进入系统,使用fdisk -llsblk确认引导分区(如/dev/sda1)是否存在,并检查是否为bootesp分区(UEFI模式下需同时存在),若分区存在但GRUB配置错误,执行sudo mount /dev/sda1 /mntsudo grub-install --target=x86_64-efi --boot-directory=/mnt/boot /dev/sda(UEFI)或sudo grub-install --boot-directory=/mnt/boot /dev/sda(BIOS),最后sudo update-grub -o /mnt/boot/grub/grub.cfg重建配置文件。

分享:
扫描分享到社交APP
上一篇
下一篇