`
izuoyan
  • 浏览: 8934639 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

linux文件系统详细讲解

阅读更多

原文出自 风雷的技术天地 [ http://www.forwind.cn]

linux文件系统详细讲解

很多使用Linux的用户都是从Windows转过来的,因此,对于他们来说,GNU/Linux上的文件系统组织形式和之前他们所熟悉的形式有很大的不 同,最开始上手的时候会感到非常迷茫,往常天天见的C盘D盘哪去了?怎么出来一个/目录?为什么所有其它目录和所有可用资源都位于这个/文件树下?什么是 根目录(这个和根用户有着本质不同,别搞混了)?问题接踵而来。本文试图以比较的方式,将你所熟悉的东西和现有Linux文件目录联系起来,给你一个大致 的概念,以后再继续在学习过程中深入理解。

基本问题 - 我的文件夹在哪里?

在安装了Linux之后,我们的硬盘会拥有一些不同的分区,而要使用它们,前提就是将他们作为目录树下的某个特定文件夹来挂载到系统上。例如,如果 我们希望有一个特定的分区来成为我们的home文件夹,就将这个分区挂载为/home即可,以此类推。当然,还有一些外部资源,例如软驱(似乎很少人用 了)、光驱或USB设备,它们在从前可能是直接挂载到根目录下,或者是/mnt目录,但按照现在的标准,它们都应该挂载到/media目录下,通常名字都 是/media/cdrom0,/media/fd0这种。

另外一个大家很关心的问题,就是被安装的应用程序的位置。习惯了Windows下安装程序的朋友,对 Program Files 文件夹都不会陌生,也知道大多数软件的相关资源,都会在这个文件夹下面找到。但是Linux有很大的不同,由于Linux包的高度模块化,导致很多程序都 不是完全独立的,而是在某些功能上对其它程序有一定依赖,因此,程序通常都不是安装在一个独立的文件夹下的。 相反,相关文件都被放到了目录树中预定义的位置里,这样其它程序需要用到时,才能轻易找到它们。这里所指的文件大多是指动态链接库或者可执行文件。

也就是说,在Linux下,我们告别了那著名的 Program Files ,要学会接受把一个软件安装到各个独立的文件夹下:二进制文件进入到bin目录,库文件进入到lib目录,文档进入到doc目录,等等。

好了,空谈了这么多理论,该搞点实际的了。接下来的表格,就说明了Windows下流行的文件系统在Linux下的对应位置:

MS Windows GNU/Linux 系统根目录 用户目录 配置文件 系统文件 安装程序 光驱 软驱
C:\ /
C:\Documents and settings\USER\My documents (XP) 或者 C:\Users\USER (Vista) /home/USER (np. /home/zdzisiek)
隐藏状态, 通过regedit命令来定制 /etc
C:\Windows 二进制: /bin, /sbin库: /lib
C:\Program Files 二进制: /usr/bin, /usr/local/bin, etc库: /usr/lib, /usr/local/lib, /usr/share/lib, etc文档: /usr/share/doc/, /usr/doc, etc
D:\ (或者其它盘符) /media/cdrom ( 或者以软链接形式存在的 /mnt/cdrom or /cdrom)
A:\ /media/fd0 (或者以软链接形式存在的 /mnt/fd0 or /floppy)

管理分区和驱动器(/etc/fstab)

我们在这里不详细介绍如何理解并修改 /etc/fstab 文件,只针对其进行相关介绍。

通常在/etc/fstab中,我们会告诉系统,哪些资源是我们希望使用的,比如哪些驱动器,哪些分区,哪些外部设备,哪些共享文件系统,等等。这些资源能够在系统启动时被自动挂载,当然你也可以手工挂载它们,只需要修改auto/nonauto选项即可。

所有Linux系统的资源,在使用它们之前,都要先挂载它们。同样的,如果是移动设备,不再需要使用它们时,应该卸载它们。在Windows下,这 些工作都是后台进行的,对你来说没有什么差别,Linux同样可以自动完成这些工作,只不过在Linux下,你可以拥有自己的选择。在很多人性化的发行版 本中,像光驱或者USB设备这些流行的设备都会被系统自动挂载,但是,我们仍然有必要理解挂载的原理,只有这样,一旦我们的系统遇到错误了,我们才能自己 手工进行操作。

关键的命令就是mount。比如这个命令

mount /media/cdrom

它会将光驱挂载到/media/cdrom目录下。同样的

umount /media/cdrom

将卸载这个设备。

除了挂载设备外,估计大家最为关心的另一个问题就是,如何挂载一个windows分区?这对于双系统用户来讲尤其重要。Windows环境下最常用 的两种文件系统就是FAT和NTFS了,前者较老,更基础,但是在Linux下有比较良好的支持,可读可写;后者较新,更高级,但是过去在Linux下使 用存在一些问题,比如不可写,虽然后来在高版本内核编译中能够打开,但是非常不稳定。当然,随着ntfs-3g的推出,这已经成为了历史。现在在很多发行 版中都自带ntfs-3g,例如我现在所用的feisty。当然,如果系统不自带,你也可以自行下载安装。之后通过gksu ntfs-config,可以在非常傻瓜化的界面中选择要支持的NTFS分区以及是否打开支持NTFS写入功能。

filesystem(点击缩放)

当然,在操作Windows分区之前,我们需要先挂载它们。我们通过fdisk来看看,Linux下是如何辨识它们的:

# fdisk -l /dev/hda

Disk /dev/hda: 60.0 GB, 60011642880 bytes
255 heads, 63 sectors/track, 7296 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 1 1211 9727326 7 HPFS/NTFS
/dev/hda2 1216 7296 48845632+ 5 Extended
/dev/hda5 * 1216 3040 14648224+ 83 Linux
/dev/hda6 3041 3679 5132736 b W95 FAT32
/dev/hda7 3680 4049 2971993+ 83 Linux
/dev/hda8 4050 4319 2168743+ 82 Linux swap
/dev/hda9 4320 7296 23908216+ 83 Linux

这里的输出显示了硬盘上所有的分区和设备信息。我们发现,磁盘上有两个Windows分区,分别是hda1 (NTFS)以及hda6 (FAT32)。如果想挂载它们,只需要使用以下命令即可:

# mount -t ntfs /dev/hda1 /mnt/C
# mount -t vfat /dev/hda1 /mnt/D

注意,你首先要在mnt目录下分别建立/mnt/C 和 /mnt/D两个子目录,才能进行挂载。挂载完成后,我们就有权限通过mnt目录来访问这两个分区了。但是每次想使用它们都要这样做,是不是觉得有点麻 烦?而且也只有root权限的用户才能访问它们。怎么办呢?此时,/etc/fstab文件就派上用场了。通过它,系统可以自动挂载你想挂载的资源,只需 要注意权限分配即可。和这两个Windows分区相关的挂载命令行如下:

/dev/hda1 /mnt/hda1 ntfs ro,umask=0222,nls=utf8 0 2
/dev/hda6 /mnt/hda6 vfat rw,uid=1000,gid=1000,iocharset=cp936,locale=utf8 0 2

其中,rw和ro选项分别表示可读可写和只读。uid和gid选项则表示只有uid=100的用户或者gid=1000的用户组的成员才能完全访问 相应分区。如果你想自行调整这些值,可以参考/etc/group文件。对于FAT32的分区hda6,由于其文件名中包括有unicode字符集,因此 我们还指定了特定的编码支持。通常,只要是分区或者设备中有非ASCII字符,就要指定对相关编码的支持。

关于option的的设定,不同的机器环境是不一样的,这个最好是根据个人机器情况制定,如果装了ntfs-3g但是没有安装上面提到的config,可能fstab的写法也不一样,因此有问题请直接留言,我会尽力解答。

附录:linux文件系统层次简单介绍

在linux系统中,所有的文件系统都包含在一个文件体系下。root文件夹是最顶层的目录,而它下面所有的子文件夹则组成了目录体系,这种组织结 构是和 windows等其它操作系统不一样的,它们为每一个设备和分区都单独提供目录体系。下面就是linux中root目录下各个子文件夹进行组织的介绍。更 详细的介绍,请参考这个网页

* /bin - 二进制应用程序,包括了绝大多数的执行文件。

* /boot - 启动所需要的文件,例如内核文件等。

* /dev - 你所有的设备。

* /etc - 针对你系统的所有配置文件。

* /etc/profile.d - 包括了在登入时通过/etc/profile运行的脚本。

* /etc/rc.d - 包括了很多在不同的运行级别下启动时运行的shell脚本。同时,通常还有用于启动网络的rc.inet1,用于加载模块化设备驱动的 rc.modules,能够被修改用以运行管理员所需要的命令的rc.local脚本(有点类似于DOS下的批处理文件)。

* /etc/rc.d/init.d - 包括了绝大多数基于rpm的系统中的初始化脚本。

* /etc/rc.d/rc*.d - “*’’ 表示是默认运行级别的数字,不同数字对应不同的目录。这些目录包含了用于启动和停止属于当前运行级别的文件。在基于rpm的系统中,这些文件是以它们自己原始脚本的符号链接形式存在的。

* /etc/skel - 包含各种例程或初始化界面的轮廓,通常还包含了很多子文件夹以及文件,它们都是某个新用户刚刚拥有自己的home目录后最先看到的东西。

* /etc/X11 - X Window的配置文件。

* /home - 不用说了吧。用户的本地文件夹。

* /lib - 系统库(有点类似于windows下的program files文件夹)。

* /lost+found - 丢失的文件从这里也许可以找到。

* /media - 诸如cdroms, 数码相机等设备的挂载点。
.
* /mnt - 用于挂载文件系统。

* /opt - 可选的用于安装程序的文件夹。

* /proc - 包含了各种进程信息的动态文件夹。

* /root -root用户的home目录。

* /sbin - 仅用于系统管理的程序。

* /sys - 包含系统信息。

* /tmp - 临时文件。

* /usr - 用户正常情况下使用的应用程序,包括了绝大多数应用程序。

* /var - 主要是登陆信息,数据库信息等等。

* /usr/local/bin - 用于存放你自己程序的地方,它们将不会被升级操作覆盖。

* /usr/share/doc - 文档

分享到:
评论

相关推荐

    linux文件系统

    主要讲解linux文件系统,主要讲解linux文件系统,主要讲解linux文件系统linux 文件系统。。。。。。。。。。。。。主要讲解linux文件系统,主要讲解linux文件系统,主要讲解linux文件系统,linux 文件系统。。。。。...

    新手学堂:Linux系统的文件结构详细讲解

    新手学堂:Linux系统的文件结构详细讲解新手学堂:Linux系统的文件结构详细讲解新手学堂:Linux系统的文件结构详细讲解新手学堂:Linux系统的文件结构详细讲解新手学堂:Linux系统的文件结构详细讲解

    linux文件系统结构分析

    主要讲解linux操作系统下文件系统的结构,以及进程如何去操作一个文件

    linux文件系统的构造

    本文介绍了一种嵌入式Linux文件系统的构造过程,较为详细地讲解了如何选择和配置所需的系统文件,以及如何设置文件系统的用户和属组来使系统达到一定的安全性能。该文件系统已成功应用于一款手持电脑产品中。

    linux文件系统详解

    linux文件系统,关于linux文件系统的详细讲解

    第四章:linux文件系统详解.ppt

    第四章:linux文件系统详解.ppt

    linux课件(详细讲解linux)

    Linux基础知识 Linux文件系统 网络及应用管理

    Linux文件系统的制作和分析初步

    对Linux文件系统制作详细讲解,希望对Linux文件系统学习者有一定帮助……

    linux操作系统文件管理

    linux操作系统文件系统学习教程,讲解非常细致,好资源大家共享哦~~

    linux根文件系统

    详细讲解linux的根文件系统,含图片解说

    Linux内核探秘 深入解析文件系统和设备驱动的架构与设计.pdf

    此书讲解linux操作系统的基础设施之一,文件系统,详细讲述了文件系统的挂载,设备驱动等,

    linux 文件系统管理

    本文详细讲解Linux系统的磁盘操作过程,其中包括LVM、RAID的管理以及相关常用命令的使用。

    Linux内核源码讲解

    Linux内核源码讲解_内核体系结构_进程调度_虚拟内存管理_虚拟文件系统

    LINUX操作系统(电子教案,参考答案)

    本章主要介绍了Linux中的文件系统维护与监视。其中包括交换空间、/proc的信息以及各种日志文件和进程记账等。 第12章:图形界面。本章主要介绍了X Window以及它的配置,并且介绍了在KDE环境下汉化的基本思想,用实例...

    深度探索Linux操作系统:系统构建和原理解析.王柏生(带详细书签).part1

    第3-4章,从零开始构建了一个具备用户字符界面的最小操作系统,详细讲解了构建的过程以及涉及的技术细节。第5章从理论的角度探讨了这一过程,从内核的加载、解压一直讨论到用户进程的加载,包括用户空间的动态链接器...

    如何制作嵌入式Linux文件系统

    如何制作嵌入式Linux文件系统,本资料详细讲解rootfs的制作过程! 文件系统是包括在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区的目录结构;一个可应用的磁盘设备可以包含一个或多个文件系统;如果您想进入...

    Linux服务器搭建实战详解 中文版

    同时本书还加入了常用的网络管理知识和基础的系统管理知识,包括linux操作系统的网络连通性测试、网络管理、软件基础管理、软件包高级管理、用户和进程管理、linux文件系统及磁盘管理,以及linux操作系统安全管理。

    Linux内核移植和根文件系统制作

    Linux内核移植和根文件系统制作 详细讲解了 linux内核的启动过程,bootloader的启动过程,已经根文件系统的制作,思路比较清晰

    Linux系统内存磁盘初始化技术详细解析

    linux内存初始化技术(initrd)用于支持两阶段的系统引导过程,是在系统启动...在许多嵌入式linux文件系统中,initrd是最终的根文件系统。这篇文章主要讲解了 linux2.6内核的initrd技术,包括在内核中的创建及使用。

    深度探索Linux操作系统:系统构建和原理解析.王柏生(带详细书签).part2.rar

    第3-4章,从零开始构建了一个具备用户字符界面的最小操作系统,详细讲解了构建的过程以及涉及的技术细节。第5章从理论的角度探讨了这一过程,从内核的加载、解压一直讨论到用户进程的加载,包括用户空间的动态链接器...

Global site tag (gtag.js) - Google Analytics