Main

November 27, 2005

FreeBSD的硬盘分隔策略

在开始安装系统以前, 必须决定要使用多大的硬盘空间来安装 FreeBSD, 而且必须决定 partition 应该如何分割. 因为一旦你安装完系统以后, 再想改变一个 partition 的大小就必须把资料备份出来再重新分区、格式化(format)。

一般情况下, 你必须准备一个 primary partition 给 FreeBSD, *BSD 传统上只能装在 primary 上。FreeBSD 经过修改可以使用逻辑分区(logical partition), 但开机区还是必须是 primary。

在FreeBSD中,分区的概念与DOS/WIN系统略有不同。FreeBSD将一块 硬盘分成最多四个slice(片段),每一个slice上又可以分成最多8个partition(分区)。也 就是说FreeBSD将DOS/Windows里的一个分区看作一个slice。在以后的叙述中,将采用FreeBSD 的概念,即slice和partition的硬盘分区术语。

FreeBSD最多可以将一个slice分成8个partition,分别称之为a,b,c,d,e,f,g,h, 传统上a,b,c,d分区有特殊的意义,a表示root分区,b表示swap分区,c表示整个slice,d表示整个硬盘 从FreeBSD-2.0.5 Release开始,FreeBSD发展了新的slice概念,只有c内定位整个slice,其他都可 自由使用,但一般还是遵循传统观念,即a:root,b:swap,efgh:其他。

下表展示了一个典型的硬盘分区情况。

wd0s1(Dos Pri-C:)

wd0s2(FreeBSD) wd0s3(Dos Extend)
wd0s2a(root) wd0s2b(swap) wd0s2e(/usr) wd0s5(D:) wd0s6(E:)

Continue reading "FreeBSD的硬盘分隔策略" »

FreeBSD上的软件安装方法

安装软件有很多种方式,下面是几种常用的方式:
1. 当然使用编译好的二进制文件安装是最简单的了。取得FreeBSD的Packages,使用pkg_add就可以将软件安装好了,安装之前可以使用pkg_info来读取package的说明。FreeBSD的packages可以从一下地方取得:
ftp://ftp.freebsd.org/pub/FreeBSD/2.2.8-STABLE
ftp://ftp.freebsd.org/pub/FreeBSD/2.2.8-STABLE
ftp://ftp.freebsd.org/pub/FreeBSD/3.1-RELEASE
ftp://ftp.freebsd.org/pub/FreeBSD/3.1-STABLE
2. 利用方便的ports,如果你的计算机有网络连接的话,直接到/usr/ports下找所需安装的软件,或者到下面站点将该软件的port的整个目录抓下来。 ftp://ftp.freebsd.org/pub/FreeBSD/ports-current/。 你也可以到http://www.freebsd.org/ports/index.html看看所有FreeBSD的ports,可从那里得到软件port的详细信息。
例如:要安装播放mp3歌曲的软件mpg123。就要先抓回
ftp://ftp.freebsd.org/pub/freeBSD/ports-current/audio/mpg123(整个目录)。
放到/home/user/mpg123/下,然后make,make install。
如果你在安装系统时安装了整个ports的目录,那么就可以直接到/usr/ports/audio/mpg123/下,make,make install。make程序首先查找当前系统上是否存在需要的安装文件,如果没有的话,将根据Makefile中的设定到网络中下载需要的安装文件,而后进行编译、安装过程。 如果你的计算机没有网络连接,你就需要看一下要安装软件的Makefile文件,里面包含类似下面的内容:
MASTER_SITES= http://www-ti.informatik.uni-tuebingen.de/~hippm/mpg123/ \
ftp://ftp.tu-clausthal.de/pub/unix/audio/mpg123/ \
http://ftp.tu-clausthal.de/pub/unix/audio/mpg123/
这里是指示软件源码所在的位置。你就需要到那里去把软件源码抓下来,放置到/usr/ports/distfiles/目录下再进行编译、安装。
3. 如果你知道有一种软件是支持FreeBSD的,并且有它的源码,那么就拿来编译试试看喽,看能不能编译通过,不能的话,只好到处问问了。

