发信人: 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
|
|