推广 热搜: 二手  净利2626万  北京  二手车  SMM废铜现货交易日评  企业  全国  汽车  三星  公司 

linux系统的 rootfs是指什么

   日期:2024-05-20     来源:www.yljhjp.com    作者:二手网    浏览:349    评论:0    
核心提示:[db:简介]

linux rootfs是指linux中的根文件系统;根文件系统第一是内核启动时所mount的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。

linux系统的 rootfs是指什么

1、什么是文件系统

文件系统是操作系统用于明确存储设施(容易见到的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的办法和数据结构;即在存储设施上组织文件的办法。操作系统中负责管理和存储文件信息的软件机构称为文件管理软件,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操作和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设施的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户打造文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再用时撤销文件等。

尽管内核是linux的核心,但文件却是用户与操作系统交互所使用的主要工具。这对linux来讲特别这样,这是由于在UNIX传统中,它用文件I/O机制管理硬件设施和数据文件。

2、什么是根文件系统

根文件系统第一是内核启动时所mount的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。

3、根文件系统为何这么要紧

根文件系统之所以在前面加一个根,说明它是加载其它文件系统的根,那样假如没这个根,其它的文件系统也就没方法进行加载的。

根文件系统包括系统启动时所需要的目录和重点性的文件,与使其他文件系统得以挂载(mount)所必要的文件。比如:

init进程的应用程序需要运行在根文件系统上;
根文件系统提供了根目录/;
linux挂载分区时所依靠的信息存放于根文件系统/etc/fstab这个文件中;
shell命令程序需要运行在根文件系统上,譬如ls、cd等命令;
总之:一套linux体系,只有内核本身是不可以工作的,需要要rootfs(上的etc目录下的配置文件、/bin /sbin等目录下的shell命令,还有/lib目录下的库文件等)合适合才能工作。

Linux启动时,第一个需要挂载的是根文件系统;若系统不可以从指定设施上挂载根文件系统,则系统会出错而退出启动。成功之后可以自动或手工挂载其他的文件系统。因此,一个系统中可以同时存在不一样的文件系统。在 Linux 中将一个文件系统与一个存储设施关联起来的过程称为挂载(mount)。用 mount 命令将一个文件系统附着到目前文件系统层次结构中(根)。在实行挂装时,要提供文件系统种类、文件系统和一个挂装点。根文件系统被挂载到根目录下/上后,在根目录下就有根文件系统的每个目录,文件:/bin /sbin /mnt等,再将它他分区挂接到/mnt目录上,/mnt目录下就有这个分区的每个目录和文件。

4、怎么样在内核中挂载根文件系统

init/main.c-start_kernel()-vfs_caches_init(totalram_pages)mnt_init()     sysfs_init();     init_rootfs();init_mount_tree();1、sysfs文件系统现在还没挂载到rootfs的某个挂载点上,后续init程序会把sysfs挂载到rootfs的sys挂载点上;2、rootfs是基于内存的文件系统,所有操作都在内存中完成;也没实质的存储设施,所以无需设施驱动程序的参与。基于以上缘由,linux在启动阶段用rootfs文件系统,当磁盘驱动程序和磁盘文件系统成功加载后,linux系统会将系统根目录从rootfs切换到磁盘文件系统。start_kernel  vfs_caches_init    mnt_init      init_rootfs注册rootfs文件系统      init_mount_tree挂载rootfs文件系统        vfs_kern_mount          mount_fs            type-mount其实是rootfs_mount              mount_nodev                fill_super其实是ramfs_fill_super                  inode=ramfs_get_inode(sb,NULL,S_IFDIR|fsi-mount_opts.mode,0);                  sb-s_root=d_make_root(inode);                    staticconststructqstrname=QSTR_INIT(/,1);[1*]                    __d_alloc(root_inode-i_sb,name);                    mnt-mnt.mnt_root=root;[2*]          mnt-mnt.mnt_sb=root-d_sb;[3*]          mnt-mnt_mountpoint=mnt-mnt.mnt_root;[4*]          mnt-mnt_parent=mnt;[5*]root.mnt=mnt;        root.dentry=mnt-mnt_root;        mnt-mnt_flags|=MNT_LOCKED;        set_fs_pwd(current-fs,root);        set_fs_root(current-fs,root);    rest_init  kernel_thread(kernel_init,NULL,CLONE_FS);

在实行kernel_init之前,会打造roofs文件系统。

1.处设置了根目录的名字为/;
2.处设置了vfsmount中的root目录;
3.处设置了vfsmount中的超级块;
4.处设置了vfsmount中的文件挂载点,指向了自己;
5.处设置了vfsmount中的父文件系统的vfsmount为自己;

5、根文件系统每个常用目录介绍

正常来讲,根文件系统至少包含以下目录:

/etc/:存储要紧的配置文件。/bin/:存储常用且开机时需要用到的实行文件。/sbin/:存储着开机过程中所需的系统实行文件。/lib/:存储/bin/及/sbin/的实行文件所需的链接库,与Linux的内核模块。/dev/:存储设施文件。6、常用目录

Linux文件系统中一般有如下几个目录:

/bin目录
该目录下存放所有用户都可以用的、基本的命令,这类命令在挂接其它文件系统之前就能用,所以/bin目录需要和根文件系统在同一个分区中。
/bin目录下常见的命令有:cat,chgrp,chmod,cp,ls,sh,kill,mount,umount,mkdir,mknod,test等,大家在借助Busybox制作根文件系统时,在生成的bin目录下,可以看到一些可实行的文件,也就是可用的一些命令。

/sbin 目录
该目录下存放系统命令,即只有管理员可以用的命令,系统命令还可以存放在/usr/sbin,/usr/local/sbin目录下,/sbin目录中存放的是基本的系统命令,它们用于启动系统,修复系统等,与/bin目录相似,在挂接其他文件系统之前就能用/sbin,所以/sbin目录需要和根文件系统在同一个分区中。
/sbin目录下常见的命令有:shutdown,reboot,fdisk,fsck等,当地用户自己安装的系统命令放在/usr/local/sbin目录下。

/dev目录
该目录下存放的是设施文件,设施文件是Linux中特有些文件种类,在Linux系统下,以文件的方法访问各种设施,即通过读写某个设施文件操作某个具体硬件。譬如通过dev/ttySAC0文件可以操作串口0,通过/dev/mtdblock1可以访问MTD设施的第2个分区。

/etc目录
该目录下存放着各种配置文件,对于PC上的Linux系统,/etc目录下的文件和目录很多,这类目录文件是可选的,它们依靠于系统中所拥有些应用程序,依靠于这类程序是不是需要配置文件。在嵌入式系统中,这类内容可以大为精减。

/lib目录
该目录下存放共享库和可加载(驱动程序),共享库用于启动系统。运行根文件系统中的可实行程序,譬如:/bin /sbin 目录下的程序。

/home目录
用户目录,它是可选的,对于每一个普通用户,在/home目录下都有一个以用户名命名的子目录,里面存放用户有关的配置文件。

/root目录
根用户的目录,与此对应,普通用户的目录是/home下的某个子目录。

/usr目录
/usr目录的内容可以存在另一个分区中,在系统启动后再挂接到根文件系统中的/usr目录下。里面存放的是共享、只读的程序和数据,这表明/usr目录下的内容可以在多个主机间共享,这类主要也符合FHS标准的。/usr中的文件应该是只读的,其他主机有关的,可变的文件应该保存在其他目录下,譬如/var。/usr目录在嵌入式中可以精减。

/var目录
与/usr目录相反,/var目录中存放可变的数据,譬如spool目录(mail,news),log文件,临时文件。

/proc目录
这是一个空目录,常作为proc文件系统的挂接点,proc文件系统是个虚拟的文件系统,它没实质的存储设施,里面的目录,文件都是由内核临时生成的,用来表示系统的运行状况,也可以操作其中的文件控制系统。

/mnt目录
用于临时挂载某个文件系统的挂接点,一般是空目录,也可以在里面创建一引起空的子目录,譬如/mnt/cdram /mnt/hda1 。用到来时挂载光盘、硬盘。

/tmp目录
用于存放临时文件,一般是空目录,一些需要生成临时文件的程序用到的/tmp目录下,所以/tmp目录需要存在并可以访问。

 
打赏
 
更多>同类二手资讯
0相关评论

热门推荐
推荐图文
推荐二手资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  免责声明  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报