linux系统启动过程中,文件系统是如何初始化起来的

Linux启动过程和文件系统初始化

初期阶段(BIOS/UEFI、引导加载器)
  1. BIOS/UEFI:电脑启动后,BIOS或UEFI固件负责硬件的初步初始化和自检,然后根据配置从指定的启动设备(硬盘、USB等)加载引导加载器。
  2. 引导加载器(如GRUB):加载内核和初始化内存文件系统(initramfs)。用户可在此选择不同的内核版本或启动参数。
内核初始化与根文件系统挂载
  1. 加载内核:引导加载器加载Linux内核到内存。
  2. 使用initramfs:内核利用initramfs作为临时的根文件系统,这包含了必要的驱动和工具来挂载实际的根文件系统。
  3. 挂载根文件系统为只读:出于完整性检查的目的,内核首先将根文件系统挂载为只读模式。
切换到实际根文件系统
  1. switch_root:系统从initramfs切换到真正的根文件系统。此时,根文件系统仍为只读。
系统初始化(Systemd)
  1. 初始化systemd:Systemd作为init系统接管启动过程。
  2. systemd-fstab-generator:Systemd通过systemd-fstab-generator根据/etc/fstab生成挂载单元(.mount 单元),但此时并未执行重新挂载。
重点:systemd-remount-fs.service
  1. systemd-remount-fs.service:这是Systemd的一个早期服务,专责根据/etc/fstab中的设置重新挂载根文件系统(通常是为了将其从只读切换为读写)。这个服务是通过/etc/fstab中的条目来识别挂载参数的,确保根文件系统和其他需要早期重新挂载的文件系统使用正确的挂载选项。简而言之,该服务的作用是应用最终的挂载参数(例如,rwnoatime等)到根文件系统上。

    • systemd-remount-fs.service的执行是通过/usr/lib/systemd/system/systemd-remount-fs.service文件(或系统特定位置)配置的。它依赖于基本文件系统结构的挂载,但在大多数其他服务之前执行。
其余挂载及服务启动
  1. 自动挂载其他文件系统:在系统进一步启动过程中,其他在/etc/fstab中定义的文件系统会被自动挂载。
  2. 达到目标状态:Systemd继续按照依赖关系启动服务和应用,直到达到设定的目标(例如,图形界面或多用户目标)。
总结

在整个启动过程中,systemd-remount-fs.service扮演了确保根文件系统使用正确挂载选项的关键角色,特别是它确保根文件系统可以从只读模式转变为读写模式,以支持系统的正常运行。这一步是至关重要的,它确保操作系统按照管理员的配置标准工作,对于系统的稳定运行和安全至关重要。

补充

local-fs-pre.target和local-fs.target,前一个作为其他本地文件系统(即非根文件系统)自动挂载之前的一个同步点。后一个作为文件系统已经全部挂载的同步点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值