FreeBSD完全安装手册——开始安装

开始安装
前面已经做好了准备,下面开始安装神秘的FreeBSD系统。以CD-ROM安装为例,在涉及到使用其它安装媒体时将进行补充说明。
启动安装内核程序
将FreeBSD的安装CD-ROM放入光盘驱动器,重新启动计算机,确认BIOS设定从光盘启动,一切正常的话,将装入FreeBSD的安装内核程序(如果你的系统不支持从CD-ROM启动,可以使用软盘启动方式)。启动起始阶段可以看到类似下面的信息:
/kernel text=0x14c395 data=0x180d8+0x22ec4 syms=[0x4+0x1e3c0+0x4+0x210f8]
Uncompressing kernel...done
Booting the kernel
Copyright © 1982, 1986, 1989, 1991, 1993
The Regents of the University of California.
All rights reserved.
如果使用软盘启动安装的话,先插入boot软盘,然后系统会提示插入mfsroot软盘,提示信息如下:
Please insert MFS root floppy and press enter:
按照要求插入软盘,按Enter键系统即继续引导。系统进行一系列的检测后出现UserConfig菜单:
Skip kernel configuration and continue with installation
Start kernel configuration in full-screen visual mode
Start kernel configuration in CLI mode
在这里可以进入内核配置模式,对内核进行调整以配合系统硬件。可以不进行任何调整完全采用默认内核的配置方式,或者采用全屏可视化方式进行调整或 CLI模式进行调整。在这里进行内核调整要求用户对系统所拥有的硬件有较全面的了解,如系统的硬盘接口模式,网卡等接口卡的类型和Port口、IRQ、 DMA的设置等。如果要采用网络安装,必须确定网卡能够被系统内核识别。

Continue reading "FreeBSD完全安装手册——开始安装" »

FreeBSD完全安装手册——硬盘分区

硬盘分区
那么应该将FreeBSD装在硬盘的什么位置呢?下面看看硬盘。熟悉DOS/Windows系统的用户都知道,DOS/Windows将硬盘分成主分区和扩展分区,在扩展分区上再建立逻辑分区,并给主分区和逻辑分区分配相应的盘符:C、D等。那么FreeBSD是如何处理硬盘分区的呢?
在FreeBSD中,分区的概念略有不同。FreeBSD将硬盘分成最多四个slice(片段),每一个slice上又可以分成最多8个 partition(分区)。也就是说FreeBSD将DOS/Windows里的一个分区看作一个slice。在以后的叙述中,将采用FreeBSD的概念,即slice和partition的硬盘分区术语。
FreeBSD(包括其他Unix类操作系统)可以将硬磁盘当作大量连续的数据块进行处理,这样并没有文件系统的概念,很像访问磁带机。这种访问方式称作raw访问,这样的设备称作raw device或character device。但是用户希望使用文件访问的方式,这样不用关心文件究竟存储在硬盘的什么地方,只要能够打开文件进行数据操作就可以了。采用这种访问方式需要许多其他的处理工作,将这时使用的磁盘称作block device。可以通过ls -l命令,从列出的权限属性的头一个字符区分character device和block device。"c"表示character device,而"b"表示block device。例如:

