Unix

重新配置了 X1 Carbon

昨天重新配置了一下 ThinkPad X1 Carbon,用了 Windows 自身的恢复功能,把整个计算机恢复了出厂设置。然后重新安装了一些常用的软件,目前基本上是可以使用的状态了。

之前的系统其实没有出很大的问题,只是我感觉挺混乱了,从收到这台电脑一直使用,之前没有正式将 Windows 10 系统作为自己的日常使用的操作系统在用,有很多东西都比较生疏。配置了一些 Chocolatey 之类的应用管理工具,结果搞到自己焦头烂额,也没有配置成功。一些应用更像是 Portable 的,在桌面上放着,显得很混乱。所以想重新恢复出厂设置,重新开始。不过好处是我工作相关的文件,全部都放进了 OneDrive 里,一直同步着,所以不需要很多的备份,因此这次重新配置也没有什么压力。

我收到这台电脑之后没有胡搞,系统恢复分区保留的很好,因此就像还原手机到出厂设置一样,直接在控制面板里操作就行,很容易,当然时间也花费了一些。弄好之后重启后每次开机遇到了一个 DLL 错误,点取消后不影响使用。从网上搜索后,得知是一个驱动的问题,按照网上的教程,把驱动删除后重新安装就好了。

感想是:Windows 系统的组织确实很容易让人产生重装的想法。不提几年前的 Windows 用一段时间就变慢,不得不重装,哪怕现在到了 Windows 10 的时代,这个问题基本解决了,系统的混乱还是让我会产生推倒重来的想法。我感觉这和早期的 Windows 的单用户设计有关,虽然经过不断重复编写,但这个基础的设计还是一脉相传。macOS 这样的 UNIX 系统的子孙不大容易有这个问题,各种配置都放在单独的目录里,互不干涉,想重来大不了重新建立一个用户就好,不会有要全部推倒重来的需要。

FreeBSD 快忘光了

最近我想实验一下 Apache 的相关操作,顺便在网站上放一些在线应用。因为 Apache 太占用内存了,因此我就去 Ramhost 买了一个月的 512M 内存的服务器玩玩。

本来我想继续买 OpenVZ 的,因为它比 KVM 的便宜一美元,而且虽然据说 KVM 有很多优点,但用 VPS 的话 OpenVZ 更加方便,因为有 Ramhost 优化好了的镜像,reload 之后绝对是最简化的,自己一点一点往上加东西,比较好控制。不过 Ramhost 这次 OpenVZ 主机又卖光了,我只好选择了洛杉矶机房的 KVM 主机,反正只用一个月而已,也可以忍受。

KVM 的其中一点好处是深度虚拟,用户接触到的完全像是一台普通的机器,从安装操作系统开始都是用户来操办。这样 Ramhost 就提供了比 OpenVZ 方案更多的操作系统镜像,其中就有我的入门 UNIX 操作系统 FreeBSD。

因为这个主机买来是用来实验的,我首先 reload 的系统就是 FreeBSD。Ramhost 上有 8.2 版的和 9.0 版的,不过 9.0 版的没有镜像,我于是就用 8.2 版的。安装系统我是比较熟练了,当初我在家里的老 DELL 笔记本上安装了多次。不过安装之后的设定我就比较抓瞎了,从网上找了一些资料复习一下才渐渐的想起来 FreeBSD 的一些特有的设定。不过这么多年下来我对 Linux 的配置方式更加熟悉了,因此满足了我回忆的愿望之后,我就把系统给换成了 Linux。

我对 FreeBSD 印象深刻是因为这是我最早真正接触过的 UNIX 操作系统。我的计算机入门读物是一些国内的老教材,在第一章介绍计算机的历史的时候,都提到过 UNIX 操作系统,给我的感觉很神秘。在 2000 年左右我读初中的时候,我从报纸上看到了有个名为 Linux 的操作系统,是 UNIX 的一个分支,而且是免费的,不过当时对这些也没有什么概念。

与洪峰的邮件交谈

上一篇文章中说我记不得什么时候知道洪峰这个人了,当时我估计是2007年。因为之前和他通过邮件交谈过,于是我去我的旧gmail邮箱找到了那封信,发现那时候居然是2005年10月份,看来我的记忆确实不行了。

