linux挂载efi和挂载boot引导方式的区别?
发布网友
发布时间:2024-10-20 07:42
我来回答
共1个回答
热心网友
时间:2024-11-15 16:52
Linux 启动流程包括四个基本阶段:BIOS 初始化、引导加载程序加载内核、内核初始化,以及 init 进程启动系统服务。在这些过程中,BIOS 和引导加载程序(例如 GRUB)负责加载内核到内存中,内核初始化硬件和加载初始化进程,而 init 进程则是启动的第一个进程,负责启动和停止系统上的基本服务。
BIOS(基本输入输出系统)在启动过程中初始化硬件并执行开机自检(POST),确保所有硬件正常运行。之后,BIOS 负责加载引导加载程序。引导加载程序,如 GRUB,将内核加载到内存中,并使用一组内核参数启动内核。
UEFI(统一可扩展固件接口)是一种替代 BIOS 的启动机制,主要用于现代硬件。UEFI 在启动过程中将有关启动的信息存储在 .efi 文件中,并将其放置在 EFI 系统分区上。与 BIOS 不同,UEFI 支持 GPT 分区,允许在非 EFI 系统上使用 GPT 格式。
引导加载程序的主要职责是加载内核。在 Linux 中,常见的引导加载程序包括 GRUB、LILO、efiLinux、coreboot 和 SYSLINUX。在加载内核后,引导加载程序会传递必要的参数,以帮助内核启动。
内核启动时,存在一个临时根文件系统的问题。在旧版本的 Linux 中,使用 initrd(初始内存磁盘)作为临时根文件系统,而现代 Linux 使用 initramfs(初始化 RAM 文件系统)作为内置在内核中的临时根文件系统。内核使用 initrd 或 initramfs 加载必要的启动驱动程序,然后将实际的根文件系统替换这些临时系统。
在加载根文件系统后,内核以只读模式挂载根分区进行安全检查,然后以读写模式重新挂载根文件系统。之后,内核寻找并执行 init 程序,这通常是启动的第一个进程,负责启动系统上的所有其他基本服务。在 Linux 中,init 有三种主要实现:System V init(sysv)、Upstart 和 systemd。
总的来说,Linux 启动流程涉及 BIOS 和引导加载程序加载内核,内核初始化硬件并加载初始化进程,以及 init 进程启动系统服务。这些步骤确保了系统在启动时能够有效地加载和运行所需的组件。