$ ls -l /dev/rwd0s1a /dev/wd0s1a
crw-r----- 1 root operator 3, 0x00010002 Oct 16 23:38 /dev/rwd0
brw-r----- 1 root operator 0, 0x00010002 Oct 16 23:38 /dev/wd0
下面介绍FreeBSD对硬盘分区的命名规则。
与其他设备一样,硬盘分区设备文件存储于/dev目录下。如果是raw device设备名的起始字符是:"r",否则不会使用这个起始字符。接下来是设备名,IDE硬盘是"wd",SCSI硬盘是"da",软盘是"fd"。接下来是一个数字,表示是第几个硬盘,如第一个IDE口上的主用硬盘(Primary IDE Master)的名字就是:/dev/rwd0和/dev/wd0,从用硬盘(Primary IDE Slave)的名字就是:/dev/rwd1和/dev/wd1,以此类推。接下来是分区信息,为表示slice在前面的名字基础上加字符"s"和数字 "1"到"4"来表示一个硬盘上的四个slice。BSD通过在slice名后面附加字符"a"到"h"来表示分区。这样可以得到如下一些设备名(以 Primary IDE上的Master硬盘为例):
/dev/rwd0, /dev/rwd0s1,/dev/rwd0s2,/dev/rwd0s3,/dev/rwd0s3,
/dev/rwd0s1a,/dev/rwd0s1b,/dev/rwd0s1c,/dev/rwd0s1d,/dev/rwd0s1e,
/dev/rwd0s1f,/dev/rwd0s1g,/dev/rwd0s1h,/dev/rwd0a,/dev/rwd0b,
/dev/rwd0c,/dev/rwd0d,/dev/rwd0e,/dev/rwd0f,
/dev/rwd0g,/dev/rwd0h和/dev/wd0, /dev/wd0s1,/dev/wd0s2,/dev/wd0s3,
/dev/wd0s4,/dev/wd0s1a,/dev/wd0s1b,/dev/wd0s1c,/dev/wd0s1d,
/dev/wd0s1e,/dev/wd0s1f,/dev/wd0s1g,/dev/wd0s1h,/dev/wd0a,
/dev/wd0b,/dev/wd0c,/dev/wd0d,/dev/wd0e,/dev/wd0f,/dev/wd0g,/dev/wd0h等。
举例来讲,/dev/rwd0s1a和/dev/wd0s1a分别表示第一个IDE接口上的Master模式硬盘上的第一个slice上的第一个分区的character device和block device,这个分区(即"a"分区通常是根目录 / ),而/dev/rwd0s1b和/dev/wd0s1b表示第一个slice上的第二个分区,这个分区通常用作swap(交换分区)。 /dev/rwd0s1c和/dev/wd0s1c则有特殊的含义,表示第一个slice这整个slice。下面是我自己的硬盘参数,用fdisk命令的输出结果:
******* Working on device /dev/rwd0 *******
parameters extracted from in-core disklabel are:
cylinders=525 heads=255 sectors/track=63 (16065 blks/cyl)

parameters to be used for BIOS calculations are:
cylinders=525 heads=255 sectors/track=63 (16065 blks/cyl)

Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 1 is:
sysid 6,(Primary 'big' DOS (> 32MB))
start 63, size 3084417 (1506 Meg), flag 80 (active)
beg: cyl 0/ sector 1/ head 1;
end: cyl 191/ sector 63/ head 254
The data for partition 2 is:
sysid 5,(Extended DOS)
start 3084480, size 3084480 (1506 Meg), flag 0
beg: cyl 192/ sector 1/ head 0;
end: cyl 383/ sector 63/ head 254
The data for partition 3 is:
sysid 165,(FreeBSD/NetBSD/386BSD)
start 6168960, size 2265165 (1106 Meg), flag 0
beg: cyl 384/ sector 1/ head 0;
end: cyl 524/ sector 63/ head 254
The data for partition 4 is:

用disklabel /dev/wd0s3命令可以看出FreeBSD占用的slice 3的分区情况,如下:
# /dev/wd0s3:
type: ESDI
disk: wd0s3
label:
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 141
sectors/unit: 2265165
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # milliseconds
track-to-track seek: 0 # milliseconds
drivedata: 0

