精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● FreeBSD>>《FreeBSD使用大全》第二版>>4.3.3 设置fstab文件

主题:4.3.3 设置fstab文件
发信人: sungang(笨刚)
整理人: sungang(2003-09-16 12:20:32), 站内信件
4.3.3 设置fstab文件

在系统启动时,系统将自动安装上必需的文件系统。而管理员所要做的是告诉FreeBSD应该安装那个文件系统、安装到那个目录上和有关的安装参数选项。所有的这些文件系统相关的信息都需要写入文件/etc/fstab中。

在安装FreeBSD时,这个文件已经由sysinstall根据安装情况重写,具有正确的数据了,此后所需要做的只是根据系统硬件的变化,对这个文件进行修改,例如增加其他的文件系统。

# Device                Mountpoint      FStype  Options         Dump    Pass#

/dev/ad0s3b             none            swap    sw              0       0

/dev/ad0s3a             /               ufs     rw              1       1

/dev/ad0s3f             /usr            ufs     rw              2       2

/dev/ad0s3e             /var            ufs     rw              2       2

proc                    /proc           procfs  rw              0       0

/dev/acd0c              /cdrom          cd9660  ro,noauto       0       0

/dev/ad0s1              /dos            msdos   rw,noauto       0       1

这个文件中的每一行为一个定义,为一种文件系统或交换设备定义对应的设备文件及安装选项。其中根文件系统具备一定的特殊之处,因为这个文件/etc/fstab本身以及FreeBSD的内核文件,其实是在根文件系统中的,因此系统必须首先安装了根文件系统,才能正常访问这些文件。事实上FreeBSD内核在启动时根据启动的硬盘,先搜索根文件系统,在启动时先以只读方式安装根文件系统,并读取根文件系统中相关文件的内容,然后再根据这个文件内容重新装载各个文件系统。因此,根文件系统通常的标签为a,如ad0s3a。

这个文件的第一列为设备文件名字,或者NFS使用的远程文件系统的名字。第二列为文件系统的安装位置,第三列为文件系统的类型,其中UFS是FreeBSD使用的标准本地文件系统的类型,procfs是FreeBSD用于管理进程的进程文件系统。第四列为安装的选项,rw表示该文件系统能进行读写操作,ro表示该文件系统是只读的,sw用于交换分区,noauto表示启动时并不立即安装这个文件系统,而是由管理员在以后手工安装。第五列和第六列的数字是系统程序dump和fsck程序使用的标志,通常不需要改变,这个标志对根文件系统都是1,而对其他UFS类型的文件系统都是2,其他类型的文件系统为0。

注意,由于fstab文件非常重要,如果这个文件有错误,就有可能造成系统不能正常启动,因此向fstab添加数据应非常小心。不是必须安装的文件系统就不应该进行自动装载,例如上面将CDROM对应的行参数设置为noauto,表示这个文件系统不是启动时自动装载的系统,否则如果CDROM对应的行没有noauto,那么启动时就需要光盘,如果不能安装光盘,则启动就会失败。

在使用了fstab文件之后,mount命令的写法就可以简化了。mount命令将查看fstab文件中的内容以进行匹配,来选定正确的参数。例如,使用下列命令均可以安装上CD-Rom。

# mount /dev/acd0c /cdrom

# mount /dev/acd0c

# mount /cdrom

在安装了文件系统之后,可以使用不加参数的mount命令或df命令查看当前已安装的文件系统信息。

# mount

/dev/ad0s3a on / (local, writes: sync 117 async 796)

/dev/ad0s3f on /usr (local, writes: sync 1189 async 4948)

/dev/ad0s3e on /var (local, writes: sync 362 async 1354)

procfs on /proc (local)

/dev/ad1s2e on /disk2 (local, writes: sync 4 async 41)

4.3.4 软盘操作
FreeBSD支持软盘操作,虽然当前计算机上软盘的重要性已经大大减小,但在少量传送数据时,软盘仍不失为一种有效的工具。在软盘上可以使用UFS文件系统或msdos文件系统,出于兼容性的考虑,使用msdos格式更为简单。

在软盘上建立UFS文件系统,便需要使用fdformat作软盘的低级格式化,使用disklabel建立文件系统的标签,然后使用newfs初始化文件系统,最后才使用mount将它安装到目录树上:

# fdformat /dev/rfd0

Format 1440K floppy `/dev/rfd0'? (y/n): y

Processing VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV done.

# disklabel -r -w fd0 fd1440

# newfs /dev/rfd0

Warning: Block size restricts cylinders per group to 6.

Warning: 1216 sector(s) in last cylinder unallocated

/dev/rfd0:      2880 sectors in 1 cylinders of 1 tracks, 4096 sectors

        1.4MB in 1 cyl groups (6 c/g, 12.00MB/g, 736 i/g)

super-block backups (for fsck -b #) at:

 32,

# mount /dev/fd0 /A

当操作完毕之后必须使用umount /A卸载软盘。

也可以直接安装和卸载已有的msdos格式的软盘,并进行访问。

# mount -t msdos /dev/fd0 /A

# ls /A

# umount /A

使用mtools工具能在软盘上建立msdos文件系统,并能够进行访问。Mtools工具属于非系统的工具,需要额外安装。此时软盘设备并没有安装到目录树上,mtools是使用raw方式对软盘进行访问的。mtools的命令与对应的DOS命令用法相同,只是每个命令以m开头,并且都是小写形式。如mdir对应DOS下的DIR命令,mcd对应DOS下的CD命令,mcopy对应DOS下的COPY,并且能在FreeBSD的文件系统与DOS的软盘之间传递文件,等等。

# mformat A:

# mdir A:

# mcopy hello.c  A:

但是DOS的文本格式和Unix是不同的,Unix下只使用换行字符来表示换行,而DOS下同时使用换行和回车字符。因此如果将DOS的文件复制到Unix下时,有时候会造成一些小麻烦。如果在vi下打开这种文件,可能会看到这样结果:

main(){ ^M

printf(“Hello! World!”); ^M

}^M

^M代表换行字符,在mcopy中加上-t参数,就可以消除在不同文件系统之间复制文件时的这些问题。如果对已有的文件去除换行字符,可以直接在vi中使用替换将这个特殊字符消除(使用^V^M来表示这个特殊字符,即在按下Ctrl键的同时输入V和M),或者使用tr命令:

$ tr -d “\015” < hello.c > hello.unix.c

[关闭][返回]