如果大家做过linux系统移植、或者Linux相关开发,对根文件系统这个名词应该很熟悉,在搭建嵌入式开发环境过程中,移植bootloader,移植kernel制作根文件系统是必须要做3件事情。
根文件系统是内核启动时所挂载mount
的第一个文件系统,系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。
Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。成功之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。根文件系统作为系统的根
,系统启动之后为完成一些初始化配置,操作。比如:系统登录输入的开机密码、开机账户这些信息就是存放在根文件系统里的。
根文件系统挂载的流程:先运行uboot引导内核,内核启动完成之后,根据配置的环境变量,找到根文件系统的位置,将/dev/xxx挂载,然后执行/linuxrc程序,等其执行完后。切换根目录,再挂载具体的根文件系统,根文件系统执行完之后,执行init的进程,也就第一个用户进程,对系统进行各种初始化的操作。
上面说的/dev/xxx 是根文件系统存放位置的设备节点,根文件系统支持从SD卡、光盘、EMMC、NFS网络位置进行挂载。/linuxrc 是根文件系统制作之后,在顶层目录生成的文件。
根文件系统必须具备的几个重要目录:/bin、/etc、/lib、/dev
其中/bin目录存放系统的基本命令,比如:ls 这些命令就放在这里面。
/etc存放系统的