8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 307200 0 4.2BSD 1024 8192 16 # (Cyl. 0 - 19*)
b: 131072 307200 swap # (Cyl. 19*- 27*)
c: 2265165 0 unused 0 0 # (Cyl. 0 - 140)
e: 307200 438272 4.2BSD 1024 8192 16 # (Cyl. 27*- 46*)
f: 1519693 745472 4.2BSD 1024 8192 16 # (Cyl. 46*- 140*)
由以上可以清楚的看出硬盘的分区情况。对硬盘分区的详细了解有助于在安装系统时正确的选择安装位置,以免错误的删除其他操作系统占用的分区,造成不必要的损失。

FreeBSD完全安装手册——准备安装软盘

准备启动安装软盘
如果不能从CD-ROM启动,那么就需要准备两张3.5英寸的软盘:Kernel Disk和MFS Root Disk来启动安装程序。这两张软盘的映像文件存储在FreeBSD CD-ROM Disk-1上,分别是floppise/kern.flp和floppies/mfsroot.flp。这两个文件同样可以在发布FreeBSD的 ftp服务器上的相应目录找到。
下面要做的就是将这两个映像文件写到软磁盘上去。要保证软盘百分之百可读,没有坏道。在DOS/Windows环境中,可以使用FreeBSD CD-ROM Disk-1上的tools/rawrite.exe或tools/fdimage.exe来完成这个工作。例如光盘驱动器的盘符是E,进入DOS模式:
C:>E:
E:> TOOLS\RAWRITE FLOPPIES\KERN.FLP A:
换另一张软盘:
E:>TOOLS\RAWRITE FLOPPIES\MFSROOT.FLP A:
这样就创建了这两张软盘。

在Unix类的计算机上,可以用下面的方法创建这两张盘:
# dd if=/cdrom/floppies/kern.flp of=/dev/rfd0c bs=36b
换另外一张软盘,
# dd if=/cdrom/floppies/mfsroot.flp of=/dev/rfd0c bs=36b
这里假设在CD-ROM驱动器里放置了FreeBSD的光盘,并且将它装载在/cdrom目录上,并且假设软盘驱动器的设备名是/dev/rfd0c,这是FreeBSD里软盘驱动器的设备名,在Linux里,可能是/dev/fd0或/dev/fd1。

FreeBSD完全安装手册——系统安装媒介

FreeBSD系统的安装媒介
FreeBSD可以从以下几种媒介进行安装:

* CD-ROM安装,如果你拥有一套FreeBSD的光盘,这是最方便的方式。如果系统BIOS支持光盘启动,甚至完全不需要启动软盘。
* 网络安装,可以使用ftp方式或nfs方式。由于目前国内internet速度不尽如人意,直接通过internet安装令人不可接受,在局域网上可以使用这种方式。
* 从本地硬盘分区安装,FreeBSD分区和Microsoft FAT分区都可以。
* 从磁带机的tar格式文件安装。
* 从软磁盘安装。

后两种方式对国内用户来讲很少见,这里不再进行介绍。

CD-ROM安装
Walnut Creek发布的FreeBSD安装光盘有四张。

1. Disk -1包括有安装系统所需的所有内容。可以将该光盘中的内容分为系统软件包和应用软件包。系统软件包为gzipped tar文件格式,为方便软盘安装使用,将其分成了240,640 bytes大小的组。系统软件包存储在bin, catpages, compat1x, compat20, compat21, des, dict, doc, games, info, manpages和proflibs目录下。另外X-Windows系统软件存放在xf86333目录下。应用软件包在packages/All目录下,为方便查找使用,在packages下对不同功能的应用软件进行了分类,建立了众多目录,存储文件的链接信息。
2. Disk-2包括有Live File System,CVS Repository和一些WEB网叶。Live File System基本上可以看作是一个安装好的FreeBSD系统,在系统出现问题时,可以使用Live File System进行一些修复工作。CVS Repository(CVS仓库)是FreeBSD的源码树,包括所有更新信息。在www目录下有一些关于FreeBSD系统的网叶。
3. Disk -3和Disk-4:Ports Collection。Ports机制是FreeBSD的一个重要组成部分,其中包括与2000余种应用软件。Ports Collection使得向FreeBSD上安装软件自动化,只要执行一个make就可以完成软件的安装工作。Disk-3中的目录packages是 Disk-1中packages目录的继续,存储的是预编译的软件包。Disk-3和Disk-4中的distfiles目录存储的是大部分软件包的源代码。关于FreeBSD的Ports机制将在后面的章节详细介绍。

