linux如何初始化
linux如何初始化详细介绍
Linux 系统初始化过程涉及多个步骤,从计算机加电启动开始,到最终用户能够登录并使用系统。以下为你详细介绍:
1. BIOS/UEFI 阶段
- BIOS(基本输入输出系统):计算机加电后,首先会运行 BIOS。BIOS 会进行一系列硬件自检(POST,加电自检),检查硬件设备是否正常工作,如内存、硬盘、显卡等。之后,BIOS 会从存储设备(通常是硬盘)中寻找引导扇区。
- UEFI(统一可扩展固件接口):作为 BIOS 的替代方案,UEFI 功能更强大、启动速度更快。它同样会进行硬件检测,并且支持更高级的硬件配置和安全特性。UEFI 会读取
EFI系统分区中的启动管理器信息。
2. 引导加载程序(Bootloader)阶段
引导加载程序负责将操作系统内核加载到内存中。常见的 Linux 引导加载程序有 GRUB(GRand Unified Bootloader)和 LILO(Linux Loader),其中 GRUB 更为常用。
- GRUB:在找到引导扇区后,GRUB 会被加载并运行。它会显示一个菜单,让用户选择要启动的操作系统或内核版本(如果有多个的话)。用户选择后,GRUB 会将相应的内核和初始化 RAM 磁盘(initrd 或 initramfs)加载到内存中。
- 加载内核:引导加载程序将内核镜像文件(通常位于
/boot目录下,如vmlinuz)加载到内存中,并将控制权交给内核。
3. 内核初始化阶段
- 内核解压与初始化:内核被加载到内存后,会进行自我解压和初始化操作,包括检测和识别硬件设备、初始化内存管理、设置中断处理程序等。
- 加载驱动程序:内核会根据硬件检测结果加载必要的设备驱动程序,这些驱动程序可以来自内核本身,也可以来自初始化 RAM 磁盘。
- 挂载根文件系统:内核会挂载根文件系统,根文件系统是 Linux 系统的基础,包含了系统运行所需的各种文件和目录。初始化 RAM 磁盘会提供必要的驱动程序和工具,帮助内核挂载真正的根文件系统。
4. init 进程启动阶段
- PID 1:内核启动完成后,会启动
init进程,它的进程 ID(PID)为 1,是系统中所有其他进程的父进程。 - 运行级别:
init进程会根据系统配置的运行级别来启动相应的服务和程序。运行级别定义了系统的不同运行状态,常见的运行级别有:- 运行级别 0:关机
- 运行级别 1:单用户模式,用于系统维护
- 运行级别 2:多用户模式,但没有网络服务
- 运行级别 3:多用户模式,有网络服务,是常用的服务器运行级别
- 运行级别 4:未定义,用户可以自定义
- 运行级别 5:图形化多用户模式,常用于桌面系统
- 运行级别 6:重启
5. 服务启动阶段
- SysVinit:在传统的 SysVinit 系统中,
init进程会根据运行级别执行/etc/init.d目录下的脚本,这些脚本用于启动和停止系统服务,如网络服务、数据库服务等。 - systemd:现代 Linux 系统大多采用
systemd作为初始化系统,它替代了传统的 SysVinit。systemd使用单元文件(.service、.target等)来管理系统服务和资源,启动速度更快,并且支持并行启动服务。systemd会根据默认目标(类似于运行级别)启动相应的服务单元。
6. 用户登录阶段
- 控制台登录:在服务启动完成后,如果是运行级别 3 或以上,系统会启动终端登录服务,用户可以通过控制台输入用户名和密码进行登录。
- 图形化登录:如果是运行级别 5,系统会启动图形化登录界面(如 GNOME、KDE 等),用户可以通过图形界面输入用户名和密码登录系统。
手动初始化相关操作示例
手动配置 GRUB
编辑/etc/default/grub文件,设置 GRUB 的相关参数,如默认启动项、超时时间等:
bash
/etc/default/grub
修改完成后,更新 GRUB 配置:
bash
手动切换运行级别(使用 systemd)
切换到运行级别 3(多用户文本模式):
bash
systemctl isolate multi-user.target
切换到运行级别 5(图形化模式):
bash
systemctl isolate graphical.target
912 systemctl isolate graphical.target
通过以上步骤,Linux 系统完成了从硬件启动到用户登录的整个初始化过程。不同的 Linux 发行版可能会在某些细节上有所差异,但总体的初始化流程是相似的。