标签:
文件fstab包含了你的电脑上的存储设备及其文件系统的信息。它是决定一个硬盘(分区)被怎样使用或者说整合到整个系统中的唯一文件。
这个文件的全路径是/etc/fstab。它只是一个文本文件,你能够用你喜欢的编辑器打开它,但是必须是root用户才能编辑它。同时fsck、mount、umount的等命令都利用该程序。
具体来说:用fstab可以自动挂载各种文件系统格式的硬盘、分区、可移动设备和远程设备等。对于Windows与arch双操作系统用户,用fstab挂载FAT格式和NTFS格式的分区,可以在Linux中共享windows系统下的资源。
现在让我们看一下一个典型的fstab文件:
# <file system><dir><type><options><dump><pass> none /dev/pts devpts defaults 0 0 none /dev/shm tmpfs defaults 0 0 /dev/cdrom /media/cd iso9660 ro,user,noauto,unhide 0 0 /dev/dvd /media/dvd udf ro,user,noauto,unhide 0 0 /dev/fd0 /media/fl auto user,noauto 0 0 /dev/hda1 swap swap defaults 0 0 /dev/hda4 / ext3 defaults 0 1 /dev/hda3 /home xfs rw,suid,exec,auto,nouser,async 0 2 </pass></dump></options></type></dir></file>
让我们对fstab的用法进行一个详细的了解。一个典型的entry有下面的fields (fields用空格或tab分开):
<file system><dir><type><options><dump><pass></pass></dump></options></type></dir></file>
它能使你所挂载的设备在开机时自动加载、使中文显示不出现乱码、限制对挂载分区读写权限。它是与mount命令的用法相关的,要想得到一个完整的列表,参考mount manpage.
noatime 关闭atime特性,提高性能,这是一个很老的特性,放心关闭,还能减少loadcycle
defaults 使用默认设置。等于rw,suid,dev,exec,auto,nouser,async,具体含义看下面的解释。
auto 在启动或在终端中输入mount -a时自动挂载 noauto 设备(分区)只能手动挂载 The file system can be mounted only explicitly.
iocharset= 在=号后面加入你的本地编码,似乎在这个设备(分区)中做文件IO的时候就会自动做编 码的格式转换。 例如:你的某个分区是编码是utf8,而设备中文件的编码是gb2312,当是复制你设备中的文件到你的这 个分区时,它将自动做编码转换。 (不知道我的理解对不对,但是好像用下面的nls就可以实现转换。)
nls= 在=号后面加入你的本地编码,你的中文就不会出现乱码。
umask= 这是关于读写权限的,好像比下面的ro,rw选项更管用!!! 例如:umask=000或0222,使得挂载时option中有default,普通用户仍然能读写挂载设备中的东西。 请大家补充!!! ro 挂载为只读权限 rw 挂载为读写权限
exec 是一个默认设置项,它使在那个分区中的可执行的二进制文件能够执行。 noexec 二进制文件不允许执行。千万不要在你的root分区中用这个选项!!!
sync 所有的I/O将以同步方式进行 async 所有的I/O将以非同步方式进行
user 允许任何用户挂载设备。 Implies noexec,nosuid,nodev unless overridden. nouser 只允许root用户挂载。这是默认设置。
suid Permit the operation of suid, and sgid bits. They are mostly used to allow users on a computer system to execute binary executables with temporarily elevated privileges in order to perform a specific task. nosuid Blocks the operation of suid, and sgid bits.
注意: 除了直接用设备(分区)名字,你也可以用UUID或卷名。格式 LABEL=
1.先在用fdisk -l(可能需要在root权限下)得到硬盘信息表,例如:
# Device Boot Start End Blocks Id System /dev/sda1 * 1 2397 19253871 b W95 FAT32 /dev/sda2 2398 3144 6000277+ 83 Linux /dev/sda3 3145 9729 52894012+ 5 Extended /dev/sda5 3145 3152 64228+ 83 Linux /dev/sda6 3153 3276 995998+ 82 Linux swap / Solaris /dev/sda7 3277 7340 32644048+ 83 Linux /dev/sda8 7341 9729 19189611 7 HPFS/NTFS
从上面知道,这台电脑上只有一个硬盘,其中分区sda1和sda8为NTFS格式,sda1为可以启动的,因而可能为window的系统所在盘。下面把系统盘以只读方式持载上去,非系统盘sda8以读写方式挂载上去(不能挂载在"/"及其以下的任何目录)。
2.用你喜欢的编辑器在终端中打开/etc/fstab,例如:
nano /etc/fstab
在文件末尾加入:
/dev/sda1 /mnt/WindowsC vfat defaults,codepage=936,iocharset=cp936,umask=0222 0 0 /dev/sda8 /mnt/WindowsD ntfs defaults,iocharset=utf8,umask=000,nls=utf8 0 0
保存,退出。
警告:使用936的codepage挂在fat32分区可能会造成linux下识别中文正常但是到windows下反而出现乱码,推荐替换成utf8,但是dmesg提示警告,没有关系,n多人用了这么长时间都没有问题
/dev/sda1 /mnt/WindowsC vfat user,utf8,umask=000 0 0
3.在终端中输入
mount -a
你就应该能在/mnt/WindowsC下找到你的系统分区sda1内容,在/home/username/WindowsD中找到sda8的内容(其中username指用户名)。
/etc/mtab 何 /etc/fstab的关系
这个文件最好不要动它,是给你看的,不是给你改的
fstab 文件想必大家都很熟悉,记录了计算机上硬盘分区的相关信息,启动 Linux 的时候,检查分区的 fsck 命令,和挂载分区的 mount 命令,都需要 fstab 中的信息,来正确的检查和挂载硬盘。
我们可以看一下 mtab 文件的内容 (这是我电脑上的 mtab 文件内容):
# cat /etc/mtab
/dev/sda4 / reiserfs rw,noatime 0 0
proc /proc proc rw,nosuid,nodev,noexec 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec 0 0
udev /dev tmpfs rw,nosuid 0 0
devpts /dev/pts devpts rw,nosuid,noexec 0 0
/dev/sda2 /boot ext2 rw,noatime 0 0
shm /dev/shm tmpfs rw,noexec,nosuid,nodev 0 0
/dev/sda1 /mnt/winxp ntfs rw,utf8,umask=0 0 0
usbfs /proc/bus/usb usbfs rw,noexec,nosuid,devmode=0664,devgid=85 0 0
/dev/sdb5 /media/SWAP vfat rw,nosuid,nodev,shortname=lower,uid=1000 0 0
乍看上去,和 fstab 文件的结构和内容基本相同,但是不同的是,mtab 文件记录的是,当前已挂载的分区信息。
每当 mount 挂载分区、umount 卸载分区,都会动态更新 mtab,mtab 总是保持着当前系统中已挂载的分区信息,fdisk、df 这类程序,必须要读取 mtab 文件,才能获得当前系统中的分区挂载情况。
标签:
原文地址:http://www.cnblogs.com/mascotxi/p/4771175.html