如果你的系统BIOS支持光盘启动,那么你就可以将BIOS设置成光盘启动,将FreeBSD系统光盘(第一张)放入光驱,重新启动系统。系统将启动到安装FreeBSD的部分。

网络安装
通过网络安装必须有一个快速的网络连接。基于当前的网络速度,通过internet进行安装几乎是不可能的。但网络安装完全可以在一个快速的局域网或者类似校园网这样的环境实现,而且相当方便。通过网络安装有两种方式:ftp方式和nfs方式。如果在你所拥有的网络环境中已经有FreeBSD安装系统的ftp或nfs服务器,那么你所需要就只是准备一张FreeBSD启动安装软盘。那么如果没有这样的服务器,就需要自己建立这样一个服务器。
ftp服务器可以建立在Windows 95/98、Windows NT或任何一种Unix类服务器(包括FreeBSD、Linux等)上。在ftp服务器的根目录上建立目录FreeBSD/3.2-RELEASE/,将需要的安装文件拷贝到这个目录下,设定该目录可以匿名访问。其中3.2-RELEASE是根据你的FreeBSD版本来确定的,如果是其他发行版本按照需要进行修改即可。在这里要注意的是,FreeBSD的安装光盘在Windows上所读取的目录和文件名与在FreeBSD等Unix类服务器上读得的目录略有不同,一是文件名大小写的区别,二是长文件名和8.3文件名的区别。这是由光盘格式决定的,因此建议在FreeBSD等Unix类服务器上读取光盘文件。如果你是从internet上下载安装文件就没有这个问题。
nfs服务器将在FreeBSD的网络应用部分进行介绍。

从本地硬盘分区安装
FreeBSD也可以从本地硬盘分区安装。有两种选择,从微软FAT/FAT32分区或本地的FreeBSD分区。
从微软FAT/FAT32分区安装,现在只能从主分区进行安装,不支持从扩展分区安装。在FAT/FAT32主分区上创建目录/FreeBSD,将需要的安装文件拷贝到该目录下,保持原来的目录结构。
如果在某个FreeBSD分区上有FreeBSD安装文件,就可以从这个FreeBSD分区进行安装,但必须将FreeBSD安装在这个分区上,而不能安装在其他分区上,这是目前的一个限制。

FreeBSD完全安装手册——硬件需求

在安装FreeBSD系统之前,需要了解一下你所拥有的硬件系统。FreeBSD对硬件系统的要求相当低。目前FreeBSD系统可以安装在各种 PC机系统和Alpha系统上。这里只介绍FreeBSD系统对PC机的最小硬件需求。

* CPU要求80386以上(现在都不是什么问题了吧?)
* 内存最小8MB
* 任何一种显示卡
* 80M空闲硬盘空间

Continue reading "FreeBSD完全安装手册——硬件需求" »

November 26, 2005

FreeBSD的文件系统--改变文件所有权

有时需要改变文件的存取权限和所有者,UNIX系统提供三个命令完成这些操作。
·chown,改变文件所有者,如要将aliases的所有者改为pcguest,使用以下命令:
%chown pcguest aliases
·chgrp,改变文件组,如要将aliases的组改为staff,使用如下命令:
%chgrp staff aliases
·chmod,改变文件存取权限,这个命令有许多种格式,可以参考在线帮助信息以全面了解如何使用这个命令。举例如下:
%chmod go+w aliases 增加组用户和其他用户的写权限
%chmod u=rwx aliases 设置所有者权限为可读、可写、可执行
%chmod o=u-x aliases 设置其他用户权限与所有者权限一致但去掉执行权限

