相信很多朋友 Windows 已经用得相当熟悉了,由于种种原因,想试试 UNIX 。无奈
Windows 的思想根深蒂固,这给学习 UNIX 造成很多困惑,经常四处碰壁。于是抱怨 UNIX
太难学,抛在一边眼不见为净,继续用着 Windows 。当然如果你只是普通用户,听听歌玩玩游戏灌灌水,那大可不必装什么 UNIX
,因为你根本没必要去跟 UNIX 瞎折腾。 Windows 那么方便,用着多舒服,何必自找麻烦,去弄那难配置又 “ 莫名其妙 ” 的
UNIX ?说到这里,很多人可以不用看这篇文章了。这篇文章是为想学 UNIX
的跟我一样菜的新手写的,目的是为了在学习过程中少走一些弯路。就从我个人的经历来说吧!
最初听说 UNIX
,大概是在大一的时候。当时对这个系统超级崇拜,认为能驾驭这个系统的一定是绝顶大牛。某天偶然听说一个叫做 Linux 的系统,据说跟
UNIX 很像,而且还有一个叫做 RedHat 的东西。因为我有刻录机,于是在校网的某处下了三个 ISO
,刻成了盘,但一直不敢试,因为根本不知道怎么把它 “ 放 ” 到硬盘上去。也就是说,它有没有分区?有分区的话怎么弄?因为一直担心把
Windows 损坏,所以这几张盘就被我搁到了一边,这一搁就是一年。
大二了, Windows
已经玩得相当熟了,这时对分区之类的也算挺了解了吧,于是又从抽屉的角落里找到那几张盘,打算试试。具体怎么样我也记不清了,反正是安装成功了,不过刷新率非常低,眼睛根本受不了,所以没多久又被我删了,还是继续我的
Windows…… 说出来不怕笑话,到这时我还不知道 Linux 有好多发行版本,以为 RedHat“ 就是 ”Linux 。
大二的暑假, Windows 我已经玩得不想再玩了,而且随着对
UNIX 的渐渐了解,我开始对这东西有了点好感。于是在网上搜了一通,由于当初对 Linux 的感觉相当糟糕,所以我没把目光放在
Linux 上,而是放到了 BSD 上。 BSD 有三个分支 ——FreeBSD 、 NetBSD 和 OpenBSD 。当时看着
NetBSD 和 OpenBSD 感觉不大舒服(呵呵,其实看着 Linux 这几个字也不怎么舒服,这也是我当时不选 Linux
的原因之一,不过现在不会了),于是自然而然地选择了 FreeBSD 。
然而,对于我这个有着很深的 Windows
思维的人来说,想一下子适应 FreeBSD 真的很不容易。还是回到分区。 FreeBSD 的 “ 分区 ”
是怎么样的?这让我怵了好久,直到从图书馆借到《 FreeBSD
使用大全》的时候才有点眉目。不过,当时并不知道这本书其实不大适合初学者。但那时在家里只能看这本书了,花了十几天吧,把这本书看了个大概。
回到学校后就开始了学 FreeBSD ,但也是断断续续,没有当初学
Windows 那么大的好奇心。不过,虽然进展缓慢,收获多多少少还是有一些的。在这当中逛了好多论坛( ChinaUnix ,
FreeBSDChina 等),看了好多文章,说实话感觉还真的挺不错。现在就稍微总结一下吧,以下仅以 FreeBSD
为例,因为我到现在为止,经过一些比较,还是认为 FreeBSD 最适合我的性格 :) 嗯,不再瞎扯了,切入正题,呵呵。
首先,我必须让你摆脱一些误解。或许你会有这样的不屑: UNIX
那黑头土脸的能算得上系统?能正常工作?能提供 FTP 和 Web 等服务?能受得了大负荷? ft
,我才不相信,我才不用那破东西!如果你这么想,我可以很认真地告诉你,你错了!知道么,世界使用量第一的 Web 服务器 Apache
最初是为 UNIX 开发的,超级数据库 Oracle 最初也是为 UNIX 开发的,高端的服务器用的是什么操作系统?是 UNIX
!而不是你想象的 Windows2003 !当然,我用过 2003 ,也用它架过相当多的服务,我知道 2003
的性能不错。但请相信,世界上这么多大型站点使用的都是 UNIX ,你说他们的管理员难道就都那么笨?如果 Windows2003
性能真的比 UNIX 好,他们会不用这么好的东西?事实是,他们选择了 UNIX 。不相信?好,你可以去这里看看: http://www.netcraft.com/,随便输入几个大型站点,如
http://www.google.com/, http://www.yahoo.com/, http://www.baidu.com/,看看 OS
部分写的是什么?或者,你再看看这个网址: http://uptime.netcraft.com/up/today/top.avg.html,看看世界上运行时间最长的机器用的是什么系统?如果你还是执意认为
Windows2003 牛,那么 OK ,你可以把这篇 “ 无聊 ” 的文章抛在一边了 :)
如果你继续看下来了,那我继续说,呵呵。我们知道, Windows
上的服务器很多都是以 GUI 页面和服务的方式存在的,但在 UNIX 中,它们基本上是在命令行下以 daemon
的形式存在。你可能很困惑,命令行下也能运行服务?嗯,没错,正是。 daemon 在 UNIX 中的地位,有点像服务在 Windows
中的地位,但又不尽然。现在你可以把 daemon 就当成服务看待。
那么, UNIX 下的文件是怎么样的? UNIX 跟
Windows 不同,它把所有的文件都当成一回事,不像 Windows
那样以后缀名来区分不同类型的文件。可能你会很困惑,如果这样的话,我怎么打开不同的文件?事实上,在 UNIX
系统中,文件只是存储上硬盘上的单纯的字节。 UNIX 下区分不同文件的方法是看这些字节的前几个字符。当然, UNIX
本身可不管你是什么文件,它只当你是一些字节。区分这些文件的工作由应用程序来负责,比如你有一个文件名为 “diogin” 的文件,你想
“ 打开 ” 它。怎么打开?我不知道它的文件格式!麻烦大了吧?不大。用 file
命令一看,这个文件是什么类型马上出来了,虽然不一定准,但绝大多数情况下是没错的。好了,现在你知道它是个可执行文件,在 shell
下敲入 ./diogin 后,程序执行了,打印出了 “Hello, World!” ,呵呵 …… 就这么简单。
可是问题又来了,什么是 shell ?还有, UNIX 没有像
Windows 那样的桌面吗? shell ,简单地说,就是让用户与操作系统内核沟通的一个媒介,你在 Windows
下用过命令行吧,你可以把 shell 想象成命令行,但 shell 可比命令行强大多了,功能上根本不是一个数量级,这一点在你深入理解
shell 后肯定会感觉到。那桌面呢?这个可能是最让人困惑的问题了,当时我就一直不理解这个 X 跟桌面到底是怎么回事,甚至一度抱怨
Windows 怎么这么霸道,把我的思想全禁锢住了。首先必须明确, X 是图形界面的基础, X 不是桌面的简称! X
提供了一些图形调用接口,至于怎么用这些接口,怎么显示你想要的图形,是你的事情,它可不管。那么,你应该用什么东西来控制自己想要显示的图形?答案是窗口管理器,典型的如
fvwm 。有了这两个东西,应用程序就可以以特定的图形窗口方式显示了。现在你可能又会有问题了,不是说 X 是 CS
方式的架构吗?这个架构是怎么回事?在我们通常的理解中, Server 一般是有着高性能的机器,而 Client
是普通的客户机。但这个理解却不适合 X , X 中的 Server ,指的是有键盘鼠标有显示器的机器,而 Client 则是指一些在
X 上运行的程序!这些程序,完全可以在另一台机器上运行,通过网络,向 X 服务器发送命令, X
服务器收到这些命令后为这些程序显示图形。只要双方遵循 X
协议,不管你的客户程序在什么系统上运行,在哪运行,都无所谓。呃,说了半天,什么是桌面?桌面是在 X 和窗口管理器上集成了相当多的 X
应用软件的一整套系统的合称,它包括了底层的 X ,中间层的窗口管理器和上层的 X 应用程序。很简单明了吧?事实上 UNIX
系统的运行根本不需要 X ,只当你想要图形页面的时候才需要安装,它只是 UNIX 系统上运行的一个软件而已。那 Windows
的桌面呢? Windows 的桌面是跟 Windows
内核紧密结合在一起的,区分不开,你就把它跟系统当成一整套的东西吧,因为结合得太紧密了,我也分不开,呵呵。
当你开始使用 UNIX
系统的时候,你会遇到很多惊讶的事情,最让你惊讶的,可能就是重新编译内核。天哪,这是什么东西?刚从 Windows
转过来的用户可能会吓出一身冷汗。其实不用怕,编译内核是学习 UNIX
系统必须经过的一关,而且也不像想象中那么神秘。简单地说,就是改变系统最本质的部分,让它适合你的机器和你的需要,换句话说,你可以用重新编译内核来完全定制你的系统。最高级的系统都是能让自己定制的,我不需要我用不着的东西。很好,那开始编译吧!怎么入手?以
FreeBSD
操作系统为例,安装的时候你选择安装系统内核源码(呵呵,没错,是系统内核源码,这个东西是最有价值含量的,但现在你可以完全免费得到它,而不是花几千元去买一个完全保密的东西
:) ),这通常会安装在 /usr/src/sys 目录下,然后根据你的 CPU 架构(普通 PC 都是 i386
架构),选择不同的目录进入,里面会有内核配置文件。 FreeBSD 的内核配置文件为
/usr/src/sys/i386/conf/GENERIC
,即通用内核配置文件,适合大多数机器使用的内核配置文件。说到这里你可能明白了吧,默认安装的时候使用的就是按这个配置文件编译出来的内核,很明显,为了让大多数不同的电脑能用,里面肯定包含了很多你机器上没有的东西。现在你的任务就是把这些东西全都去掉,同时加进去你想要的东西。用任何一个文本编辑器打开它,怎么编辑我就不说了,你可以查看手册,里面有详细的说明的。编译的过程,会在某个目录下产生新的内核源码,你进入那个目录后就可以开始编译并安装新系统了。我的机器,删除没用的东西后的内核非常精简,
256M 的内存启动后完全 Free 的内存有 231M ,也就是说在启动过程中被 “ 经历 ” 过的内存区域只有 25M
,而且这不是活动内存,活动内存只有 2650K !呵呵。跟 Windows 的上百兆内存占用相比 ……
要想正常搞定新内核是有点挑战的,你需要对硬件相当熟悉。好了,接下来我讲讲文件安装吧,这也是在使用 UNIX
的过程中我感到挺困惑的一个问题。我们都知道,在 Windows 系统中,安装一个软件很简单,下载文件压缩包,解压,双击
setup.exe 开始安装,选择一下路径就 OK
了,很简单吧!安装好后,文件通常会写注册表,说实话这是很恶心的一件事情,当你重装过系统后就知道了,你需要重新安装一次这些软件,很麻烦吧?于是在
Windows 下产生一些新名词,典型的如 “ 绿色软件 ”
,意思是说不会写注册表,直接解压后就能用的软件。当这些思想深深地圈住你的时候,你接触了 UNIX
,你也用这套思想给搬过来了,于是你去下了个软件包,解压,咦,安装文件呢?找不到安装文件怎么安装?呵呵 …… 我还是来简要说明一下
UNIX 下的文件安装吧,拿 FreeBSD 举个例子,在这里我就先不说 FreeBSD 的 ports 软件安装机制和
package 软件安装机制了,这些是在你想学 FreeBSD
后才需要掌握的东西。首先,你下载了一个软件包,这个软件包里面可能是源码,也可能是二进制软件。如果是源码,你解压后,它会自动生成一个目录。比如我假设这个软件包是
httpd-2.0.55.tar.gz ,你用 tar zxvf httpd-2.0.55.tar.gz
命令将它解压,在当前目录下得到 httpd-2.0.55 目录。 cd httpd-2.0.55
,进入这个目录,里面就是源码了,一般情况下会有一个 Makefile
的文件,这个是用来编译软件用的。现在只要做的,只是先做一下配置, ./configure --help
,会显示出配置帮助,你可以根据自己的需要来定制,配置好后敲入 make 命令, make
程序会自动从这些源码编译出二进制软件,这个二进制软件跟上面我说的二进制软件基本一样,区别只在于一些不同机器上编译的一些细节,还有就是后者打过包而已。好了,现在你敲入
make install
来安装这个软件。那么,这个命令做了些什么东西呢?很简单,它只是把编译出来的软件复制到它应该去的地方,其它什么都没做!就这样么?它不写
“ 注册表 ” 么?对呀,写什么啊, UNIX 的软件是靠它自己的配置文件来控制的!如果你想知道它详细的动作,你可以去看看
Makefile 文件里的 install 部分,看它是怎么写的,你就知道当你敲入这个命令后系统都做了些什么东西了。一个典型的
UNIX
软件,可以看作组件、二进制程序和配置文件组成,而这些文件都是独立的(当然除了某些必要的依赖软件在这之前必须安装外),当你知道这个软件在另一个系统上是二进制兼容的时候,你把这个软件所在的目录完全拷贝到那个系统上,这个软件可以立即正常工作!多自然的事情,还写什么注册表,塞什么
“ 开始 ” 菜单啊, UNIX 就是这么井然有序!那么卸载呢?就是把这个文件夹删除!不会留下垃圾么?留什么垃圾啊,在
Windows 下的 “ 绿色软件 ” 不就是直接删除么?呵呵,可以这样说, UNIX 下的软件,都是 “ 绿色软件 ” 。
罗嗦了这么多,还是有两个方面得讲讲的,就是 UNIX
的目录结构和进程。拿 FreeBSD 为例,安装的时候会让你创建 “ 挂载点 ” 。可能你又有困惑了吧?可以这样理解:
Windows 下不是有 C: , D: 等盘符么, UNIX 下的 “ 挂载点 ” 就相当于这个 “ 盘符 ”
,下面挂着文件系统,不同的文件系统可以有不同的格式。好了,你现在创建了 / 、 swap 、 /var 、 /tmp 、 /home
和 /usr 这几个 “ 挂载点 ” ,你用 Windows 下的思考方式,将它们相像成 C 盘、页面文件、 D
盘等等。其实没什么大碍,这样类比会让你比较好接受。好了,你进入了系统, ls /
一下,发现了好多东西,你可能又惊讶了:怎么这么乱啊?当你熟悉了之后,你就不会这么说了 —— 如果你一开始学的就是 UNIX
,你会说乱么?事实上,一点也不乱,而且非常有秩序 —— 这些可是经过了几十年定格下来的目录结构!除了 /var , /tmp ,
/home 和 /usr ,其它都是在 / 目录下的文件或目录,而且对一个系统来说,这些东西基本上不会变化。 swap
目录是交换分区,相当于 Windows 下的页面文件, /tmp 目录是临时 “ 垃圾场 ” ,当然里面的东西可不是 “ 垃圾 ”
,都是软件运行产生的临时文件。 /home 是用户的家目录所在地,每个用户(除了 root )在登录后都被定位在家目录。 /usr
是使用频率最高的一个目录,因为绝大部分本地软件都安装在这里( /usr/local )。当然,你可以再自己建立新的 “ 挂载点 ”
,如 /ftp ,来提供 ftp 服务,呵呵。
嗯,再谈谈进程,这东西也曾让我困惑了一段时间。
Windows2003 下,我们可以把进程减小到开机 12 个左右,普通的应用基本上不超出 30 个进程。但当你进入 UNIX
后,看着几十个上百个进程,是不是吓了一跳?其实这跟 UNIX 当初的设计有关。举个例子, apache 在 Windows
下正常工作只显示两个进程,一个是主进程,另一个是服务进程。而在 UNIX 下,则视连接情况有不同的进程数。如果当前有 50
个连接,则会有 51 个进程,其中一个是主进程。也就是说, apache 为每个连接启动一个进程(假设使用的是 prefork
方式的多道处理机制)。这样一来,进程数一下子就上去了,我们可以把它看成 Windows
下的线程(只是简单的类比而已,事实上不是两回事)。具体情况我就不多说了,打这么多字累死我了, _-_
最后顺便讲讲 FreeBSD 的安装吧!安装的大致过程,在
FreeBSD 的手册里已经有详细的讲解。需要注意的是,必须弄明白什么是主分区、什么是扩展分区和逻辑分区。对于玩熟了 Windows
的人来说,这一步没什么问题。好,接下来我假设你已经有 Windows 系统在硬盘上了,而且你是把整个硬盘都给了 Windows
。现在你要划出一部分空间出来装 FreeBSD 。如果你的分区情况是: C 盘为系统盘,占一个主分区; D 、 E 、 F
盘为逻辑分区,在一个扩展分区上。注意,这个扩展分区也是主分区!接下来怎么办呢?这里必须明确: FreeBSD
必须安装在主分区!所以你要从 D,E,F 这三个盘里分出空闲的空间,从哪里分?当然是 F 盘了,用什么分?请先准备一个软件:
partition manager
。这是一个分区软件,可以很容易地分区。怎么用这个软件我就不说了,你不会的话先研究一下它的说明,相信你能搞定(我给点思路,不是用删除,而是用压缩第二个主分区的方法来挤掉
F 盘,这样才会缩小第二个主分区,否则那部分空间还是第二个主分区的,等于白干)。于是,你把 F
盘腾了出来,得到了一个空闲空间。好了,现在准备工作做好了,插入盘开始安装。选分区的时候你就可以把 FreeBSD
放到那块空闲的硬盘区域上了。系统装好后,去借几本书开始认真学吧!只是 FreeBSD
方面的书实在太少,能在学校图书馆借到的就三本:《 FreeBSD 使用大全》、《 FreeBSD 技术内幕》和《 FreeBSD
手册》。当然如果你能把这三本书都看透,水平肯定不低了,呵呵。我就不说了,因为我太菜 ……
嗯,一时也想不到还要什么要说了,就这样吧,有问题 google
,上 UNIX 方面的论坛是王道,呵呵。
【本站声明】本站刊载的部分内容全部来源互联网,对于此类文章本站仅提供交流平台,不为其版权负责。如涉及侵犯您的知识产权的文章,请联系我们,我们将尽快做出更正。并向您表示感谢!同时特别感谢对本站所有支持的网友。