作为一个BSDer,在网上转得最多得就是UNIX相关论坛了,在与不少新手接触的过程中,发现有相当一部分人是从Windows下转过来的(几乎是“绝大多数”),在学习FreeBSD的时候会遇到不少困难,甚至觉得UNIX类系统极为难用,在这里,我把自己的经验总结一下,供大家参考。
首先是如何获得的问题,Windows到处有卖,甚至某些Linux,比如RedHat,Mandrake等都有卖,但FreeBSD,NetBSD等UNIX目前似乎还没有看见有出售——至少重庆是如此。获得BSD最好的途径是通过网络下载,比如FreeBSD的官方站点ftp://ftp.freebsd.org,ftp://ftp.cnfug.org,或者一些专门提供自由软件下载的站点,比如http://www.wormwang.net等都可以下载相关系统和应用程序。如果没有条件上网下载的朋友,可以在自己常去的论坛上找找与自己同城的朋友帮忙刻一下盘,通常大家都会比较乐意的。
其次,安装。安装一个操作系统,必然涉及到分区。然而,分区是很多人的噩梦……因为分区意味着数据丢失甚至整个分区表的丢失等意外情况。特别是BSD的分区,更是让不少人头疼,因为BSD继承了UNIX传统的磁盘管理概念,而那时PC还没有出现,因此,在BSD的传统磁盘管理机制中就没有PC中的“分区”这个概念。它是将磁盘划分为一个个Slice来进行管理的(如果对FreeBSD有兴趣的朋友可以参阅王波的《FreeBSD使用大全》或者《FreeBSD Handbook》)。之所以要介绍Slice这个概念,是因为它与后面的“挂载点”概念息息相关。既然在UNIX中没有分区这个概念,因此BSD就无法理解“扩展分区”这个概念,因此它必须被安装在主分区中。然后在其中划分Slice。而且Slice在文件系统中对于程序和用户是透明的,不像分区一样是可见的。在分配了Slice后,还要为其分配“挂载点(Mount Point)”,也就是相当于Windows下为分区分配盘符之类的工作。只有被分配了挂载点的Slice才能被操作系统挂载并可用。UNIX的文件系统构成也与Windows完全不同,这在后面将详细讲述。当然,为了与其他操作系统兼容,FreeBSD的安装程序还提供了支持“分区”概念的Fdisk。但FreeBSD必须被安装在主分区(不过不像Linux那样还需要一个单独的swap分区,FreeBSD的swap只是其所在分区的一个Slice),因此FreeBSD不支持对逻辑分区进行操作,它只显示扩展分区,并将其做为一个主分区对待,各位在这一点上一定要特别小心。分区完成后,开始安装,这个步骤没有什么特别之处,唯一特别德就是FreeBSD可以不安装GUI(Graphic User Interface,图形用户界面)。
在文件复制进程完毕后,开始配置,不过配置过程并不难,看看提示就知道该怎么做。接下来进行X-Window配置(注意!是X-Window,没有X-Windows这个东西这是很多Windows下转过来的用户容易犯的一个错误),X-Window现在已经能够识别大多数硬件,特别是主流硬件,因此不必进行过多干预。X-Window配置之后,我们必须选择窗口管理器(Window Maker)或者桌面环境(Desktop Environment),否则只能使用默认的简陋的twm界面。在这里要说明一下:UNIX类系统本身是字符的,X-Window是在UNIX类系统上运行的一个程序,也是UNIX类系统最常用的GUI。在字符界面下输入startx就可以启动“XFree86”,也就是我们通常说的“X”,X-Window的一个最为流行的分支。但是,没有经过设置的X十分难看(毫不夸张的说,Windows95都比它好看)。但是,你只是看到了X最原始的面目而已,经过精心打扮的它甚至能比得上Mac OS X的GUI!X的设计哲学很像UNIX的设计哲学:“Tools,no policy!(工具,而不是策略!)”这些东西并没有规定最终用户做什么,而是提供工具,由用户决定自己使用它们做什么。X并没有规定它提供的GUI看上去是什么样子,而是把这个任务交给另外一个程序来完成,这个程序便是“窗口管理器(Window Maker)”。有很多这样的程序,比如AfterStep,Blackbox,Enlightenment,ctwm,ftwm,sawfish,WindowMaker(注意跟Window Maker区别开)等等。它们的外观千差万别,有的看上去像Mac OS,有的看上去像风景画,有的看上去像科幻小说中的东西,甚至有的看上去跟Microsoft Windows一样!另外还有一个概念是“桌面环境(Desk Environment)”,它们其实就是窗口管理器跟应用软件的集合,其中最著名的代表就是KDE和GNOME。推荐新用户使用KDE或者GNOME,因为它们配置简单,可以帮助你在更短的时间内学习FreeBSD,而不是被复杂的设置所吓倒。当然,在熟悉了系统和X之后,尝试一下不同风格的窗口管理器也是一个好主意!^_^
安装完成之后,就可以重启机器进入系统了。记住一点(十分重要):UNIX类系统是不会回显密码的(也就是说,在你输入密码的时候你看不到Windows下熟悉的星号提示),至少在字符界面下是这样。不要误以为是键盘出了问题哦!^_^ 这个是出于安全性考虑,因为回显就意味着会暴露密码的长度,这个是十分不安全的。进入系统之后,我们必须了解它的文件系统才能进行操作。刚才说了,Slice是对用户透明的。你在FreeBSD下看不到熟悉的C:,D:,E:,而是一大堆文件和目录。UNIX类系统都是使用的倒树形目录结构,通过挂载点加载分区或者Slice,用户根本感觉不到它们的存在。在FreeBSD系统中,根目录(/)是目录树的顶点,它下面是/dev(设备文件所在目录),/etc(配置文件所在目录),/home(普通用户起始目录),/root(根用户起始目录),/bin(普通程序所在目录),/sbin(系统管理程序所在目录),/tmp(临时文件所在目录),/mnt(临时挂载点所在目录)等二级目录,在它们下面又有许多小目录,这样一级一级的衍生下去……你可以通过输入ls来浏览目录,它的作用相当于在DOS下或者Win2000/XP/2003的cmd窗口中输入dir /w。如果你想了解文件的详细信息,可以输入ls –l。此外,ls没有类似dir中的分页显示参数,但是你可以通过ls | more或者ls | less来达到相同的目的。在浏览了UNIX类系统的文件系统之后,你可以发现,它们的文件系统是一个统一的(只有一个根目录),完整的(不会因为Slice或者分区而被划分为类似C:,D:,E:的并行“分区”),复杂的(每个目录下可以有N多子目录和文件)树形结构。
此外,单独提一下加载的问题。传统的UNIX管理方式出于安全性考虑,并不自动加载除其自身所在的文件系统以外的任何文件系统——即使它能够识别它们,特别是光盘和软盘。FreeBSD也继承了这样的管理方式,因此,除了FreeBSD所在文件系统以外的任何文件系统通常都需要手动加载,或许你觉得这个很麻烦,但是这样会更安全。加载的命令是mount,至于用法,限于篇幅,我就不多说了。在这里要说明的是,UNIX类系统对任何其他分区采用传统的管理方式,因此,在FreeBSD下,它们是/dev/ad0s1,/dev/ad0s2,/dev/ad0s5,/dev/ad0s7之类,而不是Windows下的C:,D:,E:,F:。在这里解释一下。FreeBSD下,ad表示硬盘设备(注意:FreeBSD 3.x及其以前使用的是wd),0表示第一个主设备(也就是第一个IDE口的主设备),s是Slice的缩写,1是指第一个主分区,5是第一个逻辑分区。而在FreeBSD下CDROM的名称是/dev/acd0(第一个CDROM设备号为0),(注意大小写,UNIX类系统是要区分大小写的,任何情况下都是这样!因此/dev/CDROM和/dev/cdrom绝对不是同一个东西)。你也可以通过向/etc/fstab加入相关条目来达到自动加载的目的,但是,千万别自动加载CDROM和软驱,否则系统在启动的时候会抱怨无法加载,甚至启动出错。要想在使用的时候自动加载软驱或者光盘,可以考虑使用“amd(Auto Mounting Daemon”,自动加载守护程序),详细情况请参阅相关材料。
还有一点,可能许多朋友发现市面上很少有关于UNIX类系统命令的入门书籍,而UNIX类系统最强大的地方就是它的命令!正如UNIX的设计哲学所说:“Tools,no policy!”我们可以利用它们做任何事情。在这里提醒一下各位,UNIX类系统有一个比Windows更强大的联机帮助系统——“man”!如果想知道关于某个命令的详细信息,可以通过man 命令名的形式查找,会有不小收获。FreeBSD和某些发行版的Linux甚至可以通过man –k 关键字来查找与某个操作或者主题有关的命令名,比如想查找与打印有关的命令,可以输入man –k print。UNIX类系统命令众多,估计没谁能记住所有命令及其参数(否则那个人不是天才就是疯子)。此外,FreeBSD Handbook也是很好的资料,建议看看。
最后,来谈谈UNIX的设计哲学——Tools,no policy!也就是常说的“工具箱”。典型的UNIX命令——比如ls,more,less,print,sort等等,都只完成某个或者某几个特定的工作。ls是目录列表命令,less或者more是分页显示命令,sort是排序命令,print是打印命令。初看它们似乎毫不相关——至少在DOS和Windows下是如此。但是,它们的组合可以让你得到你想要的结果。比如,你想对目录进行列表并分页显示出来。命令就是ls | less。或许你觉得麻烦,还不如dir /p方便。但是,如果你想目录进行列表并对其进行排序,然后分页显示出来,Windows或者DOS下怎么办?在UNIX类系统下,你可以简单的加上一个sort命令——ls | sort –n | less。如果你还想把结果打印出来,那么加上一个print就可以了ls | sort –n | less | print。是不是很方便啊?^_^ 你不需要另外找个程序来完成这个工作,只需要使用手中的工具就可以。UNIX下的命令或程序都有自己的特点和作用。单独使用的时候,它们并不强大,它们的灵活性才是它们强大的地方,你可以根据自己的需要来组合命令,从而得到你想要的效果(有些象小时候玩的积木)。UNIX中,“工具”到处都是,因为UNIX本身就是一个工具箱,只有充分理解并接受了这样的理念,你才能更好的使用它!
好了,以上就是我的个人经验,由于时间和水平的关系,写得也不是特别全面,算是抛砖引玉吧。不过我也真诚的希望它能给大家一些帮助。^_^ 如果对UNIX类系统有兴趣的话,可以来我们CNFUG(China FreeBSD User Group)http://www.cnfug.org看看。