8.2. 创建 /etc/fstab 文件

/etc/fstab 文件的作用是让其它程序确定存储设备的默认挂载点、挂载参数和检查信息(例如完整性检测)。仿照以下格式新建一个 file system table(fstab)文件:

cat > /etc/fstab << "EOF"
# Begin /etc/fstab

# 文件系统  挂载点  文件类型     挂载选项             dump  fsck
#                                                              order

/dev/<xxx>     /            <fff>    defaults            1     1
/dev/<yyy>     swap         swap     pri=1               0     0

# End /etc/fstab
EOF

其中,<xxx><yyy><fff> 请使用适当的值替换。例如 sda2sda5ext4。关于文件中六个字段的含义,请查看 man 5 fstab(译者注:fsck 列的数值来决定需要检查的文件系统的检查顺序。允许的数字是0, 1, 和2。根目录应当获得最高的优先权 1, 其它所有需要被检查的设备设置为 2。0 表示设备不会被 fsck 所检查。)。

基于 MS-DOS 或者是来源于 Windows 的文件系统(例如:vfat,ntfs,smbfs,cifs,iso9660,udf)需要在挂载选项中添加 iocharset,才能让非 ASCII 字符的文件名正确解析。此选项的值应该与语言区域设置的值相同,以便让内核能正确处理。此选项在相关字符集定义已为内核内建或是编译为模块时生效(在文件系统 -> 本地语言支持中查看)。此外,vfat 和 smbfs 还需启用 codepage 支持。例如,想要挂载 USB 闪存设备,zh-CN.GBK 用户需要在 /etc/fstab 中添加以下的挂载选项:

noauto,user,quiet,showexec,iocharset=gbk,codepage=936

对于 zh_CN.UTF-8 用户的对应选项是:

noauto,user,quiet,showexec,iocharset=utf8,codepage=936
[Note]

注意

在后一种情况下,内核将会输出以下的信息:

FAT: utf8 is not a recommended IO charset for FAT filesystems,
    filesystem will be case sensitive! (FAT: 对于 FAT 文件系统而言并不推荐将 utf8 作为 IO 字符集参数,需要小心文件系统出错!)

此提示信息其实是错误的,忽略它就好,因为在 UTF-8 模式下,iocharset 的任何其它选项都会导致错误的文件名显示。

此外,还有可能在内核的配置过程中就指定一些文件系统的默认代码页和 iocharset 值。相关参数有 默认 NLS 选项 (CONFIG_NLS_DEFAULT)默认远程 NLS 选项 (CONFIG_SMB_NLS_DEFAULT), FAT 默认代码页 (CONFIG_FAT_DEFAULT_CODEPAGE),和 FAT 默认 IO 字符集 (CONFIG_FAT_DEFAULT_IOCHARSET)。不过,无法在内核编译阶段指定 ntfs 文件系统的设置。

另外,一些硬盘类型在遇到电源故障时,假如在 /etc/fstab 中使用 barrier=1 这个挂载选项,则会让 ext3 文件系统的数据更加安全。如需检查磁盘是否支持此选项,请运行 hdparm。例如:

hdparm -I /dev/sda | grep NCQ

如果有输出内容,则代表选项可用。

注意:基于 Logical Volume Management (LVM) 的分区不可使用 barrier 选项。