从以上例子可以看出,chmod命令用u、g、o分别表示文件的所有者、组和其他用户的权限设置,用 + 、 - 、 = 分别表示增加、删除和设置文件的权限,用r 、w 、x分别表示文件的读、写和执行权限。用户可以变通使用,也可以用man chmod获取更多的帮助信息。

此外,chmod还使用另外一种格式设置文件的存取权限。UNIX对文件的可读、可写和可执行权限设置分别用一个二进制位来表示,整个一组权限用一个八进制数值表示,如110(二进制,八进制值为6)表示rw- ,100(二进制,八进制值为4)表示r-- 。这样在设置文件的存取权限时可以这样设置:
%chmod 644 aliases
上面的命令设置aliases文件对所有者可读可写,对组用户和其他用户可读。

FreeBSD的文件系统--文件权限

FreeBSD和其他操作系统一样,将数据存储为文件,并且将文件放置在不同的目录里。也可以把目录看作一种特殊的文件。FreeBSD的文件名区分大小写字母,最长可达255个字符,可以使用除 / 以外的其他任何字符,因为 / 表示一个目录。

文件权限

FreeBSD是一个多用户、多任务的操作系统,可以供任何拥有账号的用户使用,为保护用户的数据安全,FreeBSD为每个文件设定了访问权限。

FreeBSD的每个文件(目录)有它的拥有者(owner),组(group)和一组涉及用户访问权限的标志。使用ls -l可以看到:

%ls -l /etc/
total 405
-rw-r--r-- 1 root wheel 5700 Oct 16 17:33 XF86Config
-rw-r--r-- 1 root wheel 1357 Feb 17 1999 aliases
-rw-r--r-- 1 root wheel 32768 Oct 16 23:38 aliases.db
-rw-r--r-- 1 root wheel 140 Feb 17 1999 amd.map
-rw-r--r-- 1 root wheel 253 Feb 17 1999 auth.conf
-rw-r--r-- 1 root wheel 834 Feb 17 1999 crontab
-rw-r--r-- 1 root wheel 95 Feb 17 1999 csh.cshrc
-rw-r--r-- 1 root wheel 561 Feb 17 1999 csh.login
-rw-r--r-- 1 root wheel 97 Feb 17 1999 csh.logout
drwxr-xr-x 2 root wheel 512 Oct 16 23:26 defaults

这里只列出部分系统输出信息以供参考。从以上系统输出可以看到这些文件的所有者都是root,文件的组是wheel。每一行的最前面的一组信息表示的是文件的访问权限设置,共有10个字符。第一个字符可以是 - 、 d 、 l 、 c 、 b 等, - 表示是一个普通文件, d 表示是一个目录文件, l 表示是一个连接文件, c 和 b 则用于表示设备文件。后面的9个字符三个一组,前三个表示文件所有者对该文件的存取权限,中间三个表示文件组用户对文件的存取权限,后面三个表示其他用户对该文件的存取权限。一组三个子符中,第一个字符表示读权限, r 表示可读取, - 表示不可读取;第二个字符表示写权限, w 表示可写, - 表示不可写;第三个字符表示执行权限, x 表示可执行, - 表示不可执行。

在10个字符表示的存取权限后面的数字表示的是链接数目,即链接到该文件的硬链接数目,普通文件一般是1,而目录文件一般是2。后面是文件的所有者和组,再后面是文件大小,以Byte表示。最后的信息是文件的最后修改日期和文件名。

从上面的信息可以看出,这些文件(目录)的所有者都是root用户,组为wheel,除defaults是目录文件以外都是普通文件,它们对root用户都是可读写,不可执行,对同组用户和其他用户只可读。

