加挂Linux操作系统中文件系统的小结

学习操作系统时我们都了解到文件系统是操作系统的重要组成部分之一 。文件系统有很多种类型 , 比windows的fat、fat32;Linux的ext、ext2或ext3;FreeBSD的ufs等等 。在使用Linux的过程 , 也常常Linux操作系统使用虚拟文件系统VFS , 通过VFS可以直接存取其它已被内核支持的各种文件系统 , 用起来就像是在普通的 Linux的ext系列文件系统一样 。早期的Linux内置支持的文件系统不多 , 自 kernel 2.0.x 起并支持到 VFAT , 以后逐 渐增加 , 到目前可以说 决大多数的文件系统都有了支持 。只是有一些如NTFS需要重新编译内核才能支持 。
Linux在启动过程中 , 会按照/etc/fstab中的设置 , 把各个分区上的文件系统加挂到对应到加载点上去 。Linux至少需要两个分区才能启动:一个是根分区/ , 另一个是交换分区 , 如果在启动时根分区加载失败 , Linux就不能完成启动 。如果交换分区加载失败 , Linux就不能仍能启动 , 在内存不够的情况下速度就会受很大的影响 。根分区的文件系统类型通常是ext、ext2或ext3 , 但也可以是其它的一些文件系统 。
除了加载了Linux所必需的文件系统外 , Linux的用户还经常需要使用其它的各种文件系统 , 特别是在一台机器上同时安装多个操作系统的时候 。比如笔者的机器上同时安装了Linux和Windows2000 , 其中Windows的C盘采用了NTFS文件系统、D盘采用了FAT32文件系统 。而当我在Linux上工作的时候 , 常常需要访问Windows的C盘和D盘的内容 , 甚至是网络上的共享目录 , Linux下加挂一个文件系统使用的是mount命令 , 用man mount命令可以得到命令参数的详细解释 。下面就来介绍一下在几种情况下以命令行方式加挂文件系统的具体方法:
1.加挂FAT32文件系统
最简单的用法
mount /dev/hda6 /mnt/d
/dev/hda6是笔者Windows的D盘 , /mnt/d是目录加挂点 。Linux会识别到/dev/hda6分区的文件系统类型是什么 , 然后加挂的 。当然也可以指定分区的文件系统类型 , 命令如下:
mount -t vfat /dev/hda6 /mnt/d
在实际中操作中 , 直接加挂一个windows的分区 , 中文的文件名和目录名会出现乱码 , 为了避免这种情况可以指定字符集 , 命令如下:

mount /dev/hda6 /mnt/d -o codepage=936,iocharset=cp936
mount -t vfat /dev/hda6 /mnt/d -o codepage=936,iocharset=cp936
注意:cp936是指简体中文 , cp950是指繁体中文 。
2.加挂NTFS文件系统
在目前多数的Linux版本上 , 需要重编译Linux核心才能 , 加挂NTFS分区(编译方法请参阅其它文章) 。核心支持NTFS后 , 可以用以下命令加挂:
mount -t ntfs /dev/hda2 /mnt/c
同样对于中文的文件名和目录名会出现乱码的问题可以指定字符集 , 不过和加挂vfat分区不同 , 实际中用以下命令是可行的:

mount -t ntfs -o iocharset=cp936 /dev/hda2 /mnt/c -r
mount -t ntfs -o iocharset=cp936,rw /dev/hda2 /mnt/c
3.加挂U盘上的文件系统
现在使用U盘的人越来越多了 , 其实在Linux下使用U盘也非常简单 , Linux对USB设备有很好的支持 , 在你插入U盘后 , U盘被识别为一个SCSI盘 , 通常您用以下命令就能加挂U盘上的文件系统
mount /dev/sda1 /usb同样对于中文的文件名和目录名会出现乱码的问题可以指定字符集 , 命令类似于上面对FAT32介绍的mount /dev/sda1 /usb -o pagecode=936,iocharset=cp936
4.加挂Linux系统通过samba共享出来的目录
利用samba共享出来的目录其实很难说其原来是哪种文件系统 , 不过这一点不重要 , 只要它对用户是透明的就好啦 。加挂时 , 我们指定类型为smbfs , 在加挂samba共享的分区时 , 也会出现中文的文件名和目录名乱码情况 , 可以用以下命令加挂:

推荐阅读