Linux系统启动流程

本博客已迁往http://coredumper.cn


Linux系统启动流程(以CentOS为例):


1. 加载BIOS,获得主机的硬件信息并进行开机自检,然后根据设置取得第一个可启动的设备(如硬盘)。
2. 执行第一个可启动设备内MBR(主引导分区)的Boot Loader(如grub)。
3. 根据Boot Loader的设置加载kernel和initrd(虚拟文件系统),kernel开始检测硬件并加载内核模块(如驱动程序),有些内核模块需要通过initrd才能加载,例如SATA磁盘的驱动程序。
4. kernel调用init进程,init会取得run-level,通常run-level的默认值为3(纯文本模式)或者5(X Window模式)。
5. init执行/etc/rc.d/rc.sysinit文件来设置系统环境。
6. init启动run-level指定的各个服务(daemon进程)。
7. init执行/etc/rc.d/rc.local文件,可以将用户自定义开机启动命令写入该文件。
8. init执行终端机模拟程序mingetty来启动login进程,等待用户登录。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统启动流程大致可以分为以下几个步骤: 1. BIOS/UEFI:当计算机开机时,首先执行的是BIOS/UEFI固件程序。它会对硬件进行初始化,检测硬件是否正常,然后读取启动设备的MBR(Master Boot Record)或GPT(GUID Partition Table)分区表。 2. Bootloader:MBR/GPT分区表中存储了引导程序的位置信息。BIOS/UEFI会将控制权交给引导程序,例如GRUB2。引导程序会提供一个菜单,让用户选择要启动的操作系统。 3. Kernel:当用户选择要启动Linux系统时,引导程序会加载内核文件(vmlinuz)。内核负责初始化硬件设备,加载驱动程序,创建进程,管理内存和文件系统等。内核启动后,会挂载根文件系统,通常是ext4文件系统。 4. Initrd/initramfs:在内核启动之前,还需要加载一些必要的驱动程序和文件系统模块。这些驱动程序和模块可以被打包成一个initrd(initial ramdisk)或initramfs(initial RAM filesystem),并通过引导程序加载到内存中。initrd/initramfs中包含了一些必要的工具程序,例如udev,用于自动识别硬件设备。 5. Init:内核启动之后,会执行init程序,它是Linux系统中的第一个进程。init会读取/etc/inittab和/etc/init.d目录中的配置文件和脚本,然后按照配置文件中的要求启动相应的服务。通常情况下,Linux系统中有多个运行级别,每个级别对应不同的服务和进程。 6. 用户登录:当系统启动完成后,会进入登录界面。用户需要输入用户名和密码,然后系统会验证用户身份,如果验证通过,就会进入图形界面或命令行界面。 这些步骤构成了Linux系统启动流程,不同的发行版可能有细微的差别,但基本流程是相似的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值