本文主要介绍“Linux根是指什么”。在日常操作中,相信很多人对Linux Roots指的是什么有疑惑。主机频道查阅了各种资料,整理出简单易用的操作方法,希望能帮你解答“Linux根指什么”的疑惑!接下来请跟着主机频道学习!
Linux rootfs是指Linux中的根文件系统;根文件系统是内核启动时挂载的第一个文件系统。内核代码镜像文件保存在根文件系统中,系统引导加载程序会将一些基本的初始化脚本和服务加载到内存中,以便在挂载根文件系统后运行。
一、什么是文件系统?
文件系统是操作系统用来识别存储设备(通常是磁盘,但也包括基于NAND闪存的固态磁盘)或分区上的文件的方法和数据结构。即一种用于在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件组织称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,操作和管理对象的软件集合,对象和属性。从系统的角度来看,文件系统是组织和分配文件存储设备的空间,负责文件存储,并对存储的文件进行保护和检索的系统。具体来说,它负责为用户创建文件,存储、读取、修改和转储文件,控制对文件的访问,以及在用户不再使用文件时撤销文件。
虽然内核是linux的核心,但文件是用户与操作系统交互的主要工具。对于linux来说尤其如此,因为在UNIX传统中,它使用文件I/O机制来管理硬件设备和数据文件。
二、什么是根文件系统?根文件系统是内核启动时挂载的第一个文件系统。内核代码镜像文件保存在根文件系统中,系统引导启动程序会将一些基本的初始化脚本和服务加载到内存中,在挂载根文件系统后运行。
第三,为什么根文件系统如此重要?根文件系统前面有“根”的原因意味着它是加载其他文件系统的“根”。没有这个根目录,其他文件系统将无法加载。
根文件系统包含系统启动所必需的目录和密钥文件,以及挂载其他文件系统所必需的文件。例如:
init进程的应用程序必须在根文件系统上运行;根文件系统提供了根目录“/”;linux挂载分区时所依赖的信息存储在根文件系统/etc/fstab中;Shell命令程序必须运行在根文件系统上,比如ls、cd等命令;总之:一个linux系统除非内核本身工作,否则无法工作,只能和rootfs(etc目录下的配置文件,/bin /sbin目录下的shell命令,/lib目录下的库文件等一起工作。).
Linux启动时,首先必须挂载的是根文件系统;如果系统无法从指定设备装载根文件系统,系统将出错并退出引导。成功后,您可以自动或手动挂载其他文件系统。因此,不同的文件系统可以共存于一个系统中。在Linux中,将文件系统与存储设备相关联的过程称为挂载。使用mount命令将文件系统附加到当前文件系统层次结构(根)。装载时,提供文件系统类型、文件系统和装载点。根文件系统挂载到根目录下的“/”后,根目录下有根文件系统的各种目录和文件,比如/bin /sbin /mnt,然后其他分区挂载到/mnt目录下,在/mnt目录下有这个分区的各种目录和文件。
四、如何挂载根文件系统init/main . c->;
start _ kernel()-& gt;VFS _ caches _ init(total ram _ pages)–& gt;
mnt _ init()–& gt;
/* sysfs用于记录和显示linux驱动模型。sysfs在rootfs之前挂载,为全面显示linux驱动模型/做准备
/mnt_init()调用sysfs_init()注册并挂载sysfs文件系统,然后调用object _ create _ and _ add()创建fs目录*/
sysfs _ init();
/* init_rootfs()注册rootfs,然后调用init_mount_tree()挂载rootfs */
init _ root fs();
init_mount_tree()。
1.目前sysfs文件系统还没有挂载到rootfs的某个挂载点,后续的init程序会把sysfs挂载到rootfs的sys挂载点;
2.rootfs是基于内存的文件系统,所有操作都在内存中完成;没有实际的存储设备,所以不需要设备驱动程序参与。基于以上原因,linux在启动阶段使用rootfs文件系统。当磁盘驱动和磁盘文件系统成功加载后,linux系统会将系统根目录从rootfs切换到磁盘文件系统。
开始_内核
vfs _ caches _ init
mnt _初始化
Init_rootfs注册rootfs文件系统。
Init_mount_tree挂载rootfs文件系统。
虚拟文件系统内核装载
挂载文件系统
类型->;Mount其实就是rootfs_mount。
mount_nodev
Fill_super其实就是ramfs_fill_super。
inode = ramfs_get_inode(sb,NULL,S _ IFDIR | FSI-& gt;mount_opts.mode,0);
sb-& gt;s _ root = d _ make _ root(inode);
静态构造结构qstr name = QSTR _ INIT(& quot;/& quot;, 1);[1*]
_ _ d _ alloc(root _ inode-& gt;我_ sb & amp;姓名);
…
mnt-& gt;mnt.mnt _ root = root[2*]
mnt-& gt;mnt . mnt _ sb = root-& gt;d _ sb[3*]
mnt-& gt;mnt _ mount point = mnt-& gt;mnt.mnt _ root[4*]
mnt-& gt;mnt _ parent = mnt[5*]
root.mnt = mnt
root . dentry = mnt-& gt;mnt _ root
mnt-& gt;mnt _ flags | = MNT _ LOCKED;
set_fs_pwd(当前-& gt;fs & amp;根);
set_fs_root(当前-& gt;fs & amp;根);
…
休息_初始化
kernel_thread(kernel_init,NULL,CLONE _ FS);在执行kernel_init之前,会建立roofs文件系统。
1.根目录的名称设置为“/”;2.vfsmount中的根目录设置为;3.vfsmount中的超级块设置为;4.vfsmount中的文件挂载点设置为,指向自己;5.vfsmount中父文件系统的vfsmount设置为自身;
动词 (verb的缩写)根文件系统的常用目录介绍通常,根文件系统至少包括以下目录:
/etc/:存储重要的配置文件。
/bin/:存储引导时必须使用的常用可执行文件。
/sbin/:存储引导过程中需要的系统执行文件。
/lib/:存储/bin/和/sbin/的执行文件所需的链接库,以及Linux的内核模块。
/dev/:存储设备文件。六、常用目录Linux文件系统一般有以下目录:
/bin目录该目录包含所有用户都可以使用的基本命令。这些命令可以在挂载其他文件系统之前使用,因此/bin目录必须与根文件系统在同一个分区中。/bin目录下常见的命令有:cat、chgrp、chmod、cp、ls、sh、kill、mount、umount、mkdir、mknod、test等。当我们用Busybox做根文件系统的时候,可以在生成的bin目录中看到一些可执行文件,也就是一些可用的命令。
/sbin directory该目录存储系统命令,即只能由管理员使用的命令。系统命令也可以存储在/usr/sbin、/usr/local/sbin目录中。/sbin目录存储基本的系统命令,这些命令用于启动系统和修复系统。与/bin目录类似,/sbin可以在挂载其他文件系统之前使用,因此/sbin目录必须是根文件。/sbin目录中的常用命令有:shutdown、reboot、fdisk、fsck等。本地用户自己安装的系统命令放在/usr/local/sbin目录中。
/dev目录该目录存储设备文件,这些文件是Linux中特有的文件类型。在Linux系统下,各种设备都是作为文件来访问的,也就是通过读写一个设备文件来操作一个特定的硬件。例如,通过“dev/tty saco & quot;文件可以操作串口0,通过“/dev/mtdblock 1 & quot;您可以访问MTD设备的第二个分区。
/etc目录在这个目录中有各种配置文件。对于PC上的Linux系统,/etc目录下有很多文件和目录。这些目录文件是可选的。它们取决于系统中的应用程序以及这些程序是否需要配置文件。在嵌入式系统中,这些内容可以大大减少。
/lib目录该目录存储共享库和可加载(驱动程序),共享库用于启动系统。运行根文件系统中的可执行程序,比如/bin /sbin目录中的程序。
/home directory用户目录,这是可选的。对于每一个普通用户来说,在/home目录下都有一个以用户名命名的子目录,存放用户相关的配置文件。
/root directory root用户的目录,对应的,普通用户的目录是/home下的子目录。
/usr目录/usr目录的内容可以存储在另一个分区中,然后在系统启动后链接到根文件系统中的/usr目录。它包含共享的只读程序和数据,这表明/usr目录中的内容可以在多个主机之间共享,这主要符合FHS标准。/usr中的文件应该是只读的,与其他主机相关的变量文件应该保存在其他目录中,比如/var。/usr目录可以在嵌入式系统中细化。
/var目录与/usr目录相反。/var目录存储可变数据,例如假脱机目录(邮件、新闻)、日志文件和临时文件。
/proc directory这是一个空目录,通常用作proc文件系统的挂载点。PROC文件系统是一个虚拟文件系统,它没有实际的存储设备。里面的目录和文件是内核临时生成的,用来指示系统的运行状态,文件控制系统也可以操作。
/mnt目录用于临时挂载文件系统的挂载点,通常是一个空目录,或者您可以在其中创建一个空子目录,比如/mnt/cdram /mnt/hda1。用于临时安装CD和硬盘。
/tmp目录用于存储临时文件,通常是一个空目录。一些需要生成临时文件的程序使用/tmp目录,因此/tmp目录必须存在并且可以访问。
评论前必须登录!
注册