当前位置: 技术问答>linux和unix
可否简单的介绍一下根设备和根文件系统
来源: 互联网 发布时间:2017-03-08
本文导语: Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda2 16216016 5667* 9724600 37% / 如果/dev/hda2是根设备的话,要先得到/dev的内容,才能找到hda2。 可是根目录现在...
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda2 16216016 5667* 9724600 37% /
如果/dev/hda2是根设备的话,要先得到/dev的内容,才能找到hda2。 可是根目录现在都还没载入呢? 如何去找到根设备呢?
小弟初学linux内核,可能问题很弱智,大家见笑了,只是对linux内核感兴趣,自学而已。
/dev/hda2 16216016 5667* 9724600 37% /
如果/dev/hda2是根设备的话,要先得到/dev的内容,才能找到hda2。 可是根目录现在都还没载入呢? 如何去找到根设备呢?
小弟初学linux内核,可能问题很弱智,大家见笑了,只是对linux内核感兴趣,自学而已。
|
根文件系统的构建与分析(三)
转载请注明 http://blog.csdn.net/jianchi88 Author:Lotte 邮箱:baihaowen08@126.com
一、FHS(Filesystem Hierarchy Standard)标准介绍
当我们在linux下输入ls / 的时候,见到的目录结构以及这些目录下的内容都大同小异,这是因为所有的linux发行版在对根文件系统布局上都遵循FHS标准的建议规定。
该标准规定了根目录下各个子目录的名称及其存放的内容:
目录名 存放的内容
/bin 必备的用户命令,例如ls、cp等
/sbin 必备的系统管理员命令,例如ifconfig、reboot等
/dev 设备文件,例如mtdblock0、tty1等
/etc 系统配置文件,包括启动文件,例如inittab等
/lib 必要的链接库,例如C链接库、内核模块
/home 普通用户主目录
/root root用户主目录
/usr/bin 非必备的用户程序,例如find、du等
/usr/sbin 非必备的管理员程序,例如chroot、inetd等
/usr/lib 库文件
/var 守护程序和工具程序所存放的可变,例如日志文件
/proc 用来提供内核与进程信息的虚拟文件系统,由内核自动生成目录下的内容
/sys 用来提供内核与设备信息的虚拟文件系统,由内核自动生成目录下的内容
/mnt 文件系统挂接点,用于临时安装文件系统
/tmp 临时性的文件,重启后将自动清除
二、最基本的目录
在嵌入式系统中,可以对根目录下的目录进行裁剪,例如:
• 为多用户提供可扩展环境的所以目录都可以删除;如(/home,/mnt,/root)
• 根据引导加载情况,/boot目录可以删除。
• 系统与程序正常运行的必要目录一般保留
/bin,/dev,/etc,/proc,/sbin,/usr,/lib,/sys 一般保留。
Linux的根文件系统包括支持linux系统正常运行的基本内容,一般应包括以下几项内容:
� 基本的文件系统结构,如bin、dev、etc、sbin,lib、usr、proc。
� 基本程序运行所需的动态库。
� 基本的系统配置文件。
� 必要的设备文件支持。
� 基本的应用程序,如sh、ls、cp等(busybox提供)
构建根文件系统就是往相应的目录添加相应的文件。如:
� 在/dev添加设备文件(本篇介绍《根文件系统的构建与分析(三)之根文件目录及最简/dev目录》),
� 在/etc添加配置文件(请参考后续),
� 在/bin添加命令或者程序(根文件系统的构建与分析(四)之瑞士军刀busybox生成系统基本命令 ),
� 在/lib添加动态库等(请参考《根文件系统的构建与分析(二)之构建动态库》)。
三、最简化的/dev目录
在linux机器上,/dev目录常常可以看到几百个设备节点,但要手工创建它们吗?不需要,我们只需要创建几个设备节点。但是哪几个呢?构建/dev目录时,有两种方法:即静态构建和mdev设备管理工具构建。看了《根文件系统的构建与分析(一)之流程分析》这篇的都应该依稀记得最后提到init进程至少用到有两个,/dev/console和/dev/null。
下面我们创建根文件系统目录:
vim build_rootfs.sh
1 #!/bin/bash
2
3 echo "------ build file system directory -------"
4 mkdir /opt/build_rootfs
5 mkdir /opt/build_rootfs/{bin,dev,etc,usr,lib,sbin,proc,sys,tmp}
6 mkdir /opt/build_rootfs/usr/{bin,sbin,lib}
7
8 mknod /opt/build_rootfs/dev/console c 5 1
9 mknod /opt/build_rootfs/dev/null c 1 3
10
11 chmod 777 /opt/build_rootfs/dev/console
12 chmod 777 /opt/build_rootfs/dev/null
13
14 echo "------ end -------"
[root@localhost opt]# ls build_rootfs
bin dev etc lib proc sbin sys tmp usr
分享到:
上一篇:根文件系统的构建与分析(二)之构建动态库
转载请注明 http://blog.csdn.net/jianchi88 Author:Lotte 邮箱:baihaowen08@126.com
一、FHS(Filesystem Hierarchy Standard)标准介绍
当我们在linux下输入ls / 的时候,见到的目录结构以及这些目录下的内容都大同小异,这是因为所有的linux发行版在对根文件系统布局上都遵循FHS标准的建议规定。
该标准规定了根目录下各个子目录的名称及其存放的内容:
目录名 存放的内容
/bin 必备的用户命令,例如ls、cp等
/sbin 必备的系统管理员命令,例如ifconfig、reboot等
/dev 设备文件,例如mtdblock0、tty1等
/etc 系统配置文件,包括启动文件,例如inittab等
/lib 必要的链接库,例如C链接库、内核模块
/home 普通用户主目录
/root root用户主目录
/usr/bin 非必备的用户程序,例如find、du等
/usr/sbin 非必备的管理员程序,例如chroot、inetd等
/usr/lib 库文件
/var 守护程序和工具程序所存放的可变,例如日志文件
/proc 用来提供内核与进程信息的虚拟文件系统,由内核自动生成目录下的内容
/sys 用来提供内核与设备信息的虚拟文件系统,由内核自动生成目录下的内容
/mnt 文件系统挂接点,用于临时安装文件系统
/tmp 临时性的文件,重启后将自动清除
二、最基本的目录
在嵌入式系统中,可以对根目录下的目录进行裁剪,例如:
• 为多用户提供可扩展环境的所以目录都可以删除;如(/home,/mnt,/root)
• 根据引导加载情况,/boot目录可以删除。
• 系统与程序正常运行的必要目录一般保留
/bin,/dev,/etc,/proc,/sbin,/usr,/lib,/sys 一般保留。
Linux的根文件系统包括支持linux系统正常运行的基本内容,一般应包括以下几项内容:
� 基本的文件系统结构,如bin、dev、etc、sbin,lib、usr、proc。
� 基本程序运行所需的动态库。
� 基本的系统配置文件。
� 必要的设备文件支持。
� 基本的应用程序,如sh、ls、cp等(busybox提供)
构建根文件系统就是往相应的目录添加相应的文件。如:
� 在/dev添加设备文件(本篇介绍《根文件系统的构建与分析(三)之根文件目录及最简/dev目录》),
� 在/etc添加配置文件(请参考后续),
� 在/bin添加命令或者程序(根文件系统的构建与分析(四)之瑞士军刀busybox生成系统基本命令 ),
� 在/lib添加动态库等(请参考《根文件系统的构建与分析(二)之构建动态库》)。
三、最简化的/dev目录
在linux机器上,/dev目录常常可以看到几百个设备节点,但要手工创建它们吗?不需要,我们只需要创建几个设备节点。但是哪几个呢?构建/dev目录时,有两种方法:即静态构建和mdev设备管理工具构建。看了《根文件系统的构建与分析(一)之流程分析》这篇的都应该依稀记得最后提到init进程至少用到有两个,/dev/console和/dev/null。
下面我们创建根文件系统目录:
vim build_rootfs.sh
1 #!/bin/bash
2
3 echo "------ build file system directory -------"
4 mkdir /opt/build_rootfs
5 mkdir /opt/build_rootfs/{bin,dev,etc,usr,lib,sbin,proc,sys,tmp}
6 mkdir /opt/build_rootfs/usr/{bin,sbin,lib}
7
8 mknod /opt/build_rootfs/dev/console c 5 1
9 mknod /opt/build_rootfs/dev/null c 1 3
10
11 chmod 777 /opt/build_rootfs/dev/console
12 chmod 777 /opt/build_rootfs/dev/null
13
14 echo "------ end -------"
[root@localhost opt]# ls build_rootfs
bin dev etc lib proc sbin sys tmp usr
分享到:
上一篇:根文件系统的构建与分析(二)之构建动态库
|
root file system就是/的文件系統吧