和他通过邮件交流,是因为我对他说的新一代操作系统和TeX实现非常困惑,于是发邮件去询问。他在邮件中也回复了我一些东西,可惜由于我自身水平的问题,还无法全面理解邮件中没有什么私人内容,因此贴出来洪峰应该不会有意见,而且说不定有心人看到了也许可以增长知识,也算是大功一件。

下面是第一封信的截图:

Mail communicate with Hong Feng

当时是我之前已经给他发了一封信询问,但可能由于编码问题,洪峰那边看不到,于是让我再发一次。我重新发送了一次后,对方给了我第二封邮件:

Mail communicate with Hong Feng

里面对方(根据邮件的落款,我怀疑前面的几封信不一定是洪峰本人回复的)用英文对我的问题逐一回复,我简单的用中文复述一下:

  • 关于第一个问题,对方说:“事实上,FreeBSD和GNU/Linux已经在中国获得了它们的市场,尽管多数PC用户仍然在使用M$。”(下一段)“MING/OS(或MNM OS)与Un*x的哲学不同,你在它的基本观点中找不到文件和进程,他们都被Scheme的s-exp和线程取代了。”

  • 关于第二个问题,对方说:“NeoTeX是MING/OS的桌面。它支持互联网应用程序,特别是与专家系统的接口。”

  • 关于我询问的他们的杂志从哪里可以买的问题,对方回复:“请把你的通讯地址用中文写给我,我可以给你寄一份。”

然后我回复说我还无法理解这样做有什么优点,而且也不理解为什么Un*x系统把一切视为文件的哲学需要革新,然后洪峰(落款是他)回复了一份比较长的邮件,复制如下:

我说:“基于元内核的系统或许是一个新概念,但我不理解它是否能给我们带来什么好处。就如您所说的那样,MING/OS中将不再有文件和进程的概念,也许这很先进,但我们真的需要它吗(这让我想起了微内核与单一内核之间的争论)?(我很想听听您关于Un*x不足之处的讨论)。”对方回复:

如果你知道了 UN*X 的缺点, 也就会开始明白 MING/OS 的一些优点了.

UNIX 的设计哲学是基于文件系统和进程的, 实际上, 进程也是当作文件来操作的, UNIX 的根目录下有 /proc 子目录, 在开机之前, 目录是空的,机器启动了, 操作系统运行之后, 各种与进程有关的东西就写进了这个目录的文件中. 所以 UNIX 的进程是当作一种特定的文件被调度的.

这里隐含的问题有两大类(无论是微内核还是整天内核):

  1. 整个UNIX 内核是一个编译了的二进制代码快, 其语义对于开发人员之外的广大用户是不可解的, 因此对于用户而言, 内核的运行时系统的行为是不可随意改变的,

  2. 文件系统中的文件(对于内核而言)是一个没有语义的容器, UNIX 设计哲学把语义的处理交给了应用程序的开发人员去处理. 在 UNIX 历史的早期, UNIX系统上有五花八门的文本处理工具: 从 shell (光shell的种类就有差不多一打), sed+awk, troff, Perl,.. 都是以文本为基本的操作对象, C 语言起初就是一个字符处理器(CHAP, CHAracter Processor), 这就是为什么 C 语言故意把字符串设计为字符数组的根本原因, 因为 UNIX 系统是作为字符处理系统设计的.

UNIX并非Windows

Google果然不同凡响,自从今天推出Linux版本的Google桌面搜索后,我订阅的几大blog争相撰文报道。就我读的几篇文章里,无一例外的说道了Google桌面搜索 for Linux的好处,然后点出一点点不足–没有widget。然而,我对这款软件的感觉并非如此。

首先说一句,Google桌面搜索是我在Windows XP上必装的一个软件,因为Windows本来并无这个功能,有了它一切都很方便。我用的最多的,就是两下Ctrl键,然后输入程序的几个字母来启动一个应用程序。

但是,Google桌面搜索在Windows下的优秀,是建立在Windows本身功能的相对弱小上的。Windows XP本身没有桌面搜索功能,因此Google占了便宜。可当Windows Vista里有了桌面搜索后,Google就只能通过法律途径来扩充自己的业务了。

相同的东西,到了UNIX平台未必就能得到一样的结果。UNIX平台下面,已经有了很多的桌面搜索工具,其中Beagle算是最著名的一款。Google桌面搜索的功能,与这些软件大致类似。况且,Beagle是一款开放源代码的软件,相对与Google桌面搜索,Beagle在UNIX用户中有着更高的威望。这就给Google桌面搜索的推广带来了一定的困难。