从这里可以看出,每个文件的权限设置里包括有执行权限,用来设置该文件是否可执行。在UNIX操作系统里,文件是否可执行与文件的扩展名没有任何关系,完全由文件的存取权限设定,这一点与DOS/Windows系统完全不同。

FreeBSD的文件系统--路径组织结构

FreeBSD和其他UNIX类操作系统一样有一套"标准"的路径组织结构。在标准两个字上加上引号是因为各种UNIX类操作系统的路径组织结构虽基本相同,但总存在一些小的差别。FreeBSD的这种路径组织结构为系统管理提供了很大的方便,用户可以方便的确定所需要的文件存储的位置。

下面简单介绍一下FreeBSD基本的路径结构:
/ 根文件系统,用于存储系统内核,启动管理和其他文件系统的装载点。
/bin 系统启动时需要的一些通用可执行程序。
/cdrom 光盘驱动器的装载点。
/compat 与系统兼容有关的内容,如系统模拟等。
/dev 设备入口点。
/etc 各种配置文件。
/mnt 软盘等其他文件系统的装载点。
/modules 内核可装载模块。
/proc 进程文件系统,存储指向当前活动进程的虚拟内存的伪文件。
/root root用户的工作目录。
/sbin 系统可执行文件。
/stand 独立执行的程序,sysinstall就在这个目录下。
/usr 第二个文件系统。
/usr/X11R6 X-Windows系统
/usr/X11R6/bin 可执行的X-Windows程序
/usr/X11R6/include X-Windows程序的头文件。
/usr/X11R6/lib X-Windows程序的库文件。
/usr/X11R6/man X-Windows程序的帮助文件。
/usr/bin 与系统启动无关的标准执行程序。
/usr/games 游戏。
/usr/include 程序需要的头文件。
/usr/lib 程序需要的库文件。
/usr/libexec 一些不由用户直接运行的执行程序。
/usr/local 不属于FreeBSD一部分的其他程序。
/usr/sbin 系统启动时不需要使用的一些系统管理程序。
/usr/share 各种只读文件,大多数是一些系统信息,包括有FreeBSD 手册等。
/var 存储经常发生变化的文件,如邮件,日志等。
/var/log 系统日志。
/var/mail 发给用户的信件。
/var/spool 缓冲数据,如打印数据等。
/var/tmp 临时文件。

以上就是FreeBSD的基本路径组织结构。了解这个路径结构将给用户使用FreeBSD系统提供很大方便。这里要提及 /var 目录,因这个目录存储邮件,日志,临时文件等经常变化的文件,有时候这些文件会很庞大,为避免影响根文件系统,可以为 /var 建一独立的分区(参考安装时的disklabel部分)或将这个目录链接到 /usr 目录下。

FreeBSD的文件系统--新文件的存取权限

那么如何确定新创建的文件的存取权限呢?对新文件错误的存取权限设置的后果是非常严重的,如果新创建的文件存取权限默认设定为rwxrwxrwx,那么所有用户对该文件都可以任意进行访问和修改。如果新创建的文件存取权限默认设定为r--------,那么就只有创建该文件的用户可以读取,并且只能进行读操作,不能修改。以上两种权限设置都不是用户所希望的设置,要得到用户希望的权限设置,必须使用chmod命令进行额外的操作。

UNIX采用umask(User Mask,用户掩码)的方式解决新创建文件的存取权限设定问题。这是一个不许可的设置,它指定哪些权限是不允许的。

前面提到可以用3个比特,即一个八进制数字表示一组文件权限设置,如果希望的文件存取权限为所有用户可读,只有所有者可写,则设置umask为022,二进制表示为000010010。那么只有对应二进制比特为0的权限设置是允许的,如下所示:

rwxrwxrwx 可能的存取权限
000010010 User Mask(用户掩码)
rwxr-xr-x 得到的存取权限

