linux 怎么启动分为两大块,一是物理机或者虚拟机按下电源之后的系统开机引导流程,二是系统已经进入之后,使用命令启动服务,现代主流发行版都是 systemd 体系,使用 systemctl 启动服务。很多新手容易混淆整机开机和启动系统服务这两个概念,整机开机是从 BIOS 或者 UEFI 引导,加载内核初始化系统,服务启动是进入系统之后拉起后台守护进程,学习 linux 怎么启动,需要理解完整开机流程,掌握 systemctl 启动服务命令,同时了解老版本 sysvinit 的 service 命令,下面分模块深度讲解。
一 整机开机引导完整流程
第一步 BIOS 或者 UEFI 自检,硬件检测完成之后,读取磁盘上的引导程序 GRUB
第二步 GRUB 引导菜单选择 linux 内核,加载内核镜像和 initramfs 内存文件系统
第三步 内核解压运行,识别硬件驱动,挂载根文件系统
第四步 启动 1 号进程,新版系统是 systemd,老版本是 init
第五步 systemd 按照预设的运行级别 target,依次启动各项系统服务,最后进入登录界面或者命令行终端
深度说明,虚拟机安装 linux 之后,在虚拟机控制台点击启动电源,就会触发上面整套开机流程,如果是云服务器,在云平台控制台点击开机按钮,远程启动这台 linux 主机。
二 系统内启动服务命令 systemctl
systemctl 是现在 linux 怎么启动服务的核心命令,centos7 8 9 ubuntu 新版本全部使用 systemd
| 命令 | 作用 |
|---|---|
| systemctl start 服务名 | 立即启动指定服务 |
| systemctl enable 服务名 | 设置开机自动启动 |
| systemctl enable --now 服务名 | 一步完成启动并且设置开机自启 |
| systemctl status 服务名 | 查看服务运行状态 |
实操步骤
第一步 确认服务名称,比如 sshd nginx crond
第二步 加上 sudo 或者切换 root 账号
第三步 输入 systemctl start sshd 回车执行
第四步 执行 systemctl status sshd,如果显示 active running,代表服务启动成功
三 老版本 service 命令
centos6 以及更早的 sysvinit 系统,linux 怎么启动服务使用 service 命令,现在老旧服务器还会遇到
| 命令 | 作用 |
|---|---|
| service 服务名 start | 启动服务 |
| chkconfig 服务名 on | 配置开机自启 |
实操步骤,root 身份执行 service nginx start,然后 service nginx status 查看状态,需要开机自启单独执行 chkconfig nginx on。新版系统虽然保留 service 兼容命令,底层依然转发给 systemctl,官方推荐优先使用 systemctl。
四 启动失败排查
1 执行 systemctl status 服务名,查看报错信息
2 使用 journalctl -u 服务名查看完整启动日志
3 排查端口占用,配置文件语法错误,依赖服务没有启动,运行用户权限不足
4 如果整机无法开机,可以进入 GRUB 救援模式,修复损坏的配置文件
五 补充要点
systemd 里面的 target 相当于老系统的运行级别,multi-user.target 就是多用户命令行模式,graphical.target 是带图形桌面模式,可以通过 systemctl set-default 设置默认启动目标。
【常见问题】
问题 1 linux 怎么启动,云服务器怎么开机
回答 1 linux 怎么启动,云服务器在云厂商控制台,找到对应的实例,点击开机按钮,远程触发主机上电,系统自动走完 GRUB 引导内核加载 systemd 启动整套系统。
问题 2 linux 怎么启动,systemctl start 和 enable 有什么区别
回答 1 linux 怎么启动,systemctl start 只是当下立刻启动服务,重启服务器不会自动运行,systemctl enable 是配置开机自启,不会立刻启动当前服务,enable --now 可以同时完成两个操作。
问题 3 linux 怎么启动,服务启动失败怎么排查
回答 1 linux 怎么启动,服务启动失败优先执行 systemctl status 查看报错,再用 journalctl 查看完整日志,检查配置文件错误端口冲突权限不足这些常见原因。
问题 4 linux 怎么启动,能不能直接进入图形界面
回答 1 linux 怎么启动,如果系统安装了图形桌面,可以切换到 graphical.target,执行 systemctl isolate graphical.target,并且设置这个 target 为默认启动目标,下次开机就会自动进入图形界面。
【免责申明】
本文介绍 linux 怎么启动相关内容仅作为技术学习参考,修改启动目标或者救援模式操作有误可能导致系统无法正常开机,操作前建议备份系统,本文不对操作造成的系统故障承担责任。


