一些程序使用 /etc/fstab
文件,以确定哪些文件系统是默认挂载的,和它们应该按什么顺序挂载,以及哪些文件系统在挂载前必须被检查
(确定是否有完整性错误)。参考以下命令,创建一个新的文件系统表:
cat > /etc/fstab << "EOF"
# Begin /etc/fstab
# 文件系统 挂载点 类型 选项 转储 检查
# 顺序
/dev/<xxx>
/ <fff>
defaults 1 1
/dev/<yyy>
swap swap pri=1 0 0
proc /proc proc nosuid,noexec,nodev 0 0
sysfs /sys sysfs nosuid,noexec,nodev 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /run tmpfs defaults 0 0
devtmpfs /dev devtmpfs mode=0755,nosuid 0 0
tmpfs /dev/shm tmpfs nosuid,nodev 0 0
cgroup2 /sys/fs/cgroup cgroup2 nosuid,noexec,nodev 0 0
# End /etc/fstab
EOF
将 <xxx>
、<yyy>
和 <fff>
替换为适用于您的系统的值,例如
sda2
、sda5
和 ext4
。参阅 man 5 fstab 了解该文件中 6 个域的详细信息。
在挂载来源于 MS-DOS 或 Windows 的文件系统 (如 vfat、ntfs、smbfs、cifs、iso9660、udf)
时,需要一个特殊的挂载选项 —— utf8,才能正常解析文件名中的非 ASCII 字符。对于非 UTF-8 locale,选项
iocharset
的值应该和您的 locale
字符集设定一致,但改写成内核可以识别的写法。该选项能够正常工作的前提是,将相关的字符集定义 (在内核配置选项的 File Systems
-> Native Language Support 子菜单中) 编译到内核中,或构建为内核模块。然而,如果使用了 UTF-8
locale,对应的 iocharset=utf8
会导致文件系统变得大小写敏感。为了避免这个问题,在使用 UTF-8 locale 时,需要用特殊选项 utf8
代替 iocharset=utf8
。另外,vfat 和 smbfs 文件系统还需要“codepage”选项,它应该被设定为您的语言在
MS-DOS 下的代码页编号。例如,为了挂载一个 USB 闪存盘,一个 ru_RU.KOI8-R 用户应该在 /etc/fstab
中对应于闪存盘的行添加下列挂载选项:
noauto,user,quiet,showexec,codepage=866,iocharset=koi8r
相应的,ru_RU.UTF-8 用户应该使用下列选项:
noauto,user,quiet,showexec,codepage=866,utf8
注意此时使用的 iocharset
默认为 iso8859-1
(这保证文件系统是大小写不敏感的),而 utf8
选项告诉内核使用 UTF-8 编码转换文件名,这样它们就能在 UTF-8 locale
中被正确解析。
也可以在内核配置中,为一些文件系统指定默认 codepage 和 iocharset 选项值。相关的配置参数名为“Default NLS Option”
(CONFIG_NLS_DEFAULT
),“Default Remote NLS Option”
(CONFIG_SMB_NLS_DEFAULT
),“Default codepage for FAT”
(CONFIG_FAT_DEFAULT_CODEPAGE
),以及
“Default iocharset for
FAT” (CONFIG_FAT_DEFAULT_IOCHARSET
)。无法在编译内核时为 ntfs
文件系统指定这些默认值。
在某些硬盘上,通过将 barrier=1
挂载选项加入 /etc/fstab
,可以使得 ext3
文件系统在发生电源故障时更可靠。为了检查磁盘驱动器是否支持该选项,在可用的磁盘驱动器上运行
hdparm。例如:
hdparm -I /dev/sda | grep NCQ
如果输出内容不为空,说明该选项可用。
注意:基于逻辑卷管理 (LVM) 的分区不能使用 barrier
选项。