面试时被问Linux根文件系统启动流程,懵了,没回答上来
面试时被问根文件系统启动流程该怎么答?80%的运维都栽在这问题上。要么混淆rootfs和真实根文件系统,要么说不清楚initramfs的作用,这很正常,我之前也回答不上来,后来整理了一下,理解透了,后面就再也不怕这问题了。经常在面试时被问:什么是Linux根文件系统?很多人会答:是内核启动后挂载的第一个文件系统。这是典型的错误答案!正确表述必须分清两个核心概念:内核启动后第一个挂载的是rootfs伪文件系统(仅存于内存,ramfs/tmpfs实现),负责创建Linux文件树的根目录(/)。平时操作的真实根文件系统(如ext4),是后续挂载到rootfs上的,所有实际文件都存储在这里。不信你可以看内核启动日志:面试可以适当吹一下的加分项:rootfs的特点是读写极快。(放在内存的,能不快吗?)还可以继续吹牛关于根文件系统启动的3步流程,当然估计人家也没空听你长篇大论的说,搞几句重点应该就能过关了。第1步:挂载rootfs(搭建文件树框架);第2步:解析initramfs(包含挂载真实根文件系统所需的驱动、脚本和工具),内核会把它解析后,将文件拷贝到rootfs中(非挂载,是复制); 第3步:执行/init脚本,挂载真实根文件系统(完成系统搭建)我试过大致这样表述一下,效果还是不错的:Linux根文件系统启动分3步:首先内核挂载rootfs伪文件系统,创建文件树框架;然后解析initramfs这个工具包,将文件拷贝到rootfs;最后执行/init脚本,挂载虚拟文件系统和真实根文件系统(如ext4),通过switch_root切换到真实根目录并启动1号进程,完成系统初始化。(正常语速的话,几分钟内说完最合适,千万不要背书式的一下全部说完,还要假装停顿一下,做思考状,显得你是真正去理解过这些过程的。)欢迎各位大佬分享更多Linux运维面试高频题,特别一些不常见的但又容易拉开距离的问题。