我不知道Google桌面搜索 for Mac OS X的使用效果如何,不过我猜测不会有人愿意使用。因为Mac OS X的SpotLight太强大了。不仅做到了无处不在的搜索,而且因为与系统结合紧密,它可以方便的让我们建立“智能文件夹”。只要我们给一个文件夹设定了条件,所有符合这个条件的文件就会动态的出现在这个文件夹里。这个功能似乎任何第三方桌面搜索软件都没有实现,应该就是无法做到与系统紧密结合的缘故吧。不管怎样,Google桌面搜索 for Mac OS X不会如for Windows版那么流行。

因此,如果Google桌面搜索想在UNIX上面流行,必须把软件做的更好。现在这种情况,虽然我对Google一向有好感,但我并不打算试用它。

而且我不理解为什么桌面搜索一定要有widget。Linux版的Google桌面搜索不带widget,被不止一个blog提到过,而且希望可以在下一个版本添加上。花儿开了甚至说“没有了widget相当于将桌面搜索削减掉一半”。我个人认为widget纯粹是中看不中用的东西,对UNIX用户尤其如此。而且,本来不算大的屏幕被占去了约五分之一的大小,也是比较让人不爽的。况且widget上的内容,我们基本上通过浏览器这种瘦客户端就可以搞定了,根本没有必要耗费系统资源在胖客户端里面获得。反正在Windows下我是从来不打开Google桌面搜索的。

总之,我认为Google不应当简单的把在Windows下获得成功的软件移植到UNIX系统上,毕竟两者的差别太大,无论技术上还是文化上。发动智慧,开发发挥UNIX系统效能的软件才能有更长的路可走。

我使用的工具之Wget

第一次得知Wget是在王垠的网页上,随后我下载下来试用,结果越用越爱,现在已经欲罢不能了。

Wget是一款源自UNIX的下载工具。虽然它是字符界面下的工具,但它的功能却很强劲。我只用它最简单的功能,就可以完全代替了Flashget和Webzip了。

不仅如此,相对于Windows下的下载工具来说,Wget十分小巧,完全版本只有940K,主程序文件只有252K大小。而且Wget是完全绿色的,不需要安装。

下面我来说说我平时使用Wget的方法。

我要下载一个文件,只要在命令行中简单的输入“wget 下载文件地址”就可以了。如果我要限速(其实Wget不像Flashget、迅雷那样抢带宽,我这里使用Wget下载完全没有卡的感觉)的话,输入“wget –limit-rate=20k 下载文件地址”就可以把速度限制为每秒20K了。如果我有个文件没有下完,要续传的话,使用“wget -c 下载文件地址”就OK了。

其实上面的功能对于要求不高的Windows用户来说意义并不大,Flashget也可以完成这些功能,或许还更方便。不过对我来说,Wget最强大之处,就是它的网站下载功能。

在浏览网页时,我遇到过不少好的网站。它们大多是一部教材,不过是分章节显示的。我要是想把它们存在硬盘上,只能一章一章的打开,然后保存。这样的话,章节一多,我就吃不消了。而且就算把每一章都保存下来,我阅读的时候也相当困难,因为每一页两端的“上一章”和“下一章”链接都没法使用,我还要手动打开下一章。

我在97年左右听说了Webzip工具可以把页面全部端下来,立即下载下来试用,结果当时的我没有搞成功,而且那个软件有使用限制,需要注册。当时的我也不懂可以从网上找注册码(网上注册码也少,而且那是还没有Google呢)。Webzip下载下来的页面很难看,而且还在页面里加上自己的广告,让人很不爽。

后来我完全忘记了这件事,直到我从王垠的网页上得知了这个工具。经过研究,我现在要下载一个网站,只要输入“wget -mp 网站地址”就可以了。Wget可以自动的找出相关页面,把它们一并下载下来。而且相关的链接也被自动修改,我在本地浏览这些页面,与在网上浏览它们一模一样。例如,我想下载《计算机程序的设计与解释》这本书(网址为:http://mitpress.mit.edu/sicp/full-text/book/book.html),就输入“wget -mp http://mitpress.mit.edu/sicp/full-text/book/book.html”就行了,完全不用在操心更多。

如果网站的作者修改了网站,我们怎样跟踪这些修改呢?我们只要把上面那个命令再输入一遍,Wget会找出被修改过的地方,然后同步到我们保存在本地的目录中。

最后,Wget可以从这里下载,马上开始吧。