默认情况下创建的新文件没有执行权限,而目录有执行权限,因此新创建的文件权限为rw-r--r--,而新建的目录权限为rwxr-xr-x。可以使用umask命令来设置用户掩码的值。

FreeBSD的文件系统--链接文件

FreeBSD里存在两种链接文件,一种称为硬链接,一种成为符号链接或软链接。

硬链接建立了文件的一个副本,具有和原始文件同样的存储权限,删除原始文件并不破坏副本的存在。对硬链接所建立的副本所做的任何修改都反映在原始文件上,反之亦然。但硬链接文件必须建立在原始文件所在的文件系统上,不能在另一个文件系统上建立硬链接文件。

符号连接,即软链接正如它的名称一样只建立一个到原始文件的符号链接。删除原始文件将使符号连接没有正确的指向。采用符号连接可以超越文件系统的限制,符号连接只占用很少的硬盘空间,它只完成文件的重定向。

注意:前面在看文件存取权限时提到的在10位存取权限后面,文件所有者前面的数值表示的是文件硬链接数值,这里不包括符号连接的数目。

FreeBSD的文件系统--设备文件

与其他UNIX系统一样,FreeBSD用一个major number和一个minor number来确定一个FreeBSD设备。major number实际上是设备的一个目录列表,而minor number则指明具体设备。用ls -l /dev指令可以列出FreeBSD目前可以使用的设备,在创建时间前面的部分,以逗号分隔的两个数字就分别是设备的major number和minor number。

最早的UNIX系统将系统设备的major number和minor number存储在一个16比特字中,各占用8比特。4.4BSD系统将之扩展到32比特,major number存储在原来的位置,仍占用8比特,而minor number则占用其余的24比特。如下所示:

  0 1 2 3
原始的设备字 未使用 major number minor number
修改后的设备字 more minor number major number minor number

FreeBSD系统采用了上面4.4BSD系统的方案,其他一些UNIX系统的扩展方案与这个方案略有区别。

FreeBSD支持一种设备并不意味着在 /dev 目录下就存在相应的设备节点。一般情况下在安装完FreeBSD后,系统会创建大部分常用的设备节点。如果你所使用的设备在 /dev目录下没有对应的设备节点,就无法使用这个设备。这时就需要用户自己创建设备节点。

要创建一个设备节点,可以使用mknod命令或MAKEDEV脚本。一般MAKEDEV可以完成大部分的工作,而mknod的使用就显得复杂一些,但它可以处理MAKEDEV不能处理的问题。举例如下,默认情况下,FreeBSD只支持4个SCSI硬盘,如果用户安装了第五个硬盘,要创建第五个SCSI硬盘的设备节点,需要执行以下操作:

%cd /dev
%./MAKEDEV da4
%./MAKEDEV da4s0a

FreeBSD所支持的每一种设备都有对应的设备名称,参考安装系统一章FreeBSD支持的硬件。

FreeBSD支持的文件系统

FreeBSD支持许多种文件系统,主要包括有:
● ufs文件系统,最基本的FreeBSD文件系统。
● cd9660文件系统,ISO 9660 CD-ROM格式。
● nfs网络文件系统。
● FAT16、FAT32和NTFS等Microsoft Windows支持的文件系统。
● 其他一些文件系统…
要使用这些FreeBSD支持的文件系统,必须将它们正确装载到FreeBSD的文件路径结构中,例如要使用CDROM中的文件,必须将光盘放入光盘驱动器,执行如下操作:
%mount_cd9660 /dev/wcd0c /cdrom
这里 /dev/wcd0c是CD-ROM驱动器的设备名,/cdrom是CD-ROM的装载点,完成操作后,就可以访问光盘里的内容了。
系统启动时执行脚本 /etc/rc,将参考 /etc/fstab 中的内容自动装载文件系统。关于 /etc/fstab的文件格式将在系统配置里详细介绍。