笔者在过去的四年里一直致力于PHP应用的开发。PHP确实十分容易编写。但是PHP也有一些十分严重的缺陷。

  下面笔者会给出自己的理由,为什么PHP不适合于比小型业余网站更大的网站。

  1. 对递归的不良支持
  递归是一种函数调用自身的机制。这是一种强大的特性可以把某些复杂的东西变得很简单。有一个使用递归的例子是快速排序(quicksort)。不幸的是,PHP并不擅长递归。Zeev,一个PHP开发人员,说道:“PHP 4.0(Zend)对密集数据使用了栈方式,而不是使用堆方式。也就是说它能容忍的递归函数的数量限制和其他语言比起来明显少。”见bug 1901。这是一个很不好的借口。每一个编程语言都应该提供良好的递归支持。

  2. 许多PHP模块都不是线程安全的
  在几年前,Apache发布了Web服务器的2.0版。这个版本支持多线程模式,在这个模式下,软件一个一部分可以同时运行多个。PHP的发明者说PHP的核心是线程安全的,但是非核心模块不一定是。但是十次有九次,你想要在PHP脚本中使用这种模块,但这又使你的脚本不能合适Apache的多线程模式。这也是为什么PHP小组不推荐在Apache 2 的多线程模式下运行PHP。不良的多线程模式支持使PHP常被认为是Apache 2依然不流行的原因之一。

  请阅读这篇讨论: Slashdot: Sites Rejecting Apache 2?.

  3. PHP 由于商业原因而不健全
  通过使用缓存,PHP的性能可以陡增500%[见基准测试]。那么为什么缓存没有被构建在PHP中呢?因为Zend——PHP的制造者,它在销售自己的Zend Accelerator,所以当然,他们不想抛弃自己的商业产品这块肥肉。

  但是有另一个可选择的: APC. (Zend后来推出Zend Optimizer,免费的加速器——译者)

  4. 没有命名空间
  设想某个人制作了一个PHP模块用来阅读文件。模块中一个函数叫做read。然后另一个人的模块可以读取网页的,同样包含一个函数read。然后我们就无法同时使用这两个模块了,因为PHP不知道你要用哪个函数。

  但是有一个很简单的解决方法,那就是命名空间。曾经有人建议PHP5加入这个特性,但不幸得是他没有这么做。现在,没有命名空间,每个函数都必须加上模块名作为前缀,来避免名称冲突。这导致了函数名恐怖得长,例如xsl_xsltprocessor_transform_to_xml让代码难于书写和理解。

  5. 不标准的日期格式字符
  很多程序员对 日期格式字符 都很熟悉,它是从UNIX和C语言中来的。其他一些编程语言采用了这个标准,但是很奇怪的,PHP有它自己的一套完全不兼容的日期格式字符。在C中,“%j”表示一年中的当天,在PHP中他表示一个月中的当天。然而使事情更混乱的是:Smarty (一个很流行的PHP模版引擎)的 strftime 函数和 date_format 函数,却使用了C/UNIX的格式化字符。

  6. 混乱的许可证
  你也许认为PHP是免费的,所有的在手册中提到的PHP模块也是免费的。错了!例如,如果你想在PHP中生成PDF文件,你会在手册中发现两个模块:PDF 和 ClibPDF。但是这两个都是有商业许可证的。所以,你所使用的每个模块,你都要确保你同意他的许可证。

  7. 不一致的函数命名规则
  有些函数名称是有多个单词组成的。一般有三种单词组合的习惯:

直接拼接:getnumberoffiles
用下划线分开:get_number_of_files
骆驼法则:getNumberOfFiles
  大部分语言选择其中一中。但是PHP都用到了。

  例如,你想要把一些特殊字符转换成HTML实体,你会使用函数htmlentities (直接拼接单词)。如果你要使用相反的功能,你要用到它的小弟弟html_entity_decode。由于某些特殊的原因,这个函数名是由下划线分隔单词。怎么能这样呢?你知道有一个函数叫strpad。或者他是str_pad?每次你都要查看一下到底这个符号是什么或者直接等他出现一个错误。函数是不分大小写的,所以对于PHP来说rawurldecode 和RawUrlDecode之间没有什么区别。这也很糟糕,因为两个都使用到了同时他们看上去还不一样,混淆了阅读者。

  8. 魔法引用的地狱
  魔法引用(Magic quote)可以保护PHP脚本免受SQL注入攻击。这很好。但是出于某些原因,你可以在php.ini中关闭这个配置。所以你如果要写出一个有弹性的脚本,你总要检查魔法引用是开启还是关闭。这样一个“特性”应该让编程更简单,而事实上变得更复杂了。

  9. 缺少标准框架
  一个成长中的网站没有一个整体框架,最终会变成维护的噩梦。一个框架可以让很多工作变得简单。现在最流行的框架模型时MVC-模型,在其中表现层、业务逻辑和数据库访问都分离开了。

  很多PHP网站不使用MVC-模型。他们甚至没有一个框架。甚至现在有一些PHP框架同时你都可以自己写一个,关于PHP的文章和手册没有提高框架的一个字。同时JSP-开发人员使用像Struts的框架、ASP开发人员使用.Net,看起来好像这些概念都广泛被PHP开发人员所了解。这就说明了PHP实际上到底是多专业。

  总结
  什么问题?

  对于非常小的项目,它可以是一个十分符合人意的编程语言。但是对于较大的和更为复杂的项目,PHP就显出他的薄弱了。当你不断地摸索之后,你会发现笔者提到的某些问题的解决方案。所以,当解决方案已知之后,为什么不能修正他呢?另外为什么这些修补不在手册中提到呢?

  一个开源的语言十分流行是一件好事。但不幸得是,它不是一个伟大的语言。笔者希望所有的问题能有一天得到解决(也许在PHP6?),然后我们就将拥有一个开源语言,他既开源,又好用。

  到现在,当你要启动一个多于5个脚本页面的项目的时候,你最好考虑C#/ASP.Net 或者 Java/JSP或者也许Python同样是一个更好的选择。

终于!意大利凭借着良好的运气,在齐达内违规被红牌罚下场的情况下。点球6:4淘汰了法国队!赢得了2006年世界杯的冠军!

120分钟内,双方以1:1打平。其中法国队是凭借齐达内主罚的一个点球领先,但是最后在点球大战中,意大利罚中五个,但是法国队却罚失一个,遭到了淘汰。

也许意大利获得胜利是因为齐达内被红牌罚下,也许是因为特雷泽盖太熟悉布冯了而发失了点球,但是意大利最终还是赢得了胜利!成为了2006世界杯的冠军!

u1163p427t6d103411f172dt20060710050938.jpg
u1163p427t6d103414f172dt20060710051539.jpg

  FireFox自从1.5版开始,占用内存严重的问题似乎让不少忠实的FFFs(FireFox Fans)感到郁闷。虽然Mozilla官方一再否认存在这样的问题,但我相信用户并不是白痴,也不是没事闹着玩偏要去说FireFox的坏话。我自己的第二浏览器就是FireFox,虽然我不是FireFox的忠实爱好者,但相比之处,基于IE核心的TheWorld浏览器在速度及内存占用方面更有优势。但如果你真的不想放弃FireFox,下面有一个非常简单的方法可以让你把FireFox的内存占用降到最低。我自己试了一下似乎挺管用的,分享如下。

  这次也是Ryan,他基本上是一位大师级的FireFox专家,经常带来第一手FireFox动态及相关技巧,强烈推荐FireFox爱好者去他那里看一下(记得要开代理啦)。言归正传,这个方法非常的简单,无需安装任何额外的软件,只需几个步骤。我以FireFox1.5.0.1简体中文版为例:

1.打开FireFox,在地址栏里输入about:config
2.按右键,选择新建——>布尔
3.在弹出的框里输入config.trim_on_minimize
4.然后选True
5.重新启动FireFox

  重启后将FireFox最小化,现在按CTRL+ALT+DEL调出任务管理器看看FireFox的内存占用是不是低于10MB了?对,这个简单的优化能让你在最小化、最大化FireFox的时候,把它占用的多余内存都释放出来;并且当你刷新网页的时候,一部分内存也会被释放掉,达到占用更少内存的目的。其实这是IE7以及Opera早就默认具备的特性,只是FireFox还没有加上而已,相信以后的版本会改善这种情况的。

如何重新安装IIS,有的时候IIS出现严重错误,比如metabase坏掉,又没有备份….

一般的做法,直接在控制面板添加删除程序中卸载IIS重装。

这样并不是保险的做法,很多人在重装IIS后问题依旧。

所以建议在任何情况下都用以下步骤重新安装IIS:

1、把IIS卸载。
2、把 %windir%system32inetsrv 删除。
3、把%windir%iisX.log删除,X 是IIS版本。
4、把 inetpub 目录删除。
(以上操作可以在安全模式中进行。)
5、重装IIS。

第1天:选择什么样的DOCTYPE
作者:阿捷

前言

大家好!这个系列文章是按阿捷自己制作这个站点的过程编写的。之前阿捷也一直没有制作过一个真正符合web标准的网站。现在边参考国外资料边制作,同时把过程中的心得和经验记录下来,希望对大家有点帮助。好了,让我们开始吧

第一天

开始制作符合标准的站点,第一件事情就是声明符合自己需要的DOCTYPE。

查看本站首页原代码,可以看到第一行就是:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

打开一些符合标准的站点,例如著名web设计软件开发商Macromedia,设计大师Zeldman的个人网站,会发现同样的代码。而另一些符合标准的站点(例如k10k.net)的代码则如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

那么这些代码有什么含义?一定要放置吗?

什么是DOCTYPE

上面这些代码我们称做DOCTYPE声明。DOCTYPE是document type(文档类型)的简写,用来说明你用的XHTML或者HTML是什么版本。

其中的DTD(例如上例中的xhtml1-transitional.dtd)叫文档类型定义,里面包含了文档的规则,浏览器就根据你定义的DTD来解释你页面的标识,并展现出来。

要建立符合标准的网页,DOCTYPE声明是必不可少的关键组成部分;除非你的XHTML确定了一个正确的DOCTYPE,否则你的标识和CSS都不会生效。

XHTML 1.0 提供了三种DTD声明可供选择:

  • 过渡的(Transitional):要求非常宽松的DTD,它允许你继续使用HTML4.01的标识(但是要符合xhtml的写法)。完整代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  • 严格的(Strict):要求严格的DTD,你不能使用任何表现层的标识和属性,例如<br>。完整代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

  • 框架的(Frameset):专门针对框架页面设计使用的DTD,如果你的页面中包含有框架,需要采用这种DTD。完整代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

我们选择什么样的DOCTYPE

理想情况当然是严格的DTD,但对于我们大多数刚接触web标准的设计师来说,过渡的DTD(XHTML 1.0 Transitional)是目前理想选择(包括本站,使用的也是过渡型DTD)。因为这种DTD还允许我们使用表现层的标识、元素和属性,也比较容易通过W3C的代码校验。

注:上面说的"表现层的标识、属性"是指那些纯粹用来控制表现的tag,例如用于排版的表格、背景颜色标识等。在XHTML中标识是用来表示结构的,而不是用来实现表现形式,我们过渡的目的是最终实现数据和表现相分离。

打个比方:人体模特换衣服。模特就好比数据,衣服则是表现形式,模特和衣服是分离的,这样你就可以随意换衣服。而原来HTML4中,数据和表现是混杂在一起的,要一次性换个表现形式非常困难。呵呵,有点抽象了,这个概念需要我们在应用过程中逐步领会。

补充

DOCTYPE声明必须放在每一个XHTML文档最顶部,在所有代码和标识之上。

第2天:什么是名字空间

DOCTYPE声明好以后,接下来的代码是:

<html xmlns="http://www.w3.org/1999/xhtml" lang="gb2312">

通常我们HTML4.0的代码只是<html>,这里的"xmlns"是什么呢?

这个"xmlns"是XHTML namespace的缩写,叫做"名字空间"声明。名字空间是什么作用呢?阿捷自己的理解是:

由于xml允许你自己定义自己的标识,你定义的标识和其他人定义的标识有可能相同,但表示不同的意义。当文件交换或者共享的时候就容易产生错误。为了避免这种错误发生,XML采用名字空间声明,允许你通过一个网址指向来识别你的标识。例如:

小王和小李都定义了一个<book>标识,如果小王的名字空间是"http://www.xiaowang.com",小李的名字空间是"http://www.xiaoli.com",那么当两个文档交换数据时,也不会混淆<book>标识,因为它属于不同的名字空间。

更通俗的解释是:名字空间就是给文档做一个标记,告诉别人,这个文档是属于谁的。只不过这个"谁"用了一个网址来代替。

XHTML是HTML向XML过渡的标识语言,它需要符合XML文档规则,因此也需要定义名字空间。又因为XHTML1.0不能自定义标识,所以它的名字空间都相同,就是"http://www.w3.org/1999/xhtml"。如果你还不太理解也不要紧,目前阶段我们只要照抄代码就可以了。

后面的lang="gb2312",指定你的文档用简体中文。

第3天:定义语言编码

第三步是定义你的语言编码,类似这样:

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

为了被浏览器正确解释和通过W3C代码校验,所有的XHTML文档都必须声明它们所使用的编码语言,我们一般使用gb2312(简体中文),制作多国语言页面也有可能用Unicode、ISO-8859-1等,根据你的需要定义。

通常这样定义就可以了。但是要补充说明的是,XML文档并不是这样定义语言编码的,XML的定义方式如下:

<?xml version="1.0" encoding="gb2312"?>

你在Macromedia.com的首页代码第一行就可以看见类似的语句,这也是W3C推荐使用的定义方法。那为什么我们不直接采用这种方法呢?原因是一些浏览器对标准的支持不完善,不能正确理解这样的定义方法,比如IE6/windows。所以在目前过渡方案下,我们依然推荐使用meta方式。当然,你可以两种方法都写。

看本站源代码,你会发现语言编码定义的地方还多一句:

<meta http-equiv="Content-Language" content="gb2312" />

这是针对老版本浏览器写的,以保证各种浏览器都能正确解释页面。

注意:在上面声明语句的最后,你看到有一个斜杠"/",这和我们以前的HTML4.0的代码写法不同。原因是XHTML语法规则要求所有的标识都必须有开始和结束。例如<body>和</body>、<p>和</p>等,对于不成对的标识,要求在标识最后加一个空格,然后跟一个"/"。例如<br>写成<br />、<img>写成<img />,加空格的原因是避免代码连在一起浏览器不识别。

第4天:调用样式表

用web标准设计网站,过渡的方法主要是采用XHTML+CSS,css样式表是必不可少的。这就要求所有网页设计师必须熟练掌握CSS,如果你以前不常用,那么现在就开始学习吧。要制作符合web标准的网站,不懂CSS是设计不出漂亮的页面的。

事实上,所有表现的地方都需要用CSS来实现。我们以前都习惯用table来定位和布局,现在要改用DIV来定位和布局。这是思维方式的变化,一开始有些不习惯。呵呵,任何变革都会有阻力的,为了享受标准带来的"益处",放弃一些老的传统做法是值得的。

外部调用样式表

在以前,我们通常采用2种方法使用样式表:

  • 页面内嵌法:就是将样式表直接写在页面代码的head区。类似这样:

<style type="text/css"> <!– body { background : white ; color : black ; } –> </style>

  • 外部调用法:将样式表写在一个独立的.css文件中,然后在页面head区用类似以下代码调用。

<link rel="stylesheet" rev="stylesheet" href="css/style.css" type="text/css" media="all" />

在符合web标准的设计中,我们使用外部调用法,好处不言而喻,你可以不修改页面只修改.css文件而改变页面的样式。如果所有页面都调用同一个样式表文件,那么改一个样式表文件,可以改变所有文件的样式。

双表法调用样式表

查看某些符合标准站点的原代码,你可能看到,在调用样式表的地方有如下2句:

<link rel="stylesheet" rev="stylesheet" href="css/style.css" type="text/css" media="all" /> <style type="text/css" media="all">@import url( css/style01.css );</style>

为什么要写两次呢?

实际上一般情况下用外联法调用(就是第一句)就足够了。我这里使用双表调用只是一种示例。其中的"@import"命令用于输入样式表。而"@import"命令在netscape 4.0版本浏览器是无效的。也就是说,当你希望某些效果在netscape 4.0浏览器中隐藏,在4.0以上或其它浏览器中又显示的时候,你可以采用"@import"命令方法调用样式表。

第5天:head区的其他设置

这些技巧主要讲meta标签设置的,其实与符合web标准关系不大,只要注意在最后加"/"关闭标签就可以,但是既然是入门教程,就写得详细一点吧。

收藏夹小图标

如果你将本站加入收藏夹,可以看到在收藏夹网址之前的IE图标变成了本站特别的图标收藏夹小图标。要实现这样效果很简单,首先制作一个16×16的icon图标,命名为favicon.ico,放在根目录下。然后将下面的代码嵌入head区:

<link rel="icon" href="/favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />

为搜索引擎准备的内容

代码如下,替换成你自己站点的内容就可以:

  • 允许搜索机器人搜索站内所有链接。如果你想某些页面不被搜索,推荐采用robots.txt方法

<meta content="all" name="robots" />

  • 设置站点作者信息

<meta name="author" content="[email protected],阿捷" />

  • 设置站点版权信息

<meta name="Copyright" content="www.w3cn.org,自由版权,任意转载" />

  • 站点的简要介绍(推荐)

<meta name="description" content="新网页设计师。web标准的教程站点,推动web标准在中国的应用" />

  • 站点的关键词(推荐)

<meta content="designing, with, web, standards, xhtml, css, graphic, design, layout, usability, ccessibility, w3c, w3, w3cn, ajie" name="keywords" />

先介绍这么多。补充说明,前面花了5节都是讲head区的代码,实际页面内容还一字未提,呵呵,不要急,其实head区是非常重要的,看一个页面的head的代码就可以知道设计师是否够专业。

第6天:XHTML代码规范

在开始正式内容制作之前,我们必须先了解一下web标准有关代码的规范。了解这些规范可以帮助你少走弯路,尽快通过代码校验。

1.所有的标记都必须要有一个相应的结束标记

以前在HTML中,你可以打开许多标签,例如<p>和<li>而不一定写对应的</p>和</li>来关闭它们。但在XHTML中这是不合法的。XHTML要求有严谨的结构,所有标签必须关闭。如果是单独不成对的标签,在标签最后加一个"/"来关闭它。例如:

<br /><img height="80" alt="网页设计师" src="../images/logo_w3cn_200x80.gif" width="200" />

2.所有标签的元素和属性的名字都必须使用小写

与HTML不一样,XHTML对大小写是敏感的,<title>和<TITLE>是不同的标签。XHTML要求所有的标签和属性的名字都必须使用小写。例如:<BODY>必须写成<body> 。大小写夹杂也是不被认可的,通常dreamweaver自动生成的属性名字"onMouseOver"也必须修改成"onmouseover"。

3.所有的XML标记都必须合理嵌套

同样因为XHTML要求有严谨的结构,因此所有的嵌套都必须按顺序,以前我们这样写的代码:

<p><b></p>/b>

必须修改为:

<p><b></b>/p>

就是说,一层一层的嵌套必须是严格对称。

4.所有的属性必须用引号""括起来

在HTML中,你可以不需要给属性值加引号,但是在XHTML中,它们必须被加引号。例如:

<height=80>

必须修改为:

<height="80">

特殊情况,你需要在属性值里使用双引号,你可以用",单引号可以使用&apos;,例如:

<alt="say&apos;hello&apos;">

5.把所有<和&特殊符号用编码表示

  • 任何小于号(<),不是标签的一部分,都必须被编码为& l t ;
  • 任何大于号(>),不是标签的一部分,都必须被编码为& g t ;
  • 任何与号(&),不是实体的一部分的,都必须被编码为& a m p;

注:以上字符之间无空格。

6.给所有属性赋一个值

XHTML规定所有属性都必须有一个值,没有值的就重复本身。例如:

<td nowrap> <input type="checkbox" name="shirt" value="medium" checked>

必须修改为:

<td nowrap="nowrap"> <input type="checkbox" name="shirt" value="medium" checked="checked">

7.不要在注释内容中使“–”

“–”只能发生在XHTML注释的开头和结束,也就是说,在内容中它们不再有效。例如下面的代码是无效的:

<!–这里是注释———–这里是注释–>

用等号或者空格替换内部的虚线。

<!–这里是注释============这里是注释–>

以上这些规范有的看上去比较奇怪,但这一切都是为了使我们的代码有一个统一、唯一的标准,便于以后的数据再利用。

第7天:CSS入门

在了解XHTML代码规范后,我们就要进行CSS布局。首先先介绍一些CSS的入门知识。如果你已经很熟悉了,可以跳过这一节,直接进入下一节。

CSS是Cascading Style Sheets(层叠样式表)的缩写。是一种对web文档添加样式的简单机制,属于表现层的布局语言。

1.基本语法规范

分析一个典型CSS的语句:

p {COLOR:#FF0000;BACKGROUND:#FFFFFF}

  • 其中"p"我们称为"选择器"(selectors),指明我们要给"p"定义样式;
  • 样式声明写在一对大括号"{}"中;
  • COLOR和BACKGROUND称为"属性"(property),不同属性之间用分号";"分隔;
  • "#FF0000"和"#FFFFFF"是属性的值(value)。

2.颜色值

颜色值可以用RGB值写,例如:color : rgb(255,0,0),也可以用十六进制写,就象上面例子color:#FF0000。如果十六进制值是成对重复的可以简写,效果一样。例如:#FF0000可以写成#F00。但如果不重复就不可以简写,例如#FC1A1B必须写满六位。

3.定义字体

web标准推荐如下字体定义方法:

body { font-family : "Lucida Grande", Verdana, Lucida, Arial, Helvetica, 宋体,sans-serif; }

  • 字体按照所列出的顺序选用。如果用户的计算机含有Lucida Grande字体,文档将被指定为Lucida Grande。没有的话,就被指定为Verdana字体,如果也没有Verdana,就指定为Lucida字体,依此类推,;
  • Lucida Grande字体适合Mac OS X;
  • Verdana字体适合所有的Windows系统;
  • Lucida适合UNIX用户
  • "宋体"适合中文简体用户;
  • 如果所列出的字体都不能用,则默认的sans-serif字体能保证调用;

4.群选择器

当几个元素样式属性一样时,可以共同调用一个声明,元素之间用逗号分隔,: p, td, li { font-size : 12px ; }

5.派生选择器

可以使用派生选择器给一个元素里的子元素定义样式,例如这样:

li strong { font-style : italic; font-weight : normal;}

就是给li下面的子元素strong定义一个斜体不加粗的样式。

6.id选择器

用CSS布局主要用层"div"来实现,而div的样式通过"id选择器"来定义。例如我们首先定义一个层

<div id="menubar"></div>

然后在样式表里这样定义:

#menubar {MARGIN: 0px;BACKGROUND: #FEFEFE;COLOR: #666;}

其中"menubar"是你自己定义的id名称。注意在前面加"#"号。

id选择器也同样支持派生,例如:

#menubar p { text-align : right; margin-top : 10px; }

这个方法主要用来定义层和那些比较复杂,有多个派生的元素。

6.类别选择器

在CSS里用一个点开头表示类别选择器定义,例如:

.14px {color : #f60 ;font-size:14px ;}

在页面中,用class="类别名"的方法调用:

<span class="14px">14px大小的字体</span>

这个方法比较简单灵活,可以随时根据页面需要新建和删除。

7.定义链接的样式

CSS中用四个伪类来定义链接的样式,分别是:a:link、a:visited、a:hover和a : active,例如:

a:link{font-weight : bold ;text-decoration : none ;color : #c00 ;}
a:visited {font-weight : bold ;text-decoration : none ;color : #c30 ;}
a:hover {font-weight : bold ;text-decoration : underline ;color : #f60 ;}
a:active {font-weight : bold ;text-decoration : none ;color : #F90 ;}

以上语句分别定义了"链接、已访问过的链接、鼠标停在上方时、点下鼠标时"的样式。注意,必须按以上顺序写,否则显示可能和你预想的不一样。记住它们的顺序是“LVHA”。

呵呵,看了这么多,有点头晕吧,实际上CSS的语法规范还有很多,这里列的只是一些常用的,毕竟我们是循序渐进,不可能一口吃成胖子:)

第8天:CSS布局入门

CSS布局与传统表格(table)布局最大的区别在于:原来的定位都是采用表格,通过表格的间距或者用无色透明的GIF图片来控制文布局版块的间距;而现在则采用层(div)来定位,通过层的margin,padding,border等属性来控制版块的间距。

1.定义DIV

分析一个典型的定义div例子:

#sample{ MARGIN: 10px 10px 10px 10px;
PADDING:20px 10px 10px 20px;
BORDER-TOP: #CCC 2px solid;
BORDER-RIGHT: #CCC 2px solid;
BORDER-BOTTOM: #CCC 2px solid;
BORDER-LEFT: #CCC 2px solid;
BACKGROUND: url(images/bg_poem.jpg) #FEFEFE no-repeat right bottom;
COLOR: #666;
TEXT-ALIGN: center;
LINE-HEIGHT: 150%; WIDTH:60%; }

说明如下:

  • 层的名称为sample,在页面中用<div id="sample">就可以调用这个样式。
  • MARGIN是指层的边框以外留的空白,用于页边距或者与其它层制造一个间距。"10px 10px 10px 10px"分别代表"上右下左"(顺时针方向)四个边距,如果都一样,可以缩写成"MARGIN: 10px;"。如果边距为零,要写成"MARGIN: 0px;"。注意:当值是零时,除了RGB颜色值0%必须跟百分号,其他情况后面可以不跟单位"px"。MARGIN是透明元素,不能定义颜色。
  • PADDING是指层的边框到层的内容之间的空白。和margin一样,分别指定上右下左边框到内容的距离。如果都一样,可以缩写成"PADDING:0px"。单独指定左边可以写成"PADDING-LEFT: 0px;"。PADDING是透明元素,不能定义颜色。
  • BORDER是指层的边框,"BORDER-RIGHT: #CCC 2px solid;"是定义层的右边框颜色为"#CCC",宽度为"2px",样式为"solid"直线。如果要虚线样式可以用"dotted"。
  • BACKGROUND是定义层的背景。分2级定义,先定义图片背景,采用"url(../images/bg_logo.gif)"来指定背景图片路径;其次定义背景色"#FEFEFE"。"no-repeat"指背景图片不需要重复,如果需要横向重复用"repeat-x",纵向重复用"repeat-y",重复铺满整个背景用"repeat"。后面的"right bottom;"是指背景图片从右下角开始。如果没有背景图片可以只定义背景色BACKGROUND: #FEFEFE
  • COLOR用于定义字体颜色,上一节已经介绍过。
  • TEXT-ALIGN用来定义层中的内容排列方式,center居中,left居左,right居右。
  • LINE-HEIGHT定义行高,150%是指高度为标准高度的150%,也可以写作:LINE-HEIGHT:1.5或者LINE-HEIGHT:1.5em,都是一样的意思。
  • WIDTH是定义层的宽度,可以采用固定值,例如500px,也可以采用百分比,象这里的"60%"。要注意的是:这个宽度仅仅指你内容的宽度,不包含margin,border和padding。但在有些浏览器中不是这么定义的,需要你多试试。

下面是这个层的实际表现:

这里是演示内容,这里是演示内容,这里是演示内容,这里是演示内容,这里是演示内容,这里是演示内容,这里是演示内容,这里是演示内容,

这里是演示内容,这里是演示内容,

这里是演示内容,这里是演示内容,

这里是演示内容…

我们可以看到边框是2px的灰色,背景图片在右下没有重复,内容距离上和左边框20px,内容居中,一切和预想的一样。hoho,虽然不好看,但它是最基本的,掌握了它,你就已经学会一半的CSS布局技术了。就是这样,不算难吧!(另一半是什么?另一半是层与层之间的定位。我会在后面逐步讲解。)

2.CSS2盒模型

自从1996年CSS1的推出,W3C组织就建议把所有网页上的对像都放在一个盒(box)中,设计师可以通过创建定义来控制这个盒的属性,这些对像包括段落、列表、标题、图片以及层<div>。盒模型主要定义四个区域:内容(content)、边框距(padding)、边界(border)和边距(margin)。上面我们讲的sample层就是一个典型的盒。对于初学者,经常会搞不清楚margin,background-color,background-image,padding,content,border之间的层次、关系和相互影响。这里提供一张盒模型的3D示意图,希望便于你的理解和记忆。

 sacssbox3d.gif

3.辅助图片一律用背景处理

用XHTML+CSS布局,有一个技术一开始让你不习惯,应该说是一种思维方式与传统表格布局不一样,那就是:所有辅助图片都用背景来实现。类似这样:

BACKGROUND: url(images/bg_poem.jpg) #FEFEFE no-repeat right bottom;

尽管可以用<img>直接插在内容中,但这是不推荐的。这里的"辅助图片"是指那些不是作为页面要表达的内容的一部分,而仅仅用于修饰、间隔、提醒的图片。例如:相册中的图片、图片新闻中的图片,上面的3d盒模型图片都属于内容的一部分,它们可以用<img>元素直接插在页面里,而其它的类似logo,标题图片,列表前缀图片都必须采用背景方式或者其他CSS方式显示。

这样做的原因有2点:

  • 将表现与结构彻底相分离(参考阅读另一篇文章:《理解表现与结构相分离》),用CSS控制所有的外观表现,便于改版。
  • 使页面更具有易用性,更有亲和力。例如:盲人使用屏幕阅读机,用背景技术实现的图片就不会被朗读出来。
第9天:第一个CSS布局实例
 
接下来开始要真正设计布局了。和传统的方法一样,你首先要在脑海里有大致的轮廓构想,然后用photoshop把它画出来。你可能看到有关web标准的站点大都很朴素,因为web标准更关注结构和内容,实际上它与网页的美观没有根本冲突,你想怎么设计就怎么设计,用传统表格方法实现的布局,用DIV也可以实现。技术有一个成熟的过程,把DIV看成和TABLE一样的工具,如何运用就看你的想象力了。

注:在实际应用过程中,DIV在有些地方的确不如表格方便,比如背景色的定义。但任何事情都有得有失,取舍在于你的价值判断。好,不罗嗦了,我们开始:

1.确定布局

w3cn的最初设计草图如下:

y_w3cnhome.gif

用表格的设计方法的话,一般都是上中下三行布局yout_table.gif
。用DIV的话,我考虑使用三列来布局,成为这样ayout_css1.gif

2.定义body样式

先定义整个页面的body的样式,代码如下:

body { MARGIN: 0px;
PADDING: 0px;
BACKGROUND: url(../images/bg_logo.gif) #FEFEFE no-repeat right bottom;
FONT-FAMILY: ‘‘‘‘‘‘‘‘Lucida Grande‘‘‘‘‘‘‘‘,‘‘‘‘‘‘‘‘Lucida Sans Unicode‘‘‘‘‘‘‘‘,‘‘‘‘‘‘‘‘宋体‘‘‘‘‘‘‘‘,‘‘‘‘‘‘‘‘新宋体‘‘‘‘‘‘‘‘,arial,verdana,sans-serif;
COLOR: #666;
FONT-SIZE:12px;
LINE-HEIGHT:150%; }

以上代码的作用在上一天的教程有详细说明,大家应该一看就明白。定义了边框边距为0;背景颜色为#FEFEFE,背景图片为bg_logo.gif,图片位于页面右下角,不重复;定义了字体尺寸为12px;字体颜色为#666;行高150%。

3.定义主要的div

初次使用CSS布局,我决定采用固定宽度的三列布局(比自适应分辨率的设计简单,hoho,别说我偷懒,先实现简单的,增加点信心嘛!)。分别定义左中右的宽度为200:300:280,在CSS中如下定义:


/*定义页面左列样式*/
#left{ WIDTH:200px;
MARGIN: 0px;
PADDING: 0px;
BACKGROUND: #CDCDCD;
}
/*定义页面中列样式*/
#middle{ POSITION: absolute;
LEFT:200px;
TOP:0px;
WIDTH:300px;
MARGIN: 0px;
PADDING: 0px;
BACKGROUND: #DADADA;
}
/*定义页面右列样式*/
#right{ POSITION: absolute;
LEFT:500px;
TOP:0px;
WIDTH:280px;
MARGIN: 0px;
PADDING: 0px;
BACKGROUND: #FFF; }

注意:定义中列和右列div我都采用了POSITION: absolute;,然后分别定义了LEFT:200px;TOP:0px;LEFT:500px;TOP:0px;这是这个布局的关键,我采用了层的绝对定位。定义中间列距离页面左边框200px,距离顶部0px;定义右列距离页面左边框500px,距离顶部0px;。

这时候整个页面的代码是:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="gb2312">
<head>
<title>欢迎进入新《网页设计师》:web标准教程及推广</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta http-equiv="Content-Language" content="gb2312" />
<meta content="all" name="robots" />
<meta name="author" content="ajie(at)netease.com,阿捷" />
<meta name="Copyright" content="www.w3cn.org,自由版权,任意转载" />
<meta name="description" content="新网页设计师,web标准的教程站点,推动web标准在中国的应用." />
<meta content="web标准,教程,web, standards, xhtml, css, usability, accessibility" name="keywords" />
<link rel="icon" href="/favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="http://www.w3cn.org/favicon.ico" type="image/x-icon" />
<link rel="stylesheet" rev="stylesheet" href="css/style01.css" type="text/css" media="all" />
</head>
<body>
<div id="left">页面左列</div>
<div id="middle">页面中列</div>
<div id="right">页面右列</div>
</body>
</html>

这时候页面的效果仅仅可以看到三个并列的灰色矩形,和一个背景图。但是我希望高度是满屏的,怎么办呢?

4.100%自适应高度?

为了保持三列有同样的高度,我尝试在#left、#middle和#right中设置"height:100%;",但发现完全没有预想的自适应高度效果。经过一番尝试后,我只好给每个div一个绝对高度:"height:1000px;",并且随着内容的增加,需要不断修正这个值。难道没有办法自适应高度了吗?随着阿捷自己学习的深入,发现一个变通的解决办法,实际上根本不需要设置100%,我们已经被table思维禁锢太深了,这个办法在下一节的学习中详细介绍。

第10天:自适应高度

如果我们想在3列布局的最后加一行页脚,放版权之类的信息。就遇到必须对齐3列底部的问题。在table布局中,我们用大表格嵌套小表格的方法,可以很方便对齐三列;而用div布局,三列独立分散,内容高低不同,就很难对齐。其实我们完全可以嵌套div,把三列放进一个DIV中,就做到了底部对齐。下面是实现例子(白色背景框模拟一个页面):

Body

这里是#mainbox { MARGIN: 0px; WIDTH: 580px; BACKGROUND: #FFF; }包含了#menu,#sidebar和#content

这里是#content{ FLOAT: right; MARGIN: 1px 0px 2px 0px; PADDING:0px; WIDTH: 400px; BACKGROUND: #E0EFDE;}

这里是主要内容,根据内容自动适应高度

这里是主要内容,根据内容自动适应高度

这里是主要内容,根据内容自动适应高度

这个例子的页面主要代码如下:

<div id="header"></div>
<div id="mainbox">
    <div id="menu"></div>
    <div id="sidebar"></div>
    <div id="content"></div>
</div>
<div id="footer"></div>

具体样式表都写在相应版块里了。重点在于#mainbox层嵌套了#menu,#sidebar和#content三个层。当#content的内容增加,#content的高度就会增高,同时#mainbox的高度也会撑开,#footer层就自动下移。这样就实现了高度的自适应。

另外值得注意的是:#menu和#content都是浮动在页面右面"FLOAT: right;",#sidebar是浮动在#menu层的左面"FLOAT: left;",这是浮动法定位,还可以采用绝对定位来实现这样的效果。

这个方法存在另一个问题,就是侧列#sidebar的背景无法百分之百。一般的解决办法就是用body的背景色来填充满。(不能使用#mainbox的背景色,因为在Mozilla等浏览器中#mainbox的背景色失效。)

好了,主要的框架已经搭建完毕,剩下的工作只是往里面添砖加瓦。如果你希望尝试其他布局,推荐看看以下文章:

 

  为系统添加远程桌面 

  默认状态下,Windows 2000及其之前的系统并没有安装远程桌面,要想在这些系统中使用远程桌面,需要自己手工添加。 

  在Windows XP系统安装光盘的“SUPPORTTOOLS”目录中,可找到一个名为“Msrdpcli.exe”的程序,它实际上就是远程桌面连接登录器。将此程序复制到没有远程桌面的系统中并运行后,即可自动在系统中安装远程桌面连接程序。安装过程非常简单,连续点击“下一步”即可,当安装完成后,点击“开始→程序→附件→通讯→远程桌面连接”,便能登录网络连接远程计算机了。 

  让远程桌面支持多用户 

  Windows XP不支持多个用户同时登录远程桌面,当其他用户远程登录Windows XP时,主机上当前已登录的用户即会自动退出。不过在Windows XP SP2中提供了允许连接会话并发功能,可通过远程桌面进行多用户的同时登录,但其在默认状态下关闭了该项特性,需要通过修改注册表开启该功能。 

  打开注册表编辑器,依次展开“HKEY_LOCAL_MACHINESystem 

  CurrentControlSetControlTerminal ServerLicensing Core”分支,转到右侧窗口,在其中新建一个类型为DWORD的子键,将该键命名为“EnableConcurrentSessions”,并将键值设置为“1”,即可开启多用户登录功能。 

  在远程桌面中传输文件 

  在进行远程桌面操作时,有时需要在远程服务器与本地计算机传输文件,这是很麻烦的事。其实在远程桌面程序中内置了映射磁盘的功能,通过该功能便可以实现远程登录服务器时,自动将本地计算机的磁盘映射到远程服务器上,让传送文件变得更加简单快捷。 

  在“远程桌面连接程序”中展开“选项”,选择“本地资源”标签,钩选中“磁盘驱动器”。连接到远程登录到服务器上后,打开服务器的“我的电脑”,就会发现本地计算机的磁盘以及软驱、光驱都映射到了服务器上,这样传送文件便可像操作本地硬盘一样方便了。 

  远程桌面中使用快捷键 

  在本地可使用快捷键,远程桌面上同样也可以通过快捷键方便操作,例如:+键可切换当前运行程序,+键可显示“开始”菜单,而++键可在窗口和全屏之间切换客户端,+键则可显示Windows菜单。 

  另外,可在“远程桌面连接”窗口中单击“选项”按钮,在“本地资源”选项卡下的“键盘”栏中,选择“应用 Windows 键组合”到“远程计算机上”。这样就可将对当前系统的所有Windows快捷键操作,都应用到远程计算机的桌面上,使操作更加得心应手。 

  修改远程桌面连接端口

  远程桌面终端服务默认端口为“3389”,为防止他人进行恶意连接,就需要对默认端口进行更改。对此可打开注册表编辑器,依次展开“HKEY_LOCAL_MACHINESYSTEM 

  CurrentControlSetControlTerminal ServerWds
dpwdTds cp”分支,其下的“PortNumber”键值所对应的就是端口号,将其修改即可。上面设置完成后,需要再依次展开“HKEY_LOCAL_MACHINESYSTEM 

  CurrentControlSetControlTerminal ServerWinStationsRDP-Tcp”分支,同样将其下的“PortNumber”键值进行更改。 

  当更改了服务器的远程登录端口后,可在本地的“远程桌面连接程序”中设置连接的服务器地址,然后单击“连接设置→另存为”,导出并保存连接文件。然后用记事本打开导出的“*.rdp”文件,在其中添加语句“server port:i:端口号”,保存后导入连接即可。要注意,在Windows 2000中导出的是“.cns”文件,可打开后在其中找到“Server Port =3389”语句,将其默认的“3389”端口修改为与服务器相同的登录端口。 

  命令行下安装远程桌面 

  如果系统中没有安装远程桌面服务,可使用命令行方式进行手工添加。只需打开命令提示符窗口,在命令行下输入如下三行命令: 

  c:>echo [Components] > c:aa 

  c:>echo TSEnable = on >>c:aa 

  c:>sysocmgr/i:c:winntinfsysoc.inf /u:c:aa /q /r 

  执行后,即可完成远程桌面程序的安装。

linux 线程 进程经典文章
http://www.douzhe.com 作者:hjzgq 发表于:2003-08-06 11:54:40

有关linux下进程与线程看过很多文章,我觉的这篇可以说最经典

---------------------------------

一.基础知识:线程和进程

按照教科书上的定义,进程是资源管理的最小单位,线程是程序执行的最小单位。在操作系统设计上,从进程演化出线程,最主要的目的就是更好的支持SMP以及减小(进程/线程)上下文切换开销。

无论按照怎样的分法,一个进程至少需要一个线程作为它的指令执行体,进程管理着资源(比如cpu、内存、文件等等),而将线程分配到某个cpu上执行。一个进程当然可以拥有多个线程,此时,如果进程运行在SMP机器上,它就可以同时使用多个cpu来执行各个线程,达到最大程度的并行,以提高效率;同时,即使是在单cpu的机器上,采用多线程模型来设计程序,正如当年采用多进程模型代替单进程模型一样,使设计更简洁、功能更完备,程序的执行效率也更高,例如采用多个线程响应多个输入,而此时多线程模型所实现的功能实际上也可以用多进程模型来实现,而与后者相比,线程的上下文切换开销就比进程要小多了,从语义上来说,同时响应多个输入这样的功能,实际上就是共享了除cpu以外的所有资源的。

针对线程模型的两大意义,分别开发出了核心级线程和用户级线程两种线程模型,分类的标准主要是线程的调度者在核内还是在核外。前者更利于并发使用多处理器的资源,而后者则更多考虑的是上下文切换开销。在目前的商用系统中,通常都将两者结合起来使用,既提供核心线程以满足smp系统的需要,也支持用线程库的方式在用户态实现另一套线程机制,此时一个核心线程同时成为多个用户态线程的调度者。正如很多技术一样,"混合"通常都能带来更高的效率,但同时也带来更大的实现难度,出于"简单"的设计思路,Linux 从一开始就没有实现混合模型的计划,但它在实现上采用了另一种思路的"混合"。

在线程机制的具体实现上,可以在操作系统内核上实现线程,也可以在核外实现,后者显然要求核内至少实现了进程,而前者则一般要求在核内同时也支持进程。核心级线程模型显然要求前者的支持,而用户级线程模型则不一定基于后者实现。这种差异,正如前所述,是两种分类方式的标准不同带来的。

当核内既支持进程也支持线程时,就可以实现线程-进程的"多对多"模型,即一个进程的某个线程由核内调度,而同时它也可以作为用户级线程池的调度者,选择合适的用户级线程在其空间中运行。这就是前面提到的" 混合"线程模型,既可满足多处理机系统的需要,也可以最大限度的减小调度开销。绝大多数商业操作系统(如Digital Unix、Solaris、 Irix)都采用的这种能够完全实现POSIX1003.1c标准的线程模型。在核外实现的线程又可以分为"一对一"、"多对一"两种模型,前者用一个核心进程(也许是轻量进程)对应一个线程,将线程调度等同于进程调度,交给核心完成,而后者则完全在核外实现多线程,调度也在用户态完成。后者就是前面提到的单纯的用户级线程模型的实现方式,显然,这种核外的线程调度器实际上只需要完成线程运行栈的切换,调度开销非常小,但同时因为核心信号(无论是同步的还是异步的)都是以进程为单位的,因而无法定位到线程,所以这种实现方式不能用于多处理器系统,而这个需求正变得越来越大,因此,在现实中,纯用户级线程的实现,除算法研究目的以外,几乎已经消失了。

Linux内核只提供了轻量进程的支持,限制了更高效的线程模型的实现,但Linux着重优化了进程的调度开销,一定程度上也弥补了这一缺陷。目前最流行的线程机制LinuxThreads所采用的就是线程-进程"一对一"模型,调度交给核心,而在用户级实现一个包括信号处理在内的线程管理机制。Linux-LinuxThreads的运行机制正是本文的描述重点。

二.Linux 2.4内核中的轻量进程实现

最初的进程定义都包含程序、资源及其执行三部分,其中程序通常指代码,资源在操作系统层面上通常包括内存资源、IO资源、信号处理等部分,而程序的执行通常理解为执行上下文,包括对cpu的占用,后来发展为线程。在线程概念出现以前,为了减小进程切换的开销,操作系统设计者逐渐修正进程的概念,逐渐允许将进程所占有的资源从其主体剥离出来,允许某些进程共享一部分资源,例如文件、信号,数据内存,甚至代码,这就发展出轻量进程的概念。Linux内核在 2.0.x版本就已经实现了轻量进程,应用程序可以通过一个统一的clone()系统调用接口,用不同的参数指定创建轻量进程还是普通进程。在内核中, clone()调用经过参数传递和解释后会调用do_fork(),这个核内函数同时也是fork()、vfork()系统调用的最终实现:

<linux-2.4.20/kernel/fork.c>
int do_fork(unsigned long clone_flags, unsigned long stack_start,
struct pt_regs *regs, unsigned long stack_size)

其中的clone_flags取自以下宏的"或"值:

<linux-2.4.20/include/linux/sched.h>
#define CSIGNAL 0x000000ff /* signal mask to be sent at exit */
#define CLONE_VM 0x00000100 /* set if VM shared between processes */
#define CLONE_FS 0x00000200 /* set if fs info shared between processes */
#define CLONE_FILES 0x00000400 /* set if open files shared between processes */
#define CLONE_SIGHAND 0x00000800 /* set if signal handlers and blocked signals shared */
#define CLONE_PID 0x00001000 /* set if pid shared */
#define CLONE_PTRACE 0x00002000 /* set if we want to let tracing continue on the child too */
#define CLONE_VFORK 0x00004000 /* set if the parent wants the child to wake it up on mm_release */
#define CLONE_PARENT 0x00008000 /* set if we want to have the same parent as the cloner */
#define CLONE_THREAD 0x00010000 /* Same thread group? */
#define CLONE_NEWNS 0x00020000 /* New namespace group? */
#define CLONE_SIGNAL (CLONE_SIGHAND | CLONE_THREAD)

在do_fork ()中,不同的clone_flags将导致不同的行为,对于LinuxThreads,它使用(CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND)参数来调用clone()创建"线程",表示共享内存、共享文件系统访问计数、共享文件描述符表,以及共享信号处理方式。本节就针对这几个参数,看看Linux内核是如何实现这些资源的共享的。

1.CLONE_VM

do_fork ()需要调用copy_mm()来设置task_struct中的mm和active_mm项,这两个mm_struct数据与进程所关联的内存空间相对应。如果do_fork()时指定了CLONE_VM开关,copy_mm()将把新的task_struct中的mm和active_mm设置成与 current的相同,同时提高该mm_struct的使用者数目(mm_struct::mm_users)。也就是说,轻量级进程与父进程共享内存地址空间,由下图示意可以看出mm_struct在进程中的地位:

2.CLONE_FS

task_struct 中利用fs(struct fs_struct *)记录了进程所在文件系统的根目录和当前目录信息,do_fork()时调用copy_fs()复制了这个结构;而对于轻量级进程则仅增加fs->count计数,与父进程共享相同的fs_struct。也就是说,轻量级进程没有独立的文件系统相关的信息,进程中任何一个线程改变当前目录、根目录等信息都将直接影响到其他线程。

3.CLONE_FILES

一个进程可能打开了一些文件,在进程结构task_struct中利用files(struct files_struct *)来保存进程打开的文件结构(struct file)信息,do_fork()中调用了copy_files()来处理这个进程属性;轻量级进程与父进程是共享该结构的, copy_files()时仅增加files->count计数。这一共享使得任何线程都能访问进程所维护的打开文件,对它们的操作会直接反映到进程中的其他线程。

4.CLONE_SIGHAND

每一个Linux进程都可以自行定义对信号的处理方式,在 task_struct中的sig(struct signal_struct)中使用一个struct k_sigaction结构的数组来保存这个配置信息,do_fork()中的copy_sighand()负责复制该信息;轻量级进程不进行复制,而仅仅增加signal_struct:: count计数,与父进程共享该结构。也就是说,子进程与父进程的信号处理方式完全相同,而且可以相互更改。

do_fork()中所做的工作很多,在此不详细描述。对于SMP系统,所有的进程fork出来后,都被分配到与父进程相同的cpu上,一直到该进程被调度时才会进行cpu选择。

尽管Linux支持轻量级进程,但并不能说它就支持核心级线程,因为Linux的"线程"和"进程"实际上处于一个调度层次,共享一个进程标识符空间,这种限制使得不可能在Linux上实现完全意义上的POSIX线程机制,因此众多的Linux线程库实现尝试都只能尽可能实现POSIX的绝大部分语义,并在功能上尽可能逼近。

三.LinuxThread的线程机制

LinuxThreads是目前Linux平台上使用最为广泛的线程库,由Xavier Leroy ([email protected])负责开发完成,并已绑定在GLIBC中发行。它所实现的就是基于核心轻量级进程的"一对一"线程模型,一个线程实体对应一个核心轻量级进程,而线程之间的管理在核外函数库中实现。

1.线程描述数据结构及实现限制

LinuxThreads 定义了一个struct _pthread_descr_struct数据结构来描述线程,并使用全局数组变量__pthread_handles来描述和引用进程所辖线程。在__pthread_handles中的前两项,LinuxThreads定义了两个全局的系统线程: __pthread_initial_thread和__pthread_manager_thread,并用 __pthread_main_thread表征__pthread_manager_thread的父线程(初始为 __pthread_initial_thread)。

struct _pthread_descr_struct是一个双环链表结构,__pthread_manager_thread所在的链表仅包括它一个元素,实际上,__pthread_manager_thread是一个特殊线程,LinuxThreads仅使用了其中的errno、p_pid、p_priority等三个域。而__pthread_main_thread 所在的链则将进程中所有用户线程串在了一起。经过一系列pthread_create()之后形成的__pthread_handles数组将如下图所示:

图2 __pthread_handles数组结构

新创建的线程将首先在__pthread_handles数组中占据一项,然后通过数据结构中的链指针连入以__pthread_main_thread为首指针的链表中。这个链表的使用在介绍线程的创建和释放的时候将提到。

LinuxThreads 遵循POSIX1003.1c标准,其中对线程库的实现进行了一些范围限制,比如进程最大线程数,线程私有数据区大小等等。在LinuxThreads的实现中,基本遵循这些限制,但也进行了一定的改动,改动的趋势是放松或者说扩大这些限制,使编程更加方便。这些限定宏主要集中在 sysdeps/unix/sysv/linux/bits/local_lim.h(不同平台使用的文件位置不同)中,包括如下几个:

每进程的私有数据key数,POSIX定义_POSIX_THREAD_KEYS_MAX为128,LinuxThreads使用 PTHREAD_KEYS_MAX,1024;私有数据释放时允许执行的操作数,LinuxThreads与POSIX一致,定义 PTHREAD_DESTRUCTOR_ITERATIONS为4;每进程的线程数,POSIX定义为64,LinuxThreads增大到1024 (PTHREAD_THREADS_MAX);线程运行栈最小空间大小,POSIX未指定,LinuxThreads使用 PTHREAD_STACK_MIN,16384(字节)。

2.管理线程

"一对一"模型的好处之一是线程的调度由核心完成了,而其他诸如线程取消、线程间的同步等工作,都是在核外线程库中完成的。在LinuxThreads中,专门为每一个进程构造了一个管理线程,负责处理线程相关的管理工作。当进程第一次调用pthread_create()创建一个线程的时候就会创建(__clone())并启动管理线程。

在一个进程空间内,管理线程与其他线程之间通过一对"管理管道(manager_pipe[2])"来通讯,该管道在创建管理线程之前创建,在成功启动了管理线程之后,管理管道的读端和写端分别赋给两个全局变量__pthread_manager_reader和 __pthread_manager_request,之后,每个用户线程都通过__pthread_manager_request向管理线程发请求,但管理线程本身并没有直接使用__pthread_manager_reader,管道的读端(manager_pipe[0])是作为__clone ()的参数之一传给管理线程的,管理线程的工作主要就是监听管道读端,并对从中取出的请求作出反应。

创建管理线程的流程如下所示:
(全局变量pthread_manager_request初值为-1)

图3 创建管理线程的流程

初始化结束后,在__pthread_manager_thread中记录了轻量级进程号以及核外分配和管理的线程id, 2*PTHREAD_THREADS_MAX+1这个数值不会与任何常规用户线程id冲突。管理线程作为pthread_create()的调用者线程的子线程运行,而pthread_create()所创建的那个用户线程则是由管理线程来调用clone()创建,因此实际上是管理线程的子线程。(此处子线程的概念应该当作子进程来理解。)

__pthread_manager()就是管理线程的主循环所在,在进行一系列初始化工作后,进入while(1)循环。在循环中,线程以2秒为timeout查询(__poll())管理管道的读端。在处理请求前,检查其父线程(也就是创建 manager的主线程)是否已退出,如果已退出就退出整个进程。如果有退出的子线程需要清理,则调用pthread_reap_children()清理。

然后才是读取管道中的请求,根据请求类型执行相应操作(switch-case)。具体的请求处理,源码中比较清楚,这里就不赘述了。

3.线程栈

在LinuxThreads中,管理线程的栈和用户线程的栈是分离的,管理线程在进程堆中通过malloc()分配一个THREAD_MANAGER_STACK_SIZE字节的区域作为自己的运行栈。

用户线程的栈分配办法随着体系结构的不同而不同,主要根据两个宏定义来区分,一个是NEED_SEPARATE_REGISTER_STACK,这个属性仅在IA64平台上使用;另一个是FLOATING_STACK宏,在i386等少数平台上使用,此时用户线程栈由系统决定具体位置并提供保护。与此同时,用户还可以通过线程属性结构来指定使用用户自定义的栈。因篇幅所限,这里只能分析i386平台所使用的两种栈组织方式:FLOATING_STACK方式和用户自定义方式。

在FLOATING_STACK方式下,LinuxThreads利用mmap()从内核空间中分配8MB空间(i386系统缺省的最大栈空间大小,如果有运行限制(rlimit),则按照运行限制设置),使用mprotect()设置其中第一页为非访问区。该 8M空间的功能分配如下图:

图4 栈结构示意

低地址被保护的页面用来监测栈溢出。

对于用户指定的栈,在按照指针对界后,设置线程栈顶,并计算出栈底,不做保护,正确性由用户自己保证。

不论哪种组织方式,线程描述结构总是位于栈顶紧邻堆栈的位置。

4.线程id和进程id

每个LinuxThreads线程都同时具有线程id和进程id,其中进程id就是内核所维护的进程号,而线程id则由LinuxThreads分配和维护。

__pthread_initial_thread 的线程id为PTHREAD_THREADS_MAX,__pthread_manager_thread的是 2*PTHREAD_THREADS_MAX+1,第一个用户线程的线程id为PTHREAD_THREADS_MAX+2,此后第n个用户线程的线程 id遵循以下公式:

tid=n*PTHREAD_THREADS_MAX+n+1

这种分配方式保证了进程中所有的线程(包括已经退出)都不会有相同的线程id,而线程id的类型pthread_t定义为无符号长整型(unsigned long int),也保证了有理由的运行时间内线程id不会重复。

从线程id查找线程数据结构是在pthread_handle()函数中完成的,实际上只是将线程号按PTHREAD_THREADS_MAX取模,得到的就是该线程在__pthread_handles中的索引。

5.线程的创建

在pthread_create ()向管理线程发送REQ_CREATE请求之后,管理线程即调用pthread_handle_create()创建新线程。分配栈、设置thread 属性后,以pthread_start_thread()为函数入口调用__clone()创建并启动新线程。pthread_start_thread ()读取自身的进程id号存入线程描述结构中,并根据其中记录的调度方法配置调度。一切准备就绪后,再调用真正的线程执行函数,并在此函数返回后调用 pthread_exit()清理现场。

6.LinuxThreads的不足

由于Linux内核的限制以及实现难度等等原因,LinuxThreads并不是完全POSIX兼容的,在它的发行README中有说明。

1)进程id问题

这个不足是最关键的不足,引起的原因牵涉到LinuxThreads的"一对一"模型。

Linux 内核并不支持真正意义上的线程,LinuxThreads是用与普通进程具有同样内核调度视图的轻量级进程来实现线程支持的。这些轻量级进程拥有独立的进程id,在进程调度、信号处理、IO等方面享有与普通进程一样的能力。在源码阅读者看来,就是Linux内核的clone()没有实现对 CLONE_PID参数的支持。

在内核do_fork()中对CLONE_PID的处理是这样的:

if (clone_flags & CLONE_PID) {
if (current->pid)
goto fork_out;
}

这段代码表明,目前的Linux内核仅在pid为0的时候认可CLONE_PID参数,实际上,仅在SMP初始化,手工创建进程的时候才会使用CLONE_PID参数。

按照POSIX定义,同一进程的所有线程应该共享一个进程id和父进程id,这在目前的"一对一"模型下是无法实现的。

2)信号处理问题

由于异步信号是内核以进程为单位分发的,而LinuxThreads的每个线程对内核来说都是一个进程,且没有实现"线程组",因此,某些语义不符合POSIX标准,比如没有实现向进程中所有线程发送信号,README对此作了说明。

如果核心不提供实时信号,LinuxThreads将使用SIGUSR1和SIGUSR2作为内部使用的restart和cancel信号,这样应用程序就不能使用这两个原本为用户保留的信号了。在Linux kernel 2.1.60以后的版本都支持扩展的实时信号(从_SIGRTMIN到 _SIGRTMAX),因此不存在这个问题。

某些信号的缺省动作难以在现行体系上实现,比如SIGSTOP和SIGCONT,LinuxThreads只能将一个线程挂起,而无法挂起整个进程。

3)线程总数问题

LinuxThreads将每个进程的线程最大数目定义为1024,但实际上这个数值还受到整个系统的总进程数限制,这又是由于线程其实是核心进程。

在kernel 2.4.x中,采用一套全新的总进程数计算方法,使得总进程数基本上仅受限于物理内存的大小,计算公式在kernel/fork.c的fork_init()函数中:

max_threads = mempages / (THREAD_SIZE/PAGE_SIZE) / 8

在i386 上,THREAD_SIZE=2*PAGE_SIZE,PAGE_SIZE=2^12(4KB),mempages=物理内存大小/PAGE_SIZE,对于256M的内存的机器,mempages=256*2^20/2^12=256*2^8,此时最大线程数为4096。

但为了保证每个用户(除了root)的进程总数不至于占用一半以上物理内存,fork_init()中继续指定:

init_task.rlim[RLIMIT_NPROC].rlim_cur = max_threads/2;
init_task.rlim[RLIMIT_NPROC].rlim_max = max_threads/2;

这些进程数目的检查都在do_fork()中进行,因此,对于LinuxThreads来说,线程总数同时受这三个因素的限制。

4)管理线程问题

管理线程容易成为瓶颈,这是这种结构的通病;同时,管理线程又负责用户线程的清理工作,因此,尽管管理线程已经屏蔽了大部分的信号,但一旦管理线程死亡,用户线程就不得不手工清理了,而且用户线程并不知道管理线程的状态,之后的线程创建等请求将无人处理。

5)同步问题

LinuxThreads中的线程同步很大程度上是建立在信号基础上的,这种通过内核复杂的信号处理机制的同步方式,效率一直是个问题。

6)其他POSIX兼容性问题

Linux中很多系统调用,按照语义都是与进程相关的,比如nice、setuid、setrlimit等,在目前的LinuxThreads中,这些调用都仅仅影响调用者线程。

7)实时性问题

线程的引入有一定的实时性考虑,但LinuxThreads暂时不支持,比如调度选项,目前还没有实现。不仅LinuxThreads如此,标准的Linux在实时性上考虑都很少。

数百种Windows软件的替代品列表

程序所执行任务的描述 Windows Linux
1) 网络连接
网页浏览器 微软 IE,网景 Netscape / Mozilla, Opera [私有],Firebird,…… 1) Netscape/ Mozilla
2) Galeon.
3) Konqueror.
4) Opera.[私有]
5) Firebird.
6) Nautilus
7) Epiphany
8) Links.(用 “-g”开关)
9) Dillo(俄语补丁 – 在此
10) Encompass
字符终端上的网页浏览器 1) Links
2) Lynx
3) Xemacs + w3.
1) Links
2) ELinks
3) Lynx
4) w3m
5) Xemacs + w3
Email 客户端 Outlook Express, Netscape / Mozilla , The Bat,Eudora, Becky, Datula, Sylpheed/ Sylpheed-claws,Opera 1) Evolution
2) Netscape / Mozilla 传呼
3) Sylpheed / Sylpheed-claws.
4) Kmail.
5) Gnus.
6) Balsa
7) Bynari Insight GroupWare Suite[私有]
8) Arrow.
9) Gnumail.
10) Althea.
11) Liamail.
12) Aethera.
13) MailWarrior.
14) Opera.
Email 客户端 / 微软 Outlook 风格的个人信息管理器 Outlook 1) Evolution
2) Bynari Insight GroupWare Suite.[私有]
3) Aethera.
4) Sylpheed.
5) Sylpheed-claws
Email 客户端(The Bat 风格) The Bat 1) Sylpheed.
2) Sylpheed-claws.
3) Kmail.
4) Gnus.
5) Balsa
字符终端上的 Email 客户端 Mutt [de],Pine, Pegasus, Emacs 1) Pine[非免费]
2) Mutt
3) Gnus.
4) Elm
5) Emacs
新闻阅读器 1) Agent[私有]
2) Free Agent
3) Xnews
4) Outlook
5) Netscape / Mozilla
6) Opera [私有]
7) Sylpheed / Sylpheed-claws
8) Dialog
9) Gravity
1) Knode.
2) Pan.
3) NewsReader
4) Netscape / Mozilla
5) Opera[私有]
6) Sylpheed / Sylpheed-claws.
――用于字符终端的有:
7) Pine. [非免费]
8) Mutt
9) Gnus
10) tin
11) slrn
12) Xemacs
地址簿 Outlook 1) Rubrica
文件下载工具 Flashget, Go!zilla, Reget, Getright, DAP, Wget, WackGet, MassDownloader, … 1) Downloader for X.
2) Caitoo(旧称 Kget)
3) Prozilla
4) Wget (用于字符终端,标准的)
5) Wget 图形用户界面:Kmago, Gnome Transfer Manager, QTget, Xget, …
6) Aria.
7) Axel
8) Download Accelerator Plus.
9) GetLeft
10) Lftp
网站下载工具 Teleport Pro, Httrack,Wget,… 1) Httrack.
2) WWW Offline Explorer.
3) Wget(用于字符终端,标准的),图形用户界面的有: Kmago, QTget, Xget, …
4) Downloader for X.
5) Pavuk.
6) XSiteCopy.
7) GetLeft
8) Curl(用于字符终端)
9) Khttrack
FTP 客户程序 Bullet Proof FTP, CuteFTP, WSFTP, SmartFTP, … 1) Gftp.
2) Konqueror.
3) KBear.
4) IglooFTP[私有]
5) Nftp
6) Wxftp
7) AxyFTP
8) mc(cd ftp://…)
9) tkFTP
10) Yafc
11) Dpsftp.(dead project)
字符终端上的 FTP 客户程序 FTP in Far, ftp.exe, Ncftp 1) Ncftp.
2) Lftp.
3) Avfs.(从任意程序可用:/#ftp:… 访问站点资源)
IRC 客户端 Mirc, Klient, VIRC, Xircon, Pirch, XChat 1) Xchat.
2) KVirc.
3) Irssi
4) BitchX.
5) Ksirc.
6) Epic
7) Sirc
8) PJIRC.
不用服务器的局域网聊天客户程序 1) QuickChat
2) Akeni
3) PonyChat
4) iChat
1) talk(用于字符终端),ktalk
2) Akeni
3) Echat
4) write, wall(同一台机器的用户之间进行聊天)
用 Windows 机器在局域网进行传呼 WinPopUp smbclient(用于字符终端),图形用户界面的有:
1) LinPopUp 2
2) Kpopup
3) Kopete
即时传呼客户程序 ICQ Lite, ICQ Corp, MSN, AIM, Yahoo,…
Trillian ICQ(自由软件,可以替代所有通常的即时传呼客户程序),Miranda, Gaim
1) Licq (ICQ)
2) Centericq(包括近乎所有的即时传呼协议,用于字符终端)
3) Alicq (ICQ).
4) Micq (ICQ).
5) GnomeICU (ICQ).
6) Gaim.(包括近乎所有的即时传呼协议)
7) Ayttm.(包括近乎所有的即时传呼协议)
8) Kopete
9) Everybuddy
10) Simple Instant Messenger.
11) ImiciMessenger
12) Ickle (ICQ).
13) aMSN (MSN).
14) Kmerlin (MSN).
15) Kicq (ICQ).
16) YSM(ICQ,用于字符终端)
17) kxicq.
18) 雅虎寻呼 Unix 版
19) Kmess (MSN).
20) AIM
21) MSNre(用于字符终端)
Jabber 即时传呼客户程序 JAJC,Tkabber(+activestate tcl), Psi,Exodus, WinJab, myJabber, RhymBox,Rival, Skabber, TipicIM, Vista, Yabber, Miranda, Gaim, Akeni 寻呼 Jabber 版 1) Tkabber
2) Gabber
3) Psi
4) Gaim
5) Centericq(用于字符终端)
6) Ayttm.
7) Akeni 寻呼 Jabber 版
监控网站和邮箱、显示新闻主题或整篇文章的工具 WatzNew 1) Web Secretary
2) Knewsticker& korn.
3) Mozilla (???).
4) watch -n seconds lynx -dump
视频、音频会议 NetMeeting 1) GnomeMeeting
2) vat/vic/wb
3) rat/wbd/nte
4) NeVoT
5) IVS
语音通讯(声讯、通话工具) Speak Freely 1) Speak Freely for Unix
2) TeamSpeak
防火墙(包过滤工具) BlackICE, ATGuard, ZoneAlarm, Agnitum OutpostFirewall, WinRoute Pro, NortonInternet Security, Sygate PersonalFirewall PRO,Kerio Personal Firewall, … iptables 或比较过时的 ipchains (用于字符终端,标准的)。前端程序有:
1) Kmyfirewall.
2) Easy Firewall Generator
3) Firewall Builder
4) Shorewall
5) Guarddog
6) FireStarter
7) Smoothwall[私有]
8) IPCop.
9) Zorp.
IDS(入侵检测系统) 1) BlackICE
2) Agnitum Outpost Firewall
3) Tripwire [私有]
4) Kerio Personal Firewall
1) Snort
2) Portsentry / Hostsentry /Logsentry
3) Tripwire [GPL].
4) Tripwall.
5) AIDE.
6) ViperDB.
7) Integrit.
8) CerberusIntrusion Detection System
9) MIDASNMS
端口扫描探测工具 ??? 1) Pkdump
更加安全地制作系统的工具 ??? 1) Bastille
2) Linux Security Auditing Tool
可视化路由(Visual route) VisualRoute [私有] 1) Xtraceroute.
2) VisualRoute.[私有]
3) Mtr.
4) Geotrace.
信文(广告、弹出窗口)过滤工具 Proxomitron, ATGuard, Agnitum Outpost Firewall, Privoxy, MS ISA server, Guidescope, … 1) DansGuardian.
2) Squid.
3) Squidguard
4) Privoxy
5) JunkBuster
6) Zorp.
7) Fork
8) Redirector
网络流量调整、控制工具 WinRoute Pro,… 1) IPRelay
2) CBQ (来自 iproute2 软件包)
3) tc (来自 iproute2 软件包)
4) LARTC
网络流量结算工具 Netstat, Tmeter,… 1) Tcp4me
2) Getstatd
3) Ipacct
4) Ipac-ng
5) Ipaudit
6) Lanbilling
7) SARG (fullSquid traffic).
8) Talinux
9) NetUP UserTrafManager.
10) MRTG
11) NetTop
对等网络客户机/服务器、文件共享工具(p2p) Morpheus (Gnutella), WinMX, Napster, KaZaA(Fasttrack), eDonkey [私有], eMule, TheCircle, Bittorrent, SoulSeek, Direct Connect 1) Mldonkey(eDonkey, Soulseek, Fasttrack, Gnutella, Open Napster, Direct Connect, BitTorrent)
2) LimeWire. (Gnutella)
3) Lopster. (OpenNAP)
4) Gnapster.(OpenNAP)
5) eDonkey.(eDonkey) [私有]
6) cDonkey. (eDonkey)
7) Gift client / server / fasttrackplugin (Fasttrack)
8) ed2k_gui.
9) Gtk-Gnutella.(Gnutella)
10) Qtella. (Gnutella)
11) Mutella. (Gnutella,console)
12) TheCircle
13) Freenet(完全匿名的 p2p)
14) GNUnet
15) Lmule. (eDonkey)
16) Xmule. (eDonkey)
17) Bittorrent.
18) PySoulSeek(Soulseek).
19) Loophole. (WinMX)[私有]
20) Direct Connect(直接连接)
21) QuickDC(快速直接连接)
22) OverNet
23) Apollon
24) GrapeWine(完全匿名的 p2p)
25) Snark.(Bittorrent)
"Hotline" p2p 协议客户机/服务器工具 ??? 客户程序:
1) Gtkhx
2) Fidelio
3) GHX[私有]
服务器程序:
1) Synapse
2) HSX
与具有很多功能的语音调制解调器一起工作的程序,这些功能包括从应答机(answerback)和AON 到传真设备等一系列功能 Venta Fax, PrimaFax 1) Gfax.(???)
2) PrimaFax.[私有] 99$]
3) mgetty + voice + sendfax.
4) vgetty.
收发传真 WinFax 1) HylaFax
2) Fax2Send. [私有]
3) Efax
4) VSI-FAX.[私有]
拨号上网 Vdialer, etc 1) Kppp
2) X-isp
3) wvdial(前端:X-wvdial,kvdial, gtkdial)
4) Gppp
5) Kinternet.
6) Rp3.
7) pppconfig + pon + poff.
8) Modem Lights.
9) Netcount(用于字符终端)
FTN 编辑器 Golded 1) Golded.
2) Golded+.
3) Msged
4) Qded
FTN tosser(投手) FastEcho, hpt 1) hpt.
2) CrashEcho.
3) Qecho
4) CrashMailII
5) Fidogate – gate to news.
6) ifmail – gate tonews.
FTN mailer(邮寄者) SF-Mail, T-Mail 1) ifcico.
2) qico.
3) Bforce
4) Binkd
远程管理软件 1) VNC,(VirtualNetwork Computing,似乎应当是虚拟网络控制台Console)
2) Remote Administrator (Radmin)[私有]
3) Remote Assistance [私有]
4) Symantec pcAnywhere [私有]
5) Windows 终端服务器[私有]
6) Rdesktop [私有]
7)Radmin [私有]
8) PC-Duo [私有]
9) Huey PC Remote Control(只有Windows NT 版的) [私有]
10) Timbuktu Pro [私有]
11) LapLink [私有]
12) GoToMyPC [私有]
13) Bo2k and other trojans
1) VNC,虚拟网络控制台
2) ssh
3) 远程管理嵌于XFree86内部
4) 远程管理嵌于KDE3.1内部(“桌面共享”)
5) Rdesktop Client
6) rsh / rlogin.
7) telnet.
8) Gtelnet.
9) x0rfbserver
10) KDE 通用远程桌面.
用调制解调器传输文件 HyperTerminal, Terminate, etc 1) Minicom + lrzcz + Kermit.
2) Msterm.
3) Xtel
4) uucp.
5) lrzsz + cufrom uucp.
安全Shell登录(ssh) Putty, Irlex, cygwin + ssh 1) Kssh.
2) ssh / openssh
3) GTelnet.(Telnet, SSH, Rlogin)
网络监控工具 Dumeter, Netmedic 1) Gkrellm
2) Big Brother
3) Etherape
4) Nagios
5) Tkined
6) MRTG
7) Rrdtool.
8) PIKT
9) Autostatus
10) bcnu
11) mon
12) Sysmon
13) Spong
14) SNIPS
15) iptraf(用于字符终端)
16) Ksysguard.
17) OpenNMS
18) tcpdump.
网络维护工具 HP OpenView, MS SMS, Tivoli 1) HP OpenView agents[私有]
2) Big Brother
3) Cheops
4) Tkined
5) OpenNMS
网络协议分析、嗅探工具 Sniffer Pro,EtherPeek (TokenPeek, AiroPeek), Windump,Ethereal, MSNetwork Monitor, Iris, LanExplorer, NetSniffer,Snort, … 1) Ethereal
2) Tcpdump
3) Etherape
4) Ntop
5) ipxdump. (+ipxparse for parsing)
6) Snort.
安全性扫描器 ShadowScan, ISS, Retina, Internet Scanner 1) Nessus
2) Nmap
路由选择 MS RRAS 1) iproute2 + iptables.
2) GateD.[私有]
3) GNU Zebra
以太网、IP 测试用工具和库 lcrzo lcrzo
IP 电话 Buddyphone [私有], Cisco SoftPhone 1) GNU Bayonne
2) Openh323
3) OpenPhone
4) tkPhone
5) NauPhone
数据、文件共享工具 Windows 共享 1) NFS.
2) Samba
3) Samba-TNG
4) FTP.
??? Windows 域,活动目录 1) Samba.
2) Ldap
3) yp
察看 Windows 网络的工具 网络邻居 1) Samba
2) KDE Lan Browser, lisa
3) LinNeighborhood.
4) xSMBrowser
5) Komba2
6) Konqueror.
ADSL 1) RASPPPOE 1) rp-pppoe
2) Pptp client
分布式计算 Allprojects
1) United Devices
2) http://setiathome.ssl.berkeley.edu/
3) http://folding.stanford.edu/
4) http://genomeathome.stanford.edu/.
Allprojects
1) Distributed.net
2) http://setiathome.ssl.berkeley.edu/
3) http://folding.stanford.edu/
4) http://genomeathome.stanford.edu/
5) D2ol
* 有些 Linux 下的程序版本只运行于字符终端模式
IPSEC 协议 FreeSWAN
VRML 察看器和编辑器 ??? 1) WhiteDune
使用 Ebay ??? 1) Bidwatcher
2) 处理文件
FAR 和 NC 风格的文件管理器 FAR, Norton Commander, Disco Commander, VolcovCommander,etc 1) MidnightCommander.
2) X Northern Captain.
3) Deco (Demos Commander)
4) Portos Commander
5) Konqueror in MC style
6) Gentoo.
7) VFU
8) Ytree
Windows Commander 风格的文件管理器 Total Commander (旧称 Windows Commander) 1) Krusader.
2) Kcommander.
3) FileRunner (TCL/TK).
4) LinuxCommander
5) LinCommander.
6) Rox, Rox-Filer
7) Emelfm
8) Midnight Commander.
9) Worker
Windows 风格的文件管理器 Windows 资源管理器 / Internet Explorer 1) Konqueror.
2) Gnome-Commander.
3) Nautilus
4) Endeavour Mark II
5) XWC
可视化 Shell ??? 1) vshnu: the NewVisual Shell.
本地 HTML 文档轻快浏览工具 1) Internet Explorer
2) Microsoft Document Explorer
1) Dillo(俄语补丁——在此
2) Konqueror.
3) Nautilus
4) Lynx / Links
察看文件的全部行为 Filemon Filemon
处理 UDF Roxio(旧称 Adaptec)UDF Reader, Roxio Direct CD Linux-UDF.
处理多段(multi session)CD,以及从有故障的多段光盘上恢复信息 IsoBuster CDFS
处理压缩文件 1) WinZip
2) WinRar
3) 7-Zip
4) WinACE
5) UltimateZip
1) Ark (kdeutils).
2) Gnozip.
3) KArchiveur
4) Gnochive
5) FileRoller
6) Unace
7) LinZip.
8) TkZip.
字符终端上的归档器(Console archivers) arj, rar, zip, tar, gzip, bzip2, lha… 1) tar, gzip, bzip2.
2) Unarc
3) Lha.(日语网页)
4) Infozip
5) Arj
6) Avfs.(支持从任意程序中使用任意档案—— file.zip#/…).
7) Zoo.
8) RAR
9) CAB Extract
用于文件和目录比较的程序 1) BeyondCompare
2) Araxis Merge.
3) Minimalist GNU For Windows(diff.exe)
4) Unison
1) WinMerge
2) Mgdiff.
3) diff, patch.
4) Xemacs
5) Xdelta.(为二进制文件制作补丁)
6) Meld
7) Xxdiff
8) Unison.
3) 桌面、系统软件
文本编辑器 Notepad, WordPad, TextPad, Vim, Xemacs,… 1) Kedit (KDE).
2) Gedit (Gnome).
3) Gnotepad
4) Kate (KDE).
5) KWrite (KDE).
6) Nedit.
7) Vim
8) Xemacs
9) Xcoral
10) Nvi
11) Ozeditor.
字符终端上的文本编辑器 1) Vim
2) Emacs
3) Editor from FAR, editor from DN, …
1) Vim
2) Emacs
3) Nano.(这是 pico 的一种免费实现)
4) joe.
5) Fte.
6) Jed.
7) CoolEdit.
多重用途的文本(及源代码)编辑器 SciTE,UltraEdit,MultiEdit, Vim, Xemacs, … 1) Kate(KDE自带的工具)
2) Nedit.
3) CodeCommander
4) SciTE
5) Quanta Plus
6) Vim
7) Xemacs
8) Mcedit(随 mc 一起发布)
9) Jed.
10) Setedit(貌似 TurboVision 风格)
11) HTeditor.
支持西里尔语编码的文本编辑器 Bred, Rpad32, Aditor, Vim, Xemacs 1) Kate(KDE自带的工具)
2) Nedit.
3) Fte(用于字符终端)
4) 打过补丁的 Midnight Commander 版本
5) Vim
6) Xemacs.
察看 PostScript 文件 1) RoPS
2) GhostView
1) GhostView
2) Kghostview.
3) GV
4) GGV
察看 PDF 文件 1) Adobe Acrobat Distiller
2) GhostView
1) Acrobat Reader. [私有]
2) Xpdf
3) GV
4) GGV
5) GhostView
6) Kghostview.
创建 PDF 文件 1) Adobe Acrobat Distiller
2) GhostView
3) Ghostscript
1) 任意 Linux“所见即所得”程序 -> 打印到文件 ->ps2pdf.(这里有一篇相关的文章
2) AdobeAcrobat Distiller. [私有]
3) PStill[共享软件]
4) PDFLatex.
5) Xfig.
6) Ghostscript
7) Tex2Pdf.
8) Reportlab
9) GV
10) GGV
11) GhostView
12) Kghostview.
13) Panda PDF Generator
加密技术(Crypto) PGP, GnuPG + Windows Privacy Tools 1) GnuPG(用于字符终端)+ GPA,KGpg,以及其它 前端软件
2) PGP. [私有]
加密整个磁盘卷 EFS(标准的) PGP-Disk, BestCrypt, Private Disk Light 1) Loop-aes
2) CFS
3) TCFS.
4) BestCrypt.
5) CryptFS.
任务调度(日程安排)程序 mstask, nnCron cron, at(标准的,用于字符终端)。图形用户界面的有:Kcron
Outlook 日程安排 Outlook scheduler 1) KOrganizer.
虚拟光驱(Virtual CD) VirtualDrive, VirtualCD, Daemon Tools, … 1) 虚拟光驱内核模块
2) “cp /dev/cdrom mycd.iso”+“mount -o loop mycd.iso /mnt/cdrom/”
文本识别(OCR) Recognita, FineReader 1) ClaraOcr.
2) Gocr.
3) Kooka
翻译软件(西里尔语) Promt, Socrat Ksocrat(???)
英俄词典(西里尔语) 1) ABBYY Lingvo
2) Socrat
3) JaLingvo
4) phpMyLingvo
1) Mueller.
2) Ksocrat.
3) JaLingvo
4) phpMyLingvo
5) dict+Kdict.
6) DictX
7) Groan.
8) Mova.
9) Slowo.
10) Stardict
处理扫描仪 扫描仪所附带光盘上的程序,VueScan 1) Xsane.
2) Kooka
3) Xvscan[私有]
4) VueScan[私有]
反病毒 AVG AntiVirus, NAV, Dr. Web, TrendMicro, F-Prot, Kaspersky, … 1) Dr. Web[私有]
2) Trend ServerProtect[私有]
3) RAV Antivirus[私有] (Bought byMicrosoft?)
4) OpenAntivirus + AMaViS/ VirusHammer
5) F-Prot[私有]
6) Sophie / Trophie
7) Clam Antivirus
8) Kaspersky[私有]
9) YAVR
系统配置 控制面板,微软配置程序,注册表编辑器,WinBoost, TweakXP, CustomizerXP, X-Setup, PowerToys, Config NT, … 1) setup (Red Hat).
2) chkconfig (Red Hat).
3) redhat-config- (Red Hat 8.0).
4) xf86config, xf86cfg.
5) Linuxconf.
6) Drakeconf.
7) Webmin.
8) yast and yast2 (SuSE).
9) sysinstall (FreeBSD).
10) /dev/hands :).
引导启动管理器 System Commander, PowerQuest Boot Magic, GAG, … 1) Grub
2) Lilo.
3) ASPLoader.
4) Acronis OS Selector [私有].
5) RanishPartition Manager.
6) osbs.
7) Symon.
8) SmartBoot Manager.
9) Xosl
10) GAG
硬盘分区管理器 1) PowerQuest Partition Magic[私有]
2) Acronis PartitionExpert [私有]
3) ParagonPartition Manager [私有]
4) PartitionCommander [私有]
1) PartGUI(partimage 和 parted 的图形用户界面)
2) GNU Parted.(GUI – QTParted).
3) Partition Image
4) fips.
5) Diskdrake(Mandrake).
6) ParagonPartition Manager [私有].
7) Acronis PartitionExpert [私有].(review)
LVM + soft-RAID + parted + … EVMS.
备份软件 ntbackup (标准的), Legato Networker [私有] 1) Legato Networker.[私有]
2) Lonetar. [私有]
3) Disk Archive
4) Bacula
5) Taper
6) dump / restore.(标准的,用于字符终端)
7) Amanda(用于字符终端)
8) Mondo Rescue.(备份能引导并自动把自己恢复到硬盘上)
制作磁盘分区的映象 1) DriveImage
2) Ghostpe
1) PartitionImage(GUI – PartGUI).
2) dd(标准的,用于字符终端)
3) Mondo Rescue
跨网络镜像机器 1) ImageCast
2) Norton Ghost
1) UDP Cast
2) Techteam‘s UDP CastDisks.
3) Ghost for Unix (g4u).
任务管理器 TaskMan(标准的),TaskInfo, ProcessExplorer NT. 1) top(标准的,用于字符终端)
2) Gtop, Ktop.
3) Ksysguard.
4) “ps aux | more”,“kill”
打字时自动在英语和俄语之间切换 Punto Switcher,KeyboardNinja, Snoop 没有对应的类似物 🙁
鼠标光标形状图案(Mouse gestures) Sensiva 1) Kgesture.
2) wayV
3) Optimoz
TV 程序 ??? HomePortal.
文本朗读 MS text to speech 1) KDE 语音插件
2) Festival
3) Emacspeak
4) VoiceText
语音识别 ViaVoice, Dragon Naturally Speaking 是的,没有能用的语音识别软件包,但是:
1) Sphinx
2) ViaVoice.(处于几近荒废状态)
处理文本流 1) Minimalist GNU For Windows (sed.exe)
2) perl
1) sed, awk.
2) perl
PIM(个人信息管理)/ DB(每日公报)/ hierarchical notebook with tree view(树形视图层次结构笔记本) TreePad[私有], Leo, CueCards 1) TreePad Lite. [私有]
2) Yank
3) TreeLine
4) Gjots
5) Leo
6) Hnb – hierarchical notebook
7) TuxCards
在不同的分辨率和刷新率之间快速切换的程序 集成在系统中,来源于视频显示卡光盘(上的驱动程序) 1) Multires
2) Ctrl+Alt+"-", Ctrl+Alt+"+".
3) Fbset. (当使用framebuffer 时)
在文件中查找和替换文本 1) 集成在操作系统之中
2) Indexing service(索引服务)
3) HTMLChanger
4) 任何一个文件管理器
1) find(标准的,用于字符终端)
2) slocate(标准的,用于字符终端)
图形用户界面:
1) Gsearchtool.
2) Kfind.
3) 任何一个文件管理器
本机SGBD索引搜索引擎 1) Indexing service (???)
2) mnoGoSearch[在 Windows 上是专利软件]
1) mnoGoSearch
2) ASPSeek.
系统监视 系统监视器(系统内置) 1) top(标准的,用于字符终端)
2) Gkrellm
3) Ksysguard.
4) Survivor
5) "Hot-babe". (假如裸体都不能打动你,那你不要用:)
日志察看程序 事件观察器(系统内置) 1) Xlogmaster
2) Analog
3) Fwlogview.(firewall)
数据恢复工具 R-Studio(支持 Linux 分区) 1) e2undel
2) myrescue
3) TestDisk
4) unrm
5) Channel 16
能自动探测字符集的文本文件编码器 ??? 1) Enca.
2) Jconv
3) Xcode. (西里尔语)
4) Asrecod.(西里尔语)
闹钟 MindIt! 1) KAlarm.
使用 Palm Palm Desktop 1) Kpilot
2) Jpilot
允许处理 Palm .html 文件 iSilo 1) iSilo.
2) Plucker
低级优化
(芯片组,PCI 总线)
Powertweak 1) Powertweak-Linux.
经典著述 On-Line Bible, The SWORD 1) BibleTime(KDE)
2)Gnomesword (Gnome)
便捷的鼠标滚动 Mouse Imp ???
自动改变桌面背景 ??? 1) Background Buddy
方便切换键盘的语言 ??? 1) GSwitchIt.
Windows 注册表编辑器 RegEdit Kregedit:).
4.1) 多媒体(音频、CD)
有用的链接: Linux MIDI& Sound Applications——有很多链接和资源。
Sound Software– lots of it.
音乐、mp3、ogg 播放器 1) Winamp
2) Zinf
3) SnackAmp
4) Soritong
5) Apollo
6) K-jofol 2000
7) Sonique
8) C-4
9) Media Box Audio / Video Workstation 5
10) Blaze Media Pro
11) NEX 3
12) Real Jukebox
13) Windows 媒体播放器
1) XMMS(X 多媒体系统)
2) Noatun.
3) Zinf. (former Freeamp)
4) Winamp
5) Xamp.
6) GQmpeg
7) SnackAmp
8) Mplayer. (Frontend: Kplayer).
9) Xine. (Frontends: Sinek, Totem)
字符终端上的音乐、MP3、ogg 播放器 mpg123, dosamp, Mplayer 1) Cplayer.
2) mpg123
3) ogg123
4) mpg321
5)Orpheus
6) Mp3blaster
7) Madplay
8) xmms 的字符终端工具
9) Mplayer.
图形用户界面的 CD 烧录程序 Nero, Roxio Easy CD Creator, … 1) K3b.(KDE)
2) XCDRoast
3) KOnCd.
4) Eclipt Roaster
5) Gnome Toaster
6) CD Bake Oven.
7) KreateCD.
8) SimpleCDR-X
9) GCombust
10) WebCDWriter.(CD 烧录服务器,可从任何一款具有 Java 支持的远程浏览器访问)
11) CDR Toaster.
12) Arson.
13) CD-Me(可创建音频 CD)
CD 播放器 CD player, Winamp, Windows Media Player, … 1) KsCD
2) Gtcd (Gnome) + tcd (用于字符终端)
3) Orpheus.(用于字符终端)
4) Sadp
5) WorkMan
6) Xmcd
7) Grip
8) XPlayCD.
9) ccd / cccd(用于字符终端)
10) cdp(用于字符终端)
11) BeboCD
减缓 CD 转速的程序 Slowcd, Cdslow 1) mount -o speed=
2) hdparm -E
3) eject -x
4) cdspeed.
CD ripping / grabbing(CD 抓轨、剽窃工具) 1) Cdex
2) MusicMatch
3) StreamboxRipper
4) Audiocatalyst
5) WinDac
6) Audiograbber
7) Media Box Audio / VideoWorkstation
8) CD-Copy
9) Blaze Media Pro
10) Real Jukebox
11) Windows 媒体播放器
12) Nero
13) VirtualDrive
14) VirtualCD
15) Audacity
1) Grip.
2) Audacity
3) RipperX.
4) tkcOggRipper.
5) A Better CD Encoder.
6) cdda2wav
7) Gnome Toaster.
8) Cdparanoia.
9) Cd2mp3.
10) Dagrab.
11) SimpleCDR-X
12) RatRip
13) AutoRip.
14) SoundJuicer
CD 音轨播放器 Winamp, Windows Media Player, … 1) xmms + MikMod-plugin.随 xmms 一起发布
2) xmms + xmp-plugin. 用 xmp播放
3) MikMod.(用于字符终端)
4) xmp。能用 Midi 设备播放 CD 音轨
5) TiMidity++.只有模块文件(Only mod files)
Midi 播放器 Winamp, Windows 媒体播放器,…… 1) xmms + midi-plugin(用TiMidity 播放)
2) xmms +awemidi-plugin.(用 drvmidi 播放)
3) xmms +playmidi-plugin(用 playmidi 播放)
4) TiMidity++.Supports gus pathes and sf2 banks, backend to another software.
4) timidity-eawpatches.Gus-patches for TiMidity++.
5) Kmid
6) drvmidi/ awemidi.
7) pmidi(用于字符终端,for ALSA)
8) playmidi.
9) atmidi.
Midi + 卡拉 OK 播放器 VanBasco 1) Kmid
2) Gkaraoke.
3) TiMidity++
Mp3 编码器 1) Lame
2) Cdex
3) MusicMatch
4) StreamboxRipper
5) Audiocatalyst
6) Blaze Media Pro
7) Media Box Audio / VideoWorkstation
8) AudioSlimmer
9) Real Jukebox
1) Lame
2) Bladeenc.
3) NotLame
4) L3enc. [私有]
5) gogo.
OGG 编码器 oggenc oggenc.
使用实时播放协议 1) RealPlayer.[私有]
2) Mplayer + libraries.
1) RealPlayer.[私有]
2) Mplayer + 库.
3) ReMedial
广播 VC Radio, FMRadio, Digband Radio 1) xradio
2) cRadio
3) Xmradio.
4) RDJ.
5) RadioActive.
6) XMMS-FMRadio
7) Gqradio.
8) Qtradio
音频编辑器 SoundForge, Cooledit, Audacity, … 1) Glame
2) Rezound.
3) Sweep
4) WaveForge
5) Sox.
6) Audacity
7) GNUSound
8) Ecasound.
9) SoundStudio.
10) mhWaveEdit
多轨音频处理器 Cubase 1) Ecasound.
2) Ardour.
Sound tracker(声音追踪者,声音制轨) Fasttracker, ImpulseTracker 1) Soundtracker
2) Insotracker
3) CheeseTracker
Sound mixer(声频混合器,音量调节器) sndvol32 1) Opmixer
2) aumix.
3) mix2000.
4) KMix.
5) Alsamixer
6) GMix
7) wmix(for WindowMaker)
8) Mixer_app (for WindowMaker)
9) Many applets for AfterStep / WindowMaker / FluxBox
Software for music notation(标注音符的软件) Finale,Sibelius,SmartScore 1) LilyPond.
2) Noteedit
3) MuX2d
Midi序列发生器(Midi-sequencer) Cakewalk 1) RoseGarden
2) Brahms
3) Anthem
4) Melys
5) MuSE
6) MidiMountain(KDE)
More infrormation: Midi-Howto
音乐创作 Cakewalk, FruityLoops 1) RoseGarden
2) Ardour
Synthesizer([电子]合成器) Virtual waves, Csound 1) Csound
2) FluidSynth
3) Arts Builder (???).
ID3-Tag 编辑器 Mp3tag 1) EasyTAG
2) Cantus
3) id3tool(用于字符终端)
4) id3ed(用于字符终端)
5) id3edit(用于字符终端)
吉他、仪器调节软件 1) In-TuneMulti-Instrument Tuner
2) Digital Guitar Tuner
???
将音频流录入 .MP3 文件 TwinsStream Ripper StreamRipper.
4.2) 多媒体(图形)
图形文件阅览器 1) ACDSee
2) IrfanView
3)Xnview
4) CompuPic[私有]
5) Windows Fax and Image viewer
5) Any web browser
1) Xnview.
2) GQview
3) Qiv
4) CompuPic [私有]
5) Kuickshow.
6) Kview.
7) GTKSee
8) xv. [私有]
9) pornview.
10) imgv
11) Gwenview.
12) Gliv
13) Showimg
14) Fbi.
15) Gthumb.
16) PixiePlus.
17) Electric Eyes (Gnome).
18) Eye of Gnome
19) GImageView
20) Hugues ImageViewer
21) 任何一款网页浏览器
在字符终端察看图形文件 QPEG 1) zgv.
2) aalib.
简单的图形编辑器 Paint 1) Kpaint
2) Tuxpaint.
3) Xpaint.
4) Gpaint
5) Killustrator
6) Graphtool
PhotoShop 风格的功能强大的图形编辑器 1) Adobe Photoshop [私有]
2) Gimp
3) Paint Shop Pro [私有]
4) Pixel32 [私有]
5) Corel PhotoPaint [私有]
6) Macromedia Fireworks
1) Gimp
2) ImageMagick
3) Pixel32. [私有]
4) CinePaint
5) RubyMagick
6) CorelPhotoPaint 9. [私有]
处理向量图形的程序 Adobe Illustrator, Corel Draw, Freehand,AutoSketch, OpenOffice Draw 1) Sodipodi.
2) xfig.
3) Sketch.
4) Karbon14 and Kontour.
5) OpenOffice Draw.
6) Dia.
7) Tgif.
8) Gestalter
9) ImPress
10) Tkpaint
11) Tgif
12) Corel Draw 9. [私有]
SVG 编辑器 WebDraw [私有] 1) Sodipodi.
2) Dia.
3) Sketch.
SVG 察看器 1) Squiggle
2) X-Smiles
3) Mozilla 中的 SVG 支持
1) Squiggle.
2) X-Smiles.
3) Mozilla 中的 SVG 支持
4) Konqueror 中的 SVG 支持.
文本粉饰程序(对文字进行艺术加工的程序) Wordart, OpenOffice Draw OpenOffice Draw
用 ASCII 字符绘图的程序 ANSI DRAW, Mazaika 1) CanvASCII
2) Jave
3) ANSI Draw.
4) EDASCII
转换伪图中的图形文件(Converting the graphic files in pseudographics) ??? aalib.
播放 Flash Flash Player 1) SWF Macromedia Flash Player
2) FlashPlayer[私有]
3) Netscape/Mozilla 插件(下载 herehere
创建 Flash Macromedia Flash 1) DrawSWF
2)Ming(从程序设计语言中创建 flash swf输出)
三维图像 3D Studio MAX, Maya[私有], Povray, … 1) Blender.
2) Maya[私有]
3) KPovModeler
4) K3Studio
5) Moonlight
6) GIG3DGO
7) Povray
8) MegaPov
9) K3D
10) Wings 3D
11) Softimage XSI[私有]
12) Kludge3d
制作照片质量的景物(基于 ArchiCAD 3D 模型) ArtLantis Render ???
图标编辑器 Microangelo 1) Gnome-iconedit.
2) Kiconedit.
制作屏幕截图的小程序 集成在操作系统中(打印屏幕),Snag it, … 1) Ksnapshot.
2) Xwpick.
3) Xwd, xgrabsc.
4) Motv (xawtv)
5) Streamer(视频)
6) 集成于窗口管理器(有各种热键)
绘制数据库结构图表 Access 1) Dia
2) 概念制作模型工具包.
用艺术剪辑软件,创建印制日历、贺卡(明信片)等 Broderbund Print Shop ???
从数字相机下载图片 Polaroid Drivers 1) Camera Tool (gtkam)
2) Gphoto2.
4.3) 多媒体(视频和其它)
视频、mpeg4 播放器 1) BSplayer
2) Zoomplayer
3) Windows 媒体播放器
4) VideoLAN
5) Winamp3
6) Mplayer
7) RealPlayer
8) Xing
9)Simplayer
1) Mplayer.(前端:Kplayer
(LiveCD distribution of Mplayer——MoviX)
2) Xine.(前端:SinekTotem
3) VideoLAN
4) Aviplay
5) Winamp3.
6) Noatun
7) KDE 媒体播放器
8) XMovie.
9) Kaboodle.
10) MpegTV
11) Avifile
12) Xmps
13) Ogg Tarkin. (???)
14) Theora. (???)
字符终端上的视频、mpeg4 播放器 QuickView 1) Mplayer
2) QuickView
DVD 播放器 PowerDVD, WinDVD, MicroDVD, Windows 媒体播放器,VideoLAN 1) Ogle.
2) Mplayer
3) Xine
4) Aviplay
5) VideoLAN
6) OMS
DVD 破解、编码工具 Gordian Knot, Mencoder(from Mplayer) 1) Drip
2) Transcode
3) Mencoder. (from Mplayer)
4) Ffmpeg
5) DVD::Rip.
简单的视频创建和编辑工具 Windows Movie Maker 1) iMira Editing.[私有]
2) MainActor.[私有]
3) Broadcast 2000.
4) Avidemux
专业的视频创建和编辑工具 Adobe Premiere, Media Studio Pro 1) iMira Editing
2) Cinelerra
3) MainActor.
4) Broadcast 2000.
5) Lives
6) CinePaint
截获视频的工具(Cutting video) Virtual Dub 1) Avidemux.
2) Kino.
视频转换(Converting video) Virtual Dub, Mencoder(from Mplayer) 1) Transcode
2) Mencoder(from Mplayer)
3) Ffmpeg.
处理 TV 信号接收、看电视 AVerTV, PowerVCR 3.0, CinePlayer DVR, Mplayer, … 1) Tvtime
2) Kwintv.
3) Xawtv
4) Zapping
5) GnomeTV.
6) Mplayer
7) Xawdecode
字符终端下处理电视信号接收 1) Mplayer
2) fbtv.
3) aatv.
处理 QuickTime 格式 QuickTime 播放器 1) QuickTime
2) Mplayer + Sorenson codec.
3) OpenQuicktime
4) Xanim
产生二维和三维立体效果 Adobe After Effects 1) Shake.[Proprietary, $129.95]
2) Plugins for Gimp.
动画制作 Animation Shop, … 1) CinePaint
2) Gimp 插件
生成山水、地形 Bryce Terraform
世界构建 World Construction Set, Animatek
World Builder
???
开发视频应用程序的框架 ??? 1) Gstreamer
2) Live.
5) 办公室、商业应用
办公套件 MS Office, StarOffice / OpenOffice, 602Software 1) OpenOffice
2) StarOffice[私有]
3) Koffice.
4) HancomOffice.[私有]
5) Gnome Office
6) Applixware Office. [私有]
7) Siag Office
8) TeX, LaTeX, …
办公套件 WordPerfect Office 2000 WordPerfect Office 2000 for Linux. (从 Corel网站不再能够得到了。这是以前的 Windows 版本,运行在 Wine之下 🙂
字处理 Word, StarOffice / OpenOffice Writer, 602Text, Abiword 1) Abiword.
2) TextMaker[私有]
3) WordPerfect
4) Ted
5) StarOffice / OpenOffice Writer.
6) Kword.
7) LyX
8) Kile(KDE 集成 LaTeX 环境,KDE Integrated LaTeX Environment)
电子表格 Excel, StarOffice / OpenOffice Calc, 602Tab 1) Gnumeric
2) Abacus
3) StarOffice / OpenOffice Calc.
4) Kspread
用已有的数据绘制曲线、图表 Excel, … 1) Kivio.
2) Dia.
3) KChart.
4) xfig
5) Gnuplot
6) GtkGraph.
7) GNU Plotutils
8) Ploticus.
创建幻灯片(演示文档) MS PowerPoint, StarOfficePresentation, OpenOfficeImpress 1) StarOfficePresentation
2) OpenOffice Impress
3) Kpresenter
4) MagicPoint
5) Kuickshow & gimp 🙂
本机数据库(Local database) MS Access, InterBase6, OpenOffice + MySQL 1) KNoda.
2) Gnome DB Manager
3) OpenOffice + MySQL
4) InterBase7[私有]
5) InterBase6
6) Berkley DB
7) Rekall[私有]
8) StarOffice Adabase
接收引文、消息,构造曲线图,分析金融市场 Omega Research Trade Station 2000 1) The Market Analysis System(市场分析系统,MAS)
电子商务和网上交易软件 1) Weblogic [私有]
2) IBM WebSphere Application Server [私有]
3) iPlanet
4)osCommerce
5) JOnAS
6) COCOON
1) Weblogic[私有]
2) JBoss
3) IBMWebSphere Application Server[私有]
4) osCommerce
5) JOnAS
6) COCOON
个人财务管理 1) MS Money
2) Quicken
3) Moneydance [私有]
1) GNUcash.
2) GnoFin
3) Kmymoney
4) Grisbi
5) Moneydance. [私有]
项目管理 MS Project, Project Expert 7 1) MrProject
2) Outreach
金融记帐软件包(全球)Financial accounting package (global) ??? 1)HansaBusiness Solutions. [私有]
2) Quickbooks.
金融记帐软件包(俄罗斯)Financial accounting package (russian) "1C: Accounting" 1)HansaBusiness Solutions. [私有]
2) IceB.
3) 《无忧财政》"Finances withoutproblems".
4) Ananas.
5) E/AS.
6) 1L: Project.
金融记帐软件包(印度和亚洲)Financial accounting package (India& Asia) ??? Kalculate.[私有]
企业自动化(俄罗斯)(russian) "1C: Enterprise" 1) Keeper.[私有]
2) Oblik. [私有]
3) IceB.
4) Compiere
ERPCRM (英语) ??? 1) Dolibarr
ERPCRM (俄语) "BOSS-Corporation" 1) NauRP
2) Compiere
3) Dolibarr
公司档案流系统(俄语) 1) "Boss-Referent"
2) Documentum
3) "Delo"
4) Lanit:LanDoc
1) NauDoc
2) Documentum.
3) 《老板参考》"Boss-Referent"(没有客户部分)
6) 游戏
从何处获得 你想去的任何地方 🙂 The LinuxGame Tome (happypenguin.org) | LinuxGames.com| Kde Games | Linux Game Publishing
Linux 游戏列表 http://www.icculus.org/lgfaq/gamelist.php
能在 WineX 下运行的 Windows 游戏 这里是一个搜索页面,这里是一个完整游戏列表 (very big).
Tetris 1) LTris
2) XWelltris
3) Emacs + "Meta-X tetris".
4) Ksirtet
Standard Windows games 1) Kdegames.
2) Gnome-games.
Mines 1) KMines.
2) Perlmines.
3) Dmines
Civilization FreeCiv.
Civilization: Call to Power Civilization: Call to Power.
Sid Meyer Alpha Centauri Sid Meyer Alpha Centauri.
Sim City 3000 Sim City 3000.
Command&Conquer FreeCNC.
Warcraft 2, Starcraft (?) FreeCraft.
(Win)Digger 1) Digger.
2) XDigger.
Arkanoid, Zball, … Lbreakout2
Quake 1, 2, 3 1) Quake 1,2, 3
2) QuakeForge
3) DarkPlaces
1) Quake 1,2, 3
2) QuakeForge
3) DarkPlaces
CounterStrike CounterStrike under WineX
Urban Terror Urban Terror.
DOOM 1) jDoom /Doomsday
2) Zdoom
3) DOOM Legacy.
4) LxDOOM.
5) PrBoom.
6) EDGE
7) Vavoom
8) Original Doom
1) jDoom /Doomsday
2) Zdoom
3) DOOM Legacy.
4) LxDOOM.
5) PrBoom.
6) EDGE
7) Vavoom
8) OriginalLinux Doom (X11/svgalib)
Heretic 1) DOOMLegacy.
2) jHeretic / Doomsday
3) Vavoom
4) Original Heretic
1) DOOMLegacy.
2) Vavoom
3) Heretic, GL Heretic
Hexen 1) jHexen /Doomsday
2) Vavoom
3) Original Hexen
1) Hexen/SDL
2) Vavoom
Heretic 2 Heretic 2
Return to Castle Wolfenstein Return to CastleWolfenstein. [私有]
Descent Descent.
Never Winter Nights Never Winter Nights.
Unreal Tournament / Unreal Tournament 2003 Unreal Tournament / Unreal Tournament 2003.
Soldier Of Fortune Soldier Of Fortune.
Tribes 2 Tribes 2.
Blood 1 Qblood
Worms Nil
Lines 1) GtkBalls.
2) gLines.
MS Flight Simulator FlightGear
Lemmings Pingus
竞赛(Racing) Need For Speed 1) Tux Racer :).
2) KartlingRace
国际象棋 ChessMaster, … 1) Glchess.
2) Xboard.
3) Eboard.
7) 编程和开发
集成开发环境(IDE) 1) Microsoft VisualStudio .net
2) Emacs, XEmacs
3) Vim + ctags + scripts from vim.sf.net
4) Boa Constructor
5) PythonCard
1) CodeForge.
2) Kdevelop + Qt3 Designer.
3) Eclipse
4) Glade + Motor or + Xwpe or + any texteditor.
5) Emacs, XEmacs
6) Vim + ctags + scripts from vim.sf.net
7) Boa Constructor
8) PythonCard
Visual C++ IDE Borland C++ Builder, MS Visual C 1) Anjuta +Glade + Devhelp.
2) KDE Studio Gold[私有]
3) Dev-C++
4) Kylix. [私有](Kylix个人版是免费的)
5) vtkBuilder.
6) foxBuilder.
7) wxDesigner.
8) Arriba.[私有]
9) Code Crusader.[私有]
10) CodeWarrior.[私有]
11) Gbuilder
12) Source Navigator
13) TimeStorm[私有]
14) Understand for C++[私有]
15) SlickEdit[私有]
16) Vide.
C++ IDE Borland Turbo C++ 3.0 for DOS, , Minimalist GNU For Windows(mingw32-gcc.exe) 1) GCC (+ Motor or + Xwpe).
2) LinEdit
3) Rhide
4) Wxstudio
5) Eclipse.
Object Pascal IDE Delphi 1) Kylix[私有] (Kylix 个人版是免费的)
2) Lazarus + FPC.
Pascal Pascal, BP 1) Freepascal.
2) GNU Pascal
3) RShell(是 Borland Pascal 7.0 风格的)
Basic 语言 Basic 1) Hbasic.
2) X-basic.
3) Yabasic.
4) SmallBASIC
Prolog 语言 VisualProlog, Mercury, SICStus Prolog[私有] 1) GNU Prolog.
2) Mercury
3) SWI-Prolog
4) SICStus Prolog[私有]
5) CIAO Prolog.
汇编器(Assembler) TASM, MASM, NASM 1) NASM(Intel语法)
2) FLAT Assembler.
3) gas(AT&T 语法,是 binutils 的组成部分)
反汇编,逆向工程 SoftIce 源代码是公开的 🙂
1) ldasm
调试器(Debugger) 1) WinDbg
2) Minimalist GNU For Windows (gdb.exe)
gdb前端:
1) ddd
2) xxgdb, mxgdb
3) CGDB
4) Vim scripts
5) [X]Emacs C-mode.
6) KMD
7) NANA(库)
所见即所得(WYSIWYG)html 编辑器 1) Macromedia Dreamweaver
2) MSFrontpage
3) Netscape / Mozilla Composer
4) Openoffice HTML 编辑器
1) Netscape/ Mozilla Composer.
2) Openoffice HTML 编辑器
3) Amaya
4) GINF(Ginf Is Not Frontpage)
5) IBM WebSphere 主页建造者. [私有]
6) JXHTMLEDIT(Java).
可创建网站的功能强大的编辑器,包括一套样板,并可用各种插件来补充 Dreamweaver Ultradev ???
HTML / DHTML 编辑器 HomeSite, Coffeecup 1) QuantaPlus.
2) Bluefish.
3) WebMaker.
4) Screem
5) Toppage
6) WebDesigner
7) ScriptEditor
8) August
9) Coffeecup / Linux
10) FCKeditor
HTML / DHTML 编辑器 Arachnofilia Arachnofilia[私有]
XML 编辑器 XML Spy [私有] 1) XMLMind XML 编辑器
2) Vim
3) Emacs
Perl/Python/Tcl 集成开发环境 1) Komodo. [私有]
2) Perl DevKit.
Java 集成开发环境 JBuilder, IDEA 链接地址:Linux 下的 Java 工具
1) Jbuilder
2) NetBeans.
3) Eclipse.
4) Sun ONE Studio. [旧称 Forte]
5) Vide.
Oracle 数据库集成开发环境 T.O.A.D., SQL Navigator,PL/SQL Developer Tora.
CASE-facility for UML ArgoUML, Together ControlCenter [私有] 1) UmbrelloUML Modeller.
2) Dia+Dia2Code
3) PoceidonCE (community edition)
4) ArgoUML.
5) Together ControlCenter[私有]
Top-level CASE system Rational Rose. Rational Rose[私有]
十六进制编辑器 Hiew 1) Biew.
2) KHexEdit.
3) hexedit(用于字符终端)
4) GHex
Clipper 编译器和预处理器 CA-Clipper, The Harbour Project 1) Clip
2) The Harbour Project
3) xHarbour.
微软 .Net 风格的平台 M$ .Net 1) Mono
2) DotGNU/Portable.NET
使用 CVS WinCVS, TortoiseCVS, cvs for Windows, BitKeeper [私有] 1) cvs(用于字符终端)
2) Cervisia (KDE)
3) Lincvs(CVS 的前端)
4) BitKeeper[私有]
5) SubVersion(强化了的类似 CVS的平台 + WebDAV -> SCM)
Interbase/Firebird 集成开发环境 IBExpert 1) IBAccess
2) IBAdmin[私有]
3) IBWebAdmin (apache/ php)
Visual Basic 语言 Visual Basic Phoenix.
图形库 1) WinAPI, MFC, VCL (C, C++)
2) Tk (Tcl, C)
3) Tkinter (overTk for Python, Perl, etc)
4) wxWindows (C++) (overwinapi)
5) wxPython (Python) (overwxWindows)
6) GTK+ (link #2) (C, C++)
7) Qt (C++)
8) FLTK (C++)
9) AWT, Swing (Java)
10) Xaw – part of X-server (C)
如果工具包是面向 C 语言的,通常从其它语言中也可以使用它。其中有些语言和 C++以及其它面向对象的语言一起使用对象绑定。一开始就面向 C++ 的工具包是不可能被 C 语言使用的,而且通常——也不能被其它语言使用。

1) X11/Xext(C语言)——低级库,由其它语言使用。
2) Xt – X 工具包(C语言)——引用 X11 工具包
3) Xaw – MIT Athena (C)——引用 X11 工具包
4) Xaw3d – MIT Athena3D(C语言)——带三维视图的 Athena
5) LessTif ——Motif 1 的开源类似物(C语言)
6) OpenMotif(C语言)
7) Tk(Tcl、C语言)
8) Tkinter (over Tk for Python, Perl, etc)
9) wxWindows (C++) (over GTK+ – wxGtk or Motif – wxMotif)
10) wxPython (Python) (over wxWindows)
11) Qt (C++)
12) GTK+ (C, C++)
13) PyQt (over Qt for Python)
14) PyGTK(over GTK+ for Python)
15) Gtk::Perl (over GTK+ forPerl)
16) Qt for Perl (over Qt for Perl)
17) GtkAda (over GTK+ for Ada95)
18) FLTK (C++)
19) XView(C)
20) FOX (C++)
21) AWT, Swing (Java)
22) 经由 wine 来运行的 Windows API 和 MFC(C)

源代码文档管理系统 ??? 1) Doxygen
2) CWEB
内存泄漏追踪 1) Numega Bounds Checker
2) Rational Purify
1) MallocDebug
2) Valgrind
3) Kcachegrind
4) ElectricFence.
5) dmalloc
6) ccmalloc
7) LeakTracer
8) memprof
9) BoundsChecker.[prop]
10) mprof.
11) Insure.[prop]
12) dbx. (for Sparc)
13) YAMD
14) Njamd
15) Mpatrol
应用程序开发轮廓(测试代码的性能) ??? 1) gProf.
2) JUnit.(Java)
软件工程、软件规划 1) Rational Rose
2) Enterprise Architec
3) Visio
???
游戏编程 1) DirectX
2) libSDL
3) ClanLib
1) libSDL
2) ClanLib
处理 XML 格式、DTD、XSL/XSLT、SOAP、WSDL(编辑、调试、校验等等)所需要的一切 1) Altova XMLSpy Suite ???
源代码 -> 具有高亮度显示语法的 HTML 文档 ??? 1) Webcpp
Bug 跟踪系统 ??? 1) Bugzilla
Object Request Broker (ORB) 1) ORBIT 1) ORBIT
可移植性 ??? 1) Autoconf, Automake & Libtool
源代码索引器和交叉引用器 ??? 1) GNUGLOBAL
2) LXR
动态跟踪系统调用 ??? 1) Syscalltrack
XML C 语言语法剖析器 1) libxml (???) 1) Libxml2
8) 服务器软件
Web 服务器 1) Apache
2) IIS
3) Roxen
4) wn
5) cern-httpd
6) dhttpd
7) caudium
8) aolserver
9) Boa
1) Apache
2) Xitami
3) Thttp
4) TUX (RedHat Content Accelerator)
5) PublicFile
6) Boa
7) Caudium
8) Roxen
9) Zeus. [私有]
10) Thy
FTP 服务器 Internet Information Server, ServU, War FTP, BulletProof FTPserver 1) pure-ftpd
2) vsftpd.
3) wu-ftpd
4) proftpd
5) gl-ftpd
6) ftp.
7) PublicFile
8) Teepeedee
用于 Web 开发的语言 PHP PHP
用于 Web 开发的语言 Perl Perl
用于 Web 开发的语言 ASP ASP 的 Apache 模块
数据库引擎 MS SQL, MySQL 1) SybaseAdaptive Server Enterprise. [私有]
2) PostgreSQL, 是最先进的开放源码数据库
3) MySQL,是最流行的开放源码数据库
4) mSQL.
5) SAP DB
数据库引擎 IBM DB2 IBM DB2[私有]
数据库引擎 Oracle 1) Oracle.[私有]
2) PostgreSQL.
3) Linter(西里尔语)
数据库引擎 Informix [私有] Informix[私有]
数据库引擎 Borland Interbase, FireBird FireBird
Email 服务器 MDaemon,Hamster 1) Sendmail
2) Qmail.
3) Postfix
4) Exim
Email、PIM、群件服务器 Microsoft Exchange 1) CommuniGatePro. [私有]
2) Bynari‘s Insight GroupWare Suite(洞察力群件套件).[私有]
3) Samsung Contact.[私有]
4) Teamware Office. [私有]
5) Novell Netmail.[私有]
6) Amphora. 基于 zope 和 qmail
7) Tutos. 基于 Linux / Apache / PHP / Mysql / Sendmail.
8) Kroupware——来自 KDE PIM 开发者的项目,现正由德国政府资助
9) SuSe Linux Openexchange Server.[私有]
10) PHPGroupware
11) SCOofficeMail Server. [私有](SCO – m.d. :).
12) LinuXchangE
13) OpenOffice.org GroupwareProject. (New!)
Mail 过滤器 / spam 杀手 cygwin+Exim port 1) SpamAssassin
2) Procmail
3) Mailfilter.
4) яyrus-imap
5) Exim.
Mail 下载程序 MDaemon Fetchmail
??? Lotus Domino Lotus Domino.[私有]
一张软盘上的服务器、路由器 不可能有 想要多少就有多少 🙂
1) muLinux
2) Dachstein(firewall / dhcp).
3) Serverdisk (http /ftp).
4) Fli4l
代理服务器 MS Proxy Server, WinGate 1) Squid
2) Paco
3)Privoxy
4) Wwwoffle
5) OOPS
Server for supporting Java Servlets and JSP, canwork with Apache Tomcat Tomcat
高级服务器统计 1) AWStats 1) AWStats.(All web-, ftp-, proxy-, mail-, wap- and streaming-servers).
2) ANALOG(Web服务器)
服务器集群 ??? 1) LVS- The Linux Virtual Server(Linux 虚拟服务器)
Web Mail ??? 1) IMP
2) CAMAS.(for Caudiumweb-server).
9) 科学程序和特殊程序
有用的链接: Linux上的科学应用程序——有许多链接(既有开源软件也有专利软件)
MathCad 风格的数学系统 Mathcad Gap.
Matlab 风格的数学系统 Matlab 1) Matlab.[FTP]
2) Octave. (+ Gnuplot)
3) Scilab.
4) R.
5) Yorick
6) rlab.
7) Yacas
8) Euler.
Mathematica 风格的数学系统 Mathematica 1) Mathematica.[私有]
2) Maxima.
3) MuPad.
4) NumExp.
5) Mathomatic
Maple 风格的数学系统 Maple 1) Maple.[私有]
2) Maxima
3) MuPad
方程、数学编辑器 Mathtype, MS Equation Editor, OpenOffice Math 1) OpenOfficeMath.
2) MathMLed
3) Kformula (Koffice)
4) LyX
5) Texmacs.
三维建模程序 SolidWorks, … ProEngineer Linux.[私有]
三维建模程序 CATIA CATIA. 该软件是在 Unix 下设计的,从 2000 年的版本 4 开始,被移植到 Windows(不太成功)。
三维建模程序 SolidEdge SolidEdge(是一个更加强大的软件包 Unigraphics 的一个【组成】部分)
工程软件 ANSYS ANSYS
CAD/CAM/CAE AutoCAD, Microstation, ArchiCAD 1) Varkon
2) Linuxcad. [商业,约 100 美元]
3) Varicad. [私有]
4) Cycas. [私有]
5) Tomcad
6) Thancad
7) Fandango
8) Lignumcad
9) Giram
10) Jcad
11) QSCad
12) FreeEngineer
13) Ocadis
14) PythonCAD.
15) OpenCascade
CAD/CAM/CAE, simplified AutoCAD Lite Qcad
桌面出版系统 Adobe PageMaker, QuarkXPress Adobe Framemaker[专利软件,已被取消]
小型桌面出版系统 MS Publisher 1) Scribus——Linux桌面出版系统
2) KWord.
直方图和图表设计软件 Microsoft Visio 1) Kivio(属于 Koffice)
2) Dia.
3) KChart.
4) xfig.
5) Tgif + dotty.
6) Tulip.
7) Poseidon for UML.[有商业版和免费版]
地理图像处理软件 Erdas Imagine, ERMapper, ENVI ENVI.
GIS(地理信息系统,Geographical information system) ArcView 所有的项目:FreeGISProject
1) Grass
2) Quantum GIS.
3) PostGIS.
4) FreeGIS
5) MapQuest.
6) MapBlast.
交互式的地理数据观察器 1) Thuban 1) Thuban
位图的向量化 MapEdit, Easy Trace 1) Autotrace
Software CNC, controlling machine tools OpenCNC [私有] EMC.
TeX 风格的高级文本处理系统 MikTex, emTeX(用于DOS) 1) TeX.
2)TeTeX / LaTeX
3) LyX(所见即所想,WYSIWYM)
4) Kile
方便、功能多、用户友好的 TeX 文件、dvi 文件编辑器 WinEdt 1) Kile(KDE 集成化LaTeX 环境)
2) Ktexmaker2.
3) Tk LaTeX 编辑器
统计计算语言和环境 S-PLUS R
统计分析 SPSS, Statistica, SalStat 许多链接——这里
1) PSPP
2) OpenStat2
3) 《Linux用户可移植性工具和统计工具》
4) SalStat
经济计量学软件 Eviews, Gretl 1) Gretl.
电路模拟 1) Electronic Workbench
2) Altera MaxPlus+
1) Geda
2) Oregano
3) Xcircuit
4) Gnome Assisted Electronics
5) SPICE
6) SPICE OPUS
7) NG-SPICE
画化学结构图的程序 Chemdraw,Isisdraw Xdrawchem
下载和播放 Olympus 录音电话机 Olympus DSS 播放器 ???
市场分析软件 MetaStock ???
电子学图解方案设计 1) PCAD
2) OrCad
3) Visio
1) Eagle
2) Geda.
示波器仿真 Winoscillo Xoscope
测量主板温度和电压 MBMonitor, PCAlert, Speedfan 1) KSensors.
2) KHealthCare(KDE).
3) Gkrellm+ plugins + blackbox addons.
硬盘的 S.M.A.R.T 属性和温度 来自主板所附带的光盘,Active SMART 1) smartctl.
2) Hddtemp-0.3.
3) IDEload-0.2.
4) Smartsuite-2.1.
5) Smartmontools.
6) Ide-smart.
7) Smartsuite
内存测试 SiSoft SANDRA Memtest86
观察温度、风扇转速等等的程序 SiSoft SANDRA, SiSoft SAMANTHA 1) Ksensors
2) Lm_sensors
3) xsensors.
4) wmsensormon 和 AfterStep、WindowMaker、FluxBox 上的其它小程序
HDD(硬盘驱动器)测试、基准标定 SiSoft SANDRA, SiSoft SAMANTHA, IOzone 1) hdparm.
2) Bonnie++.
3) IOzone
4) Dbench
5) Bonnie
6) IO Bench
7) Nhfsstone
8) SPEC SFS[私有]
视频测试、基准标定 Final Reality(最终现实) 1) X11perf.
2) Viewperf.
实时控制 SHA - Sybera Hardware Access DIAPM RTAI – Realtime Application Interface(实时应用程序接口)
Simulator of nets(网状物模拟器) ??? 1) NS
神经网络模拟 ??? 1) Xnbc
2) Stuttgart(斯图加特【德国城市】)Neural(神经中枢)网络模拟器 (SNNS)
“LCD 传感器” ??? 1) Sensors-lcd
心电图观察器 ??? 1) ecg2png
把 x86 计算机变成一个全功能的类似PLC的过程控制控制器的一种软件技术 SoftPLC 1) MatPLC
翻译软件清单 Linux for translators(翻译人员用 Linux)
译码存贮器(Translation memory) 1) Trados Translators Workbench
2) Deja Vu
3) Star Transit
4) SDLX
5) OmegaT
1) OmegaT
教育软件清单 1) SchoolForge
2) Seul / EDU
设计和察看 DTDs NearFar Designer [私有] ???
有限元分析 1) FELT(有限元分析)
10) 仿真器
虚拟机仿真器 1) VMWare[私有]
2) Connectix Virtual PC [私有]
1) VMWare.[私有]
2) Win4Lin. [$89].
3) Bochs.
4) Plex86
5) User Mode Linux.
Linux 仿真器 1) CygWin
2) MKS Toolkit.
3) Bash for Windows.
3) Minimalist GNU For Windows.
1) User Mode Linux.
X Window System(XFree) 仿真器 XFree underCygWin
Windows 仿真器 1) Wine(图形用户界面有:gwine,tkwine
2) Transgaming WineX(图形用户界面有:tqgui)[非免费]
3) Crossover Office
Sony 游戏站仿真器 ePSXe, … 1) ePSXe
2) Pcsx.
ZX 频谱仿真器 X128, Speccyal, SpecX, SpecEmu, UnrealSpeccy, 1) Xzx.
2) Glukalka.
3) Fuse.
4) ZXSP-X.
5) FBZX.
6) SpectEmu
娱乐厅(Arcade)机器仿真器 ??? 1) MAME
2) Xmame / Xmess
3) Advancemame
前端:
advancemenu.ckmame.flynn. gmame. gnomame. grok. grustibus. gxmame. it. it‘s quit. fancy. kmamerun. kmamu. qmamecat. startxmame.setcleaner.tkmame
ST 仿真器 1) Steem. 1) StonX.
2) Steem.
C64 仿真器 ??? 1) Vice.
2) Frodo
Amiga 仿真器 ??? 1) UAE.
2) WinUAE
Mac 68k 仿真器 ??? 1) Basilisk II.
Game boy 仿真器 1) Visual BoyAdvance 1) Visual BoyAdvance.
2) VGBA(图形用户界面有:vgb-gui
Atari 2600 视频计算机系统仿真器 1) Stella 1) Stella
2) Saint
NES / SNES 仿真器 1) Zsnes.
2) Snes9x
1) Zsnes.
2) Snes9x
3) FWNes.
4) GTuxNes
M680x0 Arcade(娱乐厅)仿真器 1) Rainemu. 1) Rainemu
多重仿真器、其它仿真器 ??? 1) M.E.S.S
2) Zinc
11) 其它、幽默 🙂
太空模拟 1) Openuniverse
2) Celestia
3) Zetadeck
1) Openuniverse
2) Celestia
3) Kstars
4) Zetadeck
电视卡驱动程序(TV driver) RivaTV
不用安装、从 CD 运行的系统(Live CD,活现 CD) 1) WindowsPE
2) PE Builder
1) Knoppix
2) Cool Linux
3) Blin
4) DemoLinux
5) DyneBolic
6) Gentoo (live CD)
7) Lonix
8) Virtual Linux
9) Bootable Business Card (LNX-BBC).
10) ByzantineOS.
11) FreeLoader Linux.
12) MoviX.
13) FreeducCD.
14) SuSE live-eval CD.
15) Freedom Linux
16) Eagle Linux.
17) Kurumin(只有巴西葡萄牙语)
引导启动急救、工具软盘 Windows 系统软盘 1) Linux 系统软盘
2) Tomsrtbt
3) BanShee Linux
4) RIP
创建 LiveCD 用于系统恢复 ??? 1) Make CD-ROMRecovery
本机文件系统挂接 ext2fs(驱动程序),explore2fs(程序)——Windows 下访问 ext2/3 分区的程序 Linux-NTFS(NTFS分区挂接驱动程序)
安装软件和卸载软件的工具 InstallShield,WISE,GhostInstaller,微软安装器——rpm 的类似物 1) Rpm.
2) Urpmi
3) GnoRpm
4) NautilusRPM.
5) Apt-get 和前端(synaptic,aptitude, …)
6) Apt-rpm. (for RedHat,SuSE, ALT Linux, etc)
7) yum (YellowdogUpdater Modified)
8) yumenhanced by ASPLinux
9) GentooPortage
从源代码安装和卸载软件 Minimalist GNUFor Windows 1) make install, make uninstall
2) CheckInstall
3) Sinstall
4) Emerge (Gentoo)
5) Apt-get & frontends(synaptic, aptitude, …).
系统更新 Windows Update 1) Ximian Red Carpet
2) Red Hat Network
3) MandrakeOnline
4) SuSE YaST Online Update
5) CalderaVolution Online
6) Apt
7) Gentoo ebuilds (portage).
8) Debian GNU/Linux packagesearch
9) Yum
认证 MCSD, MCT, MCSE 1) RedHat Certification.
2) Sair Linux and GNUCertification.
3) Linux 专业协会(Institute)认证(LPIC)
4) Linux+
5) Prometric
6) VUE
桌面图标 资源管理器 1) 桌面文件管理器
2) Idesk
调用屏幕保护程序 桌面属性 1) xset.
2) xlockmore
3) xscreensaver
4) kscreensaver.
保存“已删除”文件的地方 回收站(Trash) 1) 废品罐(Trash Can)
2) Libtrash
校验硬盘(检查坏块) Scandisk “fsck -check”或“reiserfsck -check”
日志文件系统(reiserfs,ext3,jfs,xfs)不需要校验
磁盘碎片整理 defrag 无需整理
系统的图形用户界面 资源管理器(在旧版本 Windows 中似乎叫做程序管理器) Kde, Gnome, IceWM, Windowmaker, Blackbox, Fluxbox,
Windows XP 图形用户界面 Windows XP XPde
多重工作空间 有!!! 🙂
快速用户切换、桌面切换 Windows XP 此特性用于不连网的电脑 1) Ctrl+Alt+F1, 在命令行界面上以新用户登录,通过键入命令“startx – -:1”来启动图形用户界面。用Ctrl+Alt+F7(或Ctrl+Alt+F8,因用户的不同而不同)在屏幕之间切换。
2) 命令“gdmflexiserver -n”
3) 内建于 KDE3.1
系统的不同风味(变种) 9x, NT, XP RedHat
Mandrake
Knoppix
Debian
SuSE
ALT
ASP
Gentoo
Slackware
Linux From Scratch
战术手段 FUD(散布 Fear【恐怖】、Uncertainty【不确定】、Doubt【怀疑】的谣言) 开放源代码!
“起初他们不理睬你,然后他们嘲笑你,然后他们跟你战斗,然后你赢了。”
内核源代码能否自由获得 No Of course 🙂
命令行和脚本编程 1) command.com 🙂
2) cmd.exe
3) Windows Scripting Host
4)4DOS / 4NT
5) Minimalist GNU For Windows
6)Windows 下的 Unix 工具(AT&T)
7) KiXtart
8) ScriptLogic[私有]
1) Bash
2) Csh.
3) Zsh
4) Ash.
5) Tcsh
操作系统的免费获得 Microsoft Windows。(想想你自己。在俄罗斯有 95% 的用户使用盗版的 Windows 拷贝。) Linux——免费的操作系统!!
Nimda(尼姆达病毒) Slapper.
Wincih(系统毁灭者 CIH 病毒), klez, etc 没有类似物
后门和隐钥 你自己找吧(Decide it yourself) 🙂
彩蛋,不公开的一些玩意 展示 Windows 开发者,Excel 95 中的 Doom 游戏,Excel 2000 中的三维竞赛游戏,等等……
杂志 Windows Magazine 1) LinuxJournal
2) Linux Gazette
3) Linux magazine
4) Linux pratico (Italy).
5) Australian Linux
死于蓝屏(Blue Screen Of Death,BSOD) 1) Kernel panic(内核起不来)
2) 屏幕保护程序“死于蓝屏” 🙂
谁需要为系统的毛病和缺陷负责 微软,比而.该次 个人(帐单.守门) 1) 发行版的开发者们
2) 所有的 Linux民,Linus Torvalds 本人 🙂
3) 你自己以及你拥有的设备:双手 :))
M$.com GNU.org, FSF.org
Windows.com Linux.org
Billionare(亿万富翁)Gates(鬼门关),“Road ahead”前面的路;【引申】一刻不停地加紧赚钱 Linus Torvalds,“Just for fun”【激情使然】玩玩而已 🙂
Bill(生财)Gates(之道),“Business @ the speed of thought”《以思维的速度经商》 Richard M. Stallman,“The right to read”《阅读的权力》
The book: “Free Software,Free Society: Selected Essays of Richard M. Stallman”RMS选集:《自由软件,自由社会》

Linux中文件查找技术大全 作者:佚名

  每一种操作系统都是由成千上万个不同种类的文件所组成的。其中有系统本身自带的文件,用户自己的文件,还有共享文件等等。我们有时候经常忘记某份文件放在硬盘中的哪个地方。在微软的WINDOWS操作系统中要查找一份文件是相当简单的事情,只要在桌面上点击“开始”-“搜索”中就能按照各种方式在本地硬盘上,局域网络,甚至在INTERNET上查找各种文件,文档。

  可是使用Linux的用户就没有那么幸运了,在Linux上查找某个文件确实是一件比较麻烦的事情。毕竟在Linux中需要我们使用专用的“查找”命令来寻找在硬盘上的文件。Linux下的文件表达格式非常复杂,不象WINDOWS,DOS下都是统一的AAAAAAA.BBB格式那么方便查找,在WINDOWS中,只要知道要查找的文件的文件名或者后缀就非常容易查找到。Linux中查找文件的命令通常为“find”命令,“find”命令能帮助我们在使用,管理Linux的日常事务中方便的查找出我们需要的文件。对于Linux新手来说,“find”命令也是了解和学习Linux文件特点的方法。因为Linux发行版本繁多,版本升级很快,在Linux书籍上往往写明某个配置文件的所在位置,往往Linux新手按图索骥还是不能找到。比如说REDHAT Linux 7.O和REDHAT Linux 7.1中有些重要的配置文件所在的硬盘位置和文件目录就有了很大的改变,如果不学会使用“find”命令,那么在成千上万的Linux文件中要找到其中的一个配置文件是相当困难的,笔者在没有精通“find”命令之前就吃过这样的苦头。好,下面就详细为大家介绍强大的“find”命令的全部使用方法和用途。

  通过文件名查找法:

  这个方法说起来就和在WINDOWS下查找文件一样容易理解了。如果你把这个文件放在单个的文件夹里面,只要使用常见的“ls"命令就能方便的查找出来,那么使用“find”命令来查找它就不能给你留下深刻的印象,毕竟“find”命令的强大功能不止这个。如果知道了某个文件的文件名,而不知道这个文件放到哪个文件夹,甚至是层层套嵌的文件夹里。举例说明,假设你忘记了httpd.conf这个文件在系统的哪个目录下,甚至在系统的某个地方也不知道,则这是可以使用如下命令:

  find / -name httpd.conf   这个命令语法看起来很容易就明白了,就是直接在find后面写上 -name,表明要求系统按照文件名查找,最后写上httpd.conf这个目标文件名即可。稍等一会系统会在计算机屏幕上显示出查找结果列表:
etc/httpd/conf/httpd.conf   这就是httpd.conf这个文件在Linux系统中的完整路径。查找成功。
  如果输入以上查找命令后系统并没有显示出结果,那么不要以为系统没有执行find/ -name httpd.conf命令,而可能是你的系统中没有安装Apache服务器,这时只要你安装了Apache Web服务器,然后再使用find / -name httpd.conf就能找到这个配置文件了。

  无错误查找技巧:

  在Linux系统中“find”命令是大多数系统用户都可以使用的命令,并不是ROOT系统管理员的专利。但是普通用户使用“find”命令时也有可能遇到这样的问题,那就是Linux系统中系统管理员ROOT可以把某些文件目录设置成禁止访问模式。这样普通用户就没有权限用“find”命令来查询这些目录或者文件。当普通用户使用“find”命令来查询这些文件目录是,往往会出现"Permissiondenied."(禁止访问)字样。系统将无法查询到你想要的文件。为了避免这样的错误,我们可是使用转移错误提示的方法尝试着查找文件,输入
find / -name access_log 2>/dev/null   这个方法是把查找错误提示转移到特定的目录中去。系统执行这个命令后,遇到错误的信息就直接输送到stderrstream 2 中,access_log 2就是表明系统将把错误信息输送到stderrstream 2中,/dev/null是一个特殊的文件,表明空的或者错误的信息,这样查询到的错误信息将被转移了,不会再显示了。

  在Linux系统查找文件也会遇到这样一个实际问题。如果我们在整个硬盘,这个系统中查找某个文件就要花费相当长的一段时间,特别是大型Linux系统和容量较大的硬盘,文件放在套嵌很深的目录中的时候。如果我们知道了这个文件存放在某个大的目录中,那么只要在这个目录中往下找就能节省很多时间了。使用find /etc -name httpd.conf 就可以解决这个问题。上面的命令就是表示在etc目录中查询httpd.conf这个文件。这里再说明一下“/ ”这个函数符号的含义,如果输入 “find/ ”就是表示要求Linux系统在整个ROOT目录下查找文件,也就是在整个硬盘上查找文件,而“find/etc”就是只在 etc目录下查找文件。因为“find/etc”表示只在etc目录下查找文件,所以查找的速度就相应要快很多了。

  根据部分文件名查找方法:
  这个方法和在WINDOWS中查找已知的文件名方法是一样的。不过在Linux中根据部分文件名查找文件的方法要比在WINDOWS中的同类查找方法要强大得多。例如我们知道某个文件包含有srm这3个字母,那么要找到系统中所有包含有这3个字母的文件是可以实现的,输入:

  find /etc -name ‘*srm*‘   这个命令表明了Linux系统将在/etc整个目录中查找所有的包含有srm这3个字母的文件,比如 absrmyz, tibc.srm等等符合条件的文件都能显示出来。如果你还知道这个文件是由srm 这3个字母打头的,那么我们还可以省略最前面的星号,命令如下:

  find/etc -name ‘srm*‘   这是只有像srmyz 这样的文件才被查找出来,象absrmyz或者 absrm这样的文件都不符合要求,不被显示,这样查找文件的效率和可靠性就大大增强了。

  根据文件的特征查询方法:

  如果只知道某个文件的大小,修改日期等特征也可以使用“find”命令查找出来,这和WINDOWS系统中的"搜索"功能是基本相同的。在微软的"搜索"中WINDOWS中的"搜索助理"使得搜索文件和文件夹、打印机、用户以及网络中的其他计算机更加容易。它甚至使在Internet 上搜索更加容易。"搜索助理"还包括一个索引服务,该服务维护了计算机中所有文件的索引,使得搜索速度更快。使用"搜索助理"时,用户可以指定多个搜索标准。例如,用户可以按名称、类型及大小搜索文件和文件夹。用户甚至可以搜索包含特定文本的文件。如果用户正使用 Active Directory,这时还可以搜索带有特定名称或位置的打印机。

  例如我们知道一个Linux文件大小为1,500 bytes,那么我们可是使用如下命令来查询find / -size 1500c,字符 c 表明这个要查找的文件的大小是以bytes为单位。如果我们连这个文件的具体大小都不知道,那么在Linux中还可以进行模糊查找方式来解决。例如我们输入find/ -size +10000000c 这个命令,则标明我们指定系统在根目录中查找出大于10000000字节的文件并显示出来。命令中的“+”是表示要求系统只列出大于指定大小的文件,而使用“-”则表示要求系统列出小于指定大小的文件。下面的列表就是在Linux使用不同“ find"命令后系统所要作出的查找动作,从中我们很容易看出在Linux中使用“find"命令的方式是很多的,“ find"命令查找文件只要灵活应用,丝毫不必在WINDOWS中查找能力差。

  find / -amin -10 # 查找在系统中最后10分钟访问的文件
  find / -atime -2 # 查找在系统中最后48小时访问的文件
  find / -empty # 查找在系统中为空的文件或者文件夹
  find / -group cat # 查找在系统中属于 groupcat的文件
  find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
  find / -mtime -1 #查找在系统中最后24小时里修改过的文件
  find / -nouser #查找在系统中属于作废用户的文件
  find / -user fred #查找在系统中属于FRED这个用户的文件

  下面的列表就是对find命令所可以指定文件的特征进行查找的部分条件。在这里并没有列举所有的查找条件,参考有关Linux有关书籍可以知道所有find命令的查找函数。
  -amin n
  查找系统中最后N分钟访问的文件
  -atime n
  查找系统中最后n*24小时访问的文件
  -cmin n
  查找系统中最后N分钟被改变状态的文件
  -ctime n
  查找系统中最后n*24小时被改变状态的文件
  -empty
  查找系统中空白的文件,或空白的文件目录,或目录中没有子目录的文件夹
  -false
  查找系统中总是错误的文件
  -fstype type
  查找系统中存在于指定文件系统的文件,例如:ext2 .
  -gid n
  查找系统中文件数字组 ID 为 n的文件
  -group gname
  查找系统中文件属于gnam文件组,并且指定组和ID的文件

  Find命令的控制选项说明:
  Find命令也提供给用户一些特有的选项来控制查找操作。下表就是我们总结出的最基本,最常用的find命令的控制选项及其用法。   选项
  用途描述
  -daystart
  .测试系统从今天开始24小时以内的文件,用法类似-amin
  -depth
  使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容
  -follow
  遵循通配符链接方式查找; 另外,也可忽略通配符链接方式查询
  -help
  显示命令摘要
  -maxdepth levels
  在某个层次的目录中按照递减方法查找
  -mount
  不在文件系统目录中查找, 用法类似 -xdev.
  -noleaf
  禁止在非UNUX文件系统,MS-DOS系统,CD-ROM文件系统中进行最优化查找
  -version
  打印版本数字
  

  使用-follow选项后,find命令则遵循通配符链接方式进行查找,除非你指定这个选项,否则一般情况下find命令将忽略通配符链接方式进行文件查找。

  -maxdepth选项的作用就是限制find命令在目录中按照递减方式查找文件的时候搜索文件超过某个级别或者搜索过多的目录,这样导致查找速度变慢,查找花费的时间过多。例如,我们要在当前(.)目录技巧子目录中查找一个名叫fred的文件,我们可以使用如下命令

  find . -maxdepth 2 -name fred   假如这个fred文件在./sub1/fred目录中,那么这个命令就会直接定位这个文件,查找很容易成功。假如,这个文件在./sub1/sub2/fred目录中,那么这个命令就无法查找到。因为前面已经给find命令在目录中最大的查询目录级别为2,只能查找2层目录下的文件。这样做的目的就是为了让find命令更加精确的定位文件,如果你已经知道了某个文件大概所在的文件目录级数,那么加入-maxdepth n 就很快的能在指定目录中查找成功。

  使用混合查找方式查找文件
  find命令可以使用混合查找的方法,例如我们想在/tmp目录中查找大于100000000字节并且在48小时内修改的某个文件,我们可以使用-and 来把两个查找选项链接起来组合成一个混合的查找方式。
  find /tmp -size +10000000c -and -mtime +2   学习过计算机语言的朋友都知道,在计算机语言里,使用and ,or 分别表示“与”和“或”的关系。在Linux系统的查找命令中一样通用。
  还有这样的例子,
  find / -user fred -or -user george   我们可以解释为在/tmp目录中查找属于fred或者george这两个用户的文件。
  在find命令中还可以使用“非”的关系来查找文件,如果我们要在/tmp目录中查找所有不属于panda的文件,使用一个简单的
  find /tmp ! -user panda   命令就可以解决了。很简单。

  查找并显示文件的方法
  查找到某个文件是我们的目的,我们更想知道查找到的文件的详细信息和属性,如果我们采取现查找文件,在使用LS命令来查看文件信息是相当繁琐的,现在我们也可以把这两个命令结合起来使用。

  find / -name "httpd.conf" -ls   系统查找到httpd.conf文件后立即在屏幕上显示httpd.conf文件信息。
  12063 34 -rw-r–r– 1 root root 33545 Dec 30 15:36 /etc/httpd/conf/httpd.conf

  下面的表格就是一些常用的查找文件并显示文件信息的参数和使用方法
  选项
  用途描述
  -exec command;
  查找并执行命令
  -fprint file
  打印文件完整文件名
  -fprint0 file
  打印文件完整文件名包括空的文件
  -fprintf file format
  打印文件格式
  -ok command;
  给用户命令执行操作,根据用户的Y 确认输入执行
  -printf format
  打印文件格式
  -ls
  打印同种文件格式的文件.

  总结:到这里为止我们已经学习了这名多关于find命令的使用方法,也列出了很多常用的find命令的选项,如果我们能熟练掌握在Linux中find命令的使用方法,那么在Linux中查找文件也不是一件困难的事情。

Windows n合1启动光盘制作攻略

——实战Boot Scriptor

  在“Windows n合1 启动光盘制作攻略——Windows 2000 3合1与Windows XP 2合1启动光盘的制作方法”一文中我讲解了Windows 2000 3合1光盘与Windows XP 2合1的光盘的制作原理与制作方法,相信各位朋友一定会有所启发,有些人已经自己动手操作了。但是后来发现,上文中有些错误,当时没有考虑到,这里修正如下:

  (1)Windows 2000:如果集成了SP2或SP3,一定要将i386子目录中的文件txtsetup.sif复制到各自的安装目录下(或者干脆用i386中的同名文件全部替换),覆盖掉原来的文件,否则安装时系统报错。

  (2)Windows XP:用CDImage制作ISO映像文件时,原来的“-n”参数要修改为“-j1”,否则ISO文件能够通过虚拟机测试,但烧录到光盘后会找不到ASMS目录里的文件,因为路径刚刚超过8层。

  各位朋友制作好了2合1、3合1后,一定希望弄个5合1、6合1、8合1、xx合1,把各个版本的操作系统通通搜罗进来!很好,如果你有DVD刻录机的话,或者有1.3 GB的DDCD刻录机,我就来满足你的这个愿望:MS & Linux xx合1启动版,只要你的DVD足够大。但是我不会帮你做,我只提供一个通用的办法。还是让我们以Windows 2000 3合1为例来讲解吧。

  1. 所需工具

  (1)WPROSECT.DAT、WSRVSECT.DAT、ASRVSECT.DAT
  必须。Windows 2000光盘启动引导文件。这三个文件其实是一样的,只是其中原来的字符串“i386”分别被替换成了“wpro”、“wsrv”和“asrv”。
  下载地址:http://www.tech-hints.com/files/2kroot.zip
  (2)CDImage.exe(命令行界面)或CDImagegui.exe(图形界面)
  必须。可启动光盘镜像制作工具,生成标准的ISO文件,同时优化光盘上的文件。
  下载地址:http://www.tech-hints.com/prog/cdimage.zip,http://www.tech-hints.com/prog/cdimagegui.zip
  (3)WinImg
  可选。解Windows 2000安装软盘组的img文件。可替换方法是制作4张安装软盘,然后将4张软盘上的全部文件复制到硬盘相应目录下。
  下载地址:http://www.winimage.com/winimage/winima60.zip
  (4)UltraEdit
  可选。十六进制编辑器。
  下载地址:ftp://ultraedit.com/uedit32.zip
  (5)Windows 2000安装软盘组
  必须。用软盘引导机器,加载必要的系统文件及基本驱动程序,然后从光盘继续安装。
  Windows 2000安装软盘组在正版光盘的bootdisk目录下,三个版本的安装软盘是不同的,不能混用。
  (6)Windows 2000 Service Pack 3
  可选。将Windows 2000 Service Pack 3集成进Windows 2000的三个版本中,这样安装完毕的Windows 2000就集成了Service Pack 3,不必再单独安装了。
  下载地址:http://download.microsoft.com/download/win2000platform/SP/SP3/NT5/CN/W2Ksp3.exe
  (7)VMware(或Virtual PC)和Nero
  可选。测试制作完成的3合1镜像文件并烧录光盘。
  (8)Boot Scriptor
  必须。多重启动光盘管理器。这个软件的版本发展非常快,各版本之间的功能大不相同,目前能够下载的是1.2.3b,如果以后出了新版本,可以参考这里的做法。
  下载地址:http://tigger.cc.uic.edu/~mterlo1/bscript/distro/Boot%20Scriptor%20(1.2.3b).zip

  2. 目录及文件结构

  保证硬盘上有足够空余空间(假设将文件存放在硬盘d:,全部三个版本的原始文件约占用空间为1.24 GB,生成的镜像文件约为502 MB),建立如下目录结构,并复制文件cdimage.exe到相应位置:
  d:win2kcdimage.exe
  d:win2k
ootasrv
  d:win2k
ootwpro
  d:win2k
ootwsrv
  其中,d:win2k
oot是Windows 2000 3合1光盘的根目录,d:win2k
ootasrv用于存放Windows 2000高级服务器版文件,d:win2k
ootwsrv用于存放Windows 2000服务器版文件,d:win2k
ootwpro用于存放Windows 2000专业版文件。

  3. 文件复制

  将Windows 2000高级服务器版光盘上的文件全部复制到asrv目录,将Windows 2000服务器版光盘上的文件全部复制到wsrv目录,将Windows 2000专业版光盘上的文件全部复制到wpro目录。

  必须确保复制了全部文件和子目录,包括具有系统和隐藏属性的。

  复制完毕后,清除d:win2k
oot下全部文件和子目录的系统、隐藏和只读属性。

  将d:win2k
ootasrv目录下的cdrom_ia.5和cdrom_nt.5复制到d:win2k
oot,将d:win2k
ootwsrv目录下的cdrom_is.5复制到d:win2k
oot,将d:win2k
ootwpro目录下的cdrom_ip.5复制到d:win2k
oot。

  要点:d:win2k
oot下面必须有cdrom_ia.5、cdrom_is.5、cdrom_ip.5和cdrom_nt.5文件,这是我们欺骗安装程序的标志:这张光盘是Windows 2000的原始安装盘。

  4. 将Service Pack 3集成到Windows 2000各版本中

  运行w2ksp3.exe /x将Service Pack 3全部文件提取出来,假设提取到f: mp。在f: mpi386update下分别运行命令行命令:
  update.exe -s:-D:win2k
ootasrv
  update.exe -s:-D:win2k
ootwsrv
  update.exe -s:-D:win2k
ootwpro
  上述命令运行完毕后,Service Pack 3已经集成到Windows 2000各版本中,且d:win2k
ootasrv、d:win2k
ootwsrv、d:win2k
ootwpro各目录下应有一文件cdromsp3.tst,将其复制到d:win2k
oot。
  要点:d:win2k
oot下面必须有cdromsp3.tst文件,否则安装程序会要求我们插入Service Pack 3光盘。

  5. 跳过输入产品序列号

  查找各个版本i386目录,找到文件setupp.ini,用记事本打开,将其中的“Pid=xxxxx000”修改为“Pid=xxxxx270”,存盘退出。这一步不是必须的,只是图个方便。

  6. 配置安装程序

  Windows 2000正版光盘上有个bootdisk子目录,里面包含4张Windows 2000安装软盘镜像的img文件。用WinImg将各个版本bootdisk目录下的4个img文件分别释放到各自的系统文件目录下:
  d:win2k
ootwproootdisk的img文件全部释放到d:win2k
ootwpro下。
  d:win2k
ootwsrvootdisk的img文件全部释放到d:win2k
ootwsrv下。
  d:win2k
ootasrvootdisk的img文件全部释放到d:win2k
ootasrv下。

  要点:这是我们模拟软盘安装的关键,一定要连带system32目录(里面有两个文件)一起释放。

  如果集成了Service Pack 3,需要将wpro、wsrv、asrv下面的文件用各自i386目录下面的文件替换(实际上只需要替换txtsetup.sif就行了),即将启动软盘组中的文件也替换为集成Service Pack 3后的文件。注意:一定不要替换system32中的文件,否则无法安装。

  要替换这一大堆文件比较繁琐,可以用两个办法:
  (1)xxcopy法。下载xxcopy(http://www.xxcopy.com/),执行下面的命令:
  xxcopy d:win2k
ootwproi386 d:win2k
ootwpro /U /E /YY
  xxcopy d:win2k
ootwsrvi386 d:win2k
ootwsrv /U /E /YY
  xxcopy d:win2k
ootasrvi386 d:win2k
ootasrv /U /E /YY
替换完成后删除wpro、wsrv、asrv下面的空目录(xxcopy替换的副产品)即可。
  (2)批处理替换法。以wpro目录为例:
  dir d:win2k
ootwpro*.* >1.bat
  move d:win2k
ootwpro1.bat d:win2k
ootwproi386
  用Ultraedit编辑1.bat,只保留文件名,每个文件名一行,修改每行的命令为
  copy [文件名] d:win2k
ootwpro
  存盘退出,在d:win2k
ootwproi386目录下运行1.bat,d:win2k
ootwproi386目录没有而d:win2k
ootwpro有的文件不替换。其他两个版本如法炮制。

  7. 修改setupldr.bin和txtsetup.sif

  用Ultraedit打开d:win2k
ootasrvsetupldr.bin,用ASCII方式替换“i386”为“asrv”,共3处;
  用Ultraedit打开d:win2k
ootwsrvsetupldr.bin,用ASCII方式替换“i386”为“wsrv”,共3处;
  用Ultraedit打开d:win2k
ootwprosetupldr.bin,用ASCII方式替换“i386”为“wpro”,共3处。
  存盘退出。

  用Ultraedit打开d:win2k
ootasrv xtsetup.sif,替换“SetupSourcePath = ""”为“SetupSourcePath = "asrv"”;
  用Ultraedit打开d:win2k
ootwsrv xtsetup.sif,替换“SetupSourcePath = ""”为“SetupSourcePath = "wsrv"”;
  用Ultraedit打开d:win2k
ootwpro xtsetup.sif,替换“SetupSourcePath = ""”为“SetupSourcePath = "wpro"”。
  存盘退出。

  要点:这两个文件中的路径告诉安装程序从何处复制文件,必须与目录结构相匹配。

  8. 启动菜单的制作

  释放文件Boot Scriptor (1.2.3b).zip,将其中的bscript子目录复制到d:win2k
oot,将bscriptloader.bin(光盘引导器)移动到d:win2k,删除bscriptscriptw.com,bscriptmodules中的文件不动(尽管有些是我们不需要的,但文件很小)。

  释放2kroot.zip,将其中的文件WPROSECT.DAT、WSRVSECT.DAT、ASRVSECT.DAT复制到d:win2k
ootscript。

  9. 编写启动菜单配置文件bscriptscript.ini
  start:
  clear
  print c "

c17===================================================
"
  print c "c17  c1fWindows 2000 Setupc17  
"
  print c "c17—————————————————
"
  print c "c17  
"
  print c "c17  c1f1c17 Windows 2000 Professional  
"
  print c "c17  c1f2c17 Windows 2000 Server  
"
  print c "c17  c1f3c17 Windows 2000 Advanced Server  
"
  print c "c17  
"
  print c "c17  c1fFc17 Boot from first Floppy Drive  
"
  print c "c17 c1f Escc17 Boot from first Hard Disk  
"
  print c "c17  
"
  print c "c17—————————————————
"
  print c "c17  Select the item and then press Enter  
"
  print c "c17===================================================
"
  ;
  start1:
  call drawscrn
  setpos 1 7
  print c "c3f  1c31 Windows 2000 Professional  "
  key1:
  getkey
  call mainkey
  onkey space goto item_1
  onkey enter goto item_1
  onkey up goto start5
  onkey down goto start2
  goto key1
  ;
  start2:
  call drawscrn
  setpos 1 8
  print c "c3f  2c31 Windows 2000 Server  "
  key2:
  getkey
  call mainkey
  onkey space goto item_2
  onkey enter goto item_2
  onkey up goto start1
  onkey down goto start3
  goto key2
  ;
  start3:
  call drawscrn
  setpos 1 9
  print c "c3f  3c31 Windows 2000 Advanced Server  "
  key3:
  getkey
  call mainkey
  onkey space goto item_3
  onkey enter goto item_3
  onkey up goto start2
  onkey down goto start4
  goto key3
  ;
  start4:
  call drawscrn
  setpos 1 11
  print c "c3f  Fc31 Boot from first Floppy Drive  "
  key4:
  getkey
  call mainkey
  onkey space boot 0x00
  onkey enter boot 0x00
  onkey up goto start3
  onkey down goto start5
  goto key4
  ;
  start5:
  call drawscrn
  setpos 1 12
  print c "c3f Escc31 Boot from first Hard Disk  "
  key5:
  getkey
  call mainkey
  onkey space boot 0x80
  onkey enter boot 0x80
  onkey up goto start4
  onkey down goto start1
  goto key5
  ;
  mainkey:
  onkey 1 goto item_1
  onkey 2 goto item_2
  onkey 3 goto item_3
  onkey f boot 0x00
  onkey F boot 0x00
  onkey esc boot 0x80
  return
  ;
  item_1:
  cls
  chain WPROSECT.DAT
  goto start1
  ;
  item_2:
  cls
  chain WSRVSECT.DAT
  goto start2
  ;
  item_3:
  cls
  chain ASRVSECT.DAT
  goto start3
  ;
  drawscrn:
  setpos 1 7
  print c "c1f  1c17 Windows 2000 Professional  
"
  print c "c1f  2c17 Windows 2000 Server  
"
  print c "c1f  3c17 Windows 2000 Advanced Server  
"
  print c "
"
  print c "c1f  Fc17 Boot from first Floppy Drive  
"
  print c "c1f Escc17 Boot from first Hard Disk  "
  return
  ;
  eof:
  ;
  这个菜单配置文件看起来挺复杂,实际上大量的代码都是为了使用光标键而重复的。除了界面有点简陋外(你可以加上ANSI制表符等高位DOS扩展符),这个配置文件实现了彩色字符、光标键选择、从软盘启动、从硬盘启动等多种功能。

  10. 制作ISO文件

  CDImage程序加“-o”参数优化后生成的镜像文件约为502 MB,我们假设将它存放在f:盘的根目录下,命令行命令如下:
  d:win2kcdimage -lWin2K-3in1 -t01/10/2000,12:00:00 -g -h -j1 -o -m -bd:win2kloader.bin d:win2k
oot f:w2k-3in1.iso

  11. 测试ISO文件

  用VMware加载w2k-3in1.iso文件,设置第1启动设备为光驱。从光盘启动后,系统将显示启动菜单,将显示条移动到相应的项目上,然后按回车键;也可以直接按快捷键。
  提示:如果仅仅为了测试菜单的效果,可以不删除bscriptscriptw.com,直接运行bscriptw.com,它将显示BscriptBscript.Ini的效果。

  12. 增加特殊文件

  可以根据个人的爱好,在光盘上再增加一些特殊文件,例如新版IE、DirectX及一些专用的驱动程序等,只需将其复制到d:win2k
oot目录下,并重新制作ISO文件。

  13.烧录光盘

  ISO镜像文件测试无误后,即可用自己熟悉的烧录软件软件(例如Nero)将其烧录到光盘。 这样,一张可启动的Windows 2000 3合1光盘就制作完成了。当然,最好再用光盘正式地安装一遍,因为VMware测试与光盘测试是不完全一样的。

  14.集成Windows XP

  Windows XP与Windows 2000的制作原理是一样的,如果要集成进去,只需要修改WPROSECT.DAT,将其中的“wpro”改为XP文件所在目录即可,并修改启动菜单配置文件bscriptscript.ini。这样的一张光盘优化以后大概有1 GB(Windows 2000与Windows XP相同的文件不多),你要考虑的首要问题是用什么盘来烧录。

  15.DOS、Windows 9x与Linux等可启动型n合1的制作

  DOS、Windows 9x和Linux等启动光盘都是采用单张软盘映像的,如何增加这类系统呢?简单得很:增加一个启动选项,并将BSCRIPT.INI中的chain WPROSECT.DAT修改为启动软盘映像就行了。假设软盘映像为boot1.img,具体方法有三种:
  (1)diskemu boot1.img
  (2)memdisk boot1.img
  (3)isolinux boot1.img
  这几种方法都需要用到bscriptmodules中的相应模块。三种方法的效果是不一样的,其中diskemu模拟法速度最快,兼容性最好,只在1.2.3b版本中刚刚引进,建议采用。其他两种是ISOLINUX所采用的传统方法。

  16.特色点评

  优点:彩色菜单,光标移动,xx合1,……,这是目前最最新、最最牛、最最棒、最最神奇、最最最最……的方法。
  缺点:Boot Scriptor的发展太快,各版本之间有点不兼容,但说实在的,后面的版本越来越好,尤其是diskemu的引入,最激动人心,最大得人心,最大快人心,几乎彻底解决了映像文件的兼容性问题。

Windows n合1 启动光盘制作攻略

——Windows 2000 3合1与Windows XP 2合1启动光盘的制作方法

  Windows 2000 3合1光盘(简体中文专业版+简体中文服务器版+简体中文高级服务器版)已经在街面上流行很久了,Windows XP 2合1的光盘(简体中文专业版+简体中文家庭版)最近也开始上街了。这些n合1的光盘中,有些是不能用光盘进行启动的,我们只能在DOS下安装;有些是能够光盘启动并从光盘正常安装的。不能启动的n合1光盘的制作非常简单,我们没有必要去讨论,我们最感兴趣的是哪些能够用光盘启动并正常安装的n合1光盘,本文的宗旨就是研究一下这类光盘的基本原理及制作方法。

  可启动型n合1光盘使用了多重启动光盘技术,这种技术近几年来开始流行,但目前尚未形成统一的工业标准,有多种方法可以实现它。最初,该技术采用的工具是CD启动模拟器:diskemu1x(我们应该感谢Bart和Gary Tong,他们总能够写出一些能够完成伟大工程的小程序)。diskemu1x功能很强大,使用也比较容易,但很可惜,Bart已经不再继续开发它了(参见http://www.nu2.nu/diskemu/)。所幸的是,Bart并没有放弃对Windows 2000 3合1的兴趣,他搞了一个体积更小巧,使用更容易,针对性更强的东西:w2kall.bin,Windows 2000通用启动引导器(再次感谢Bart)。目前街面上还没有使用w2kall制作的Windows 2000 3合1光盘。由于w2kall.bin附带的说明非常简短,网上更是无法查找到相关的信息,有鉴于此,我对它进行了一番研究,用w2kall成功地制作出了Windows 2000 3合1光盘。经过另一番试验,又成功地制作出了Windows XP 2合1光盘。下面就是我的一些心得体会,愿与各位朋友共享。

一、Windows 2000/XP多重启动光盘的启动原理

  Windows 2000/XP各版本的原始安装光盘是单重启动,其引导文件中固化了光盘根目录下的i386目录(这一点给制作多重启动的n合1光盘制造了最大的障碍),该目录中不仅存放了Windows 2000/XP的系统文件,而且还存放了安装所需的安装文件和驱动程序。其引导过程如下:

  光盘引导->setupldr->ntdetect->加载驱动程序->读txtsetup.sif->开始光盘安装

  上述多个步骤中都涉及了光盘根目录下的i386目录,而我们将制作的n合1光盘是多重启动的,每个版本都包含一个i386子目录,它与单重启动光盘的目录结构不同(在光盘根目录与i386目录之间多了1层版本目录),因此不能简单地照搬单重启动的引导过程。所幸前辈高手们早就碰到了这个难题,而且也非常巧妙地解决了,那就是使用Windows 2000/XP的安装软盘组:用软盘启动计算机,依次加载所需驱动程序及必要的系统文件,从而避开安装时到光盘根目录下的i386目录加载安装文件和驱动程序,然后安装程序再从Windows 2000/XP安装光盘中安装复制其余的文件,继续安装。我们所要模拟的就是这一过程。改造后的n合1光盘引导过程如下:

  光盘引导->选择版本模块->模拟软盘启动->setupldr->ntdetect->加载驱动程序->读txtsetup.sif->开始光盘安装

  并将上述多个步骤中都涉及到的光盘根目录下的i386目录更改为光盘根目录下的版本目录(该目录中将存放安装软盘组上的文件)。

二、Windows 2000 3合1启动光盘的制作

  1. 所需工具

  (1)w2kall.bin
  必须。Windows 2000光盘启动引导文件。
  下载地址:http://www.tech-hints.com/files/w2kall.zip
  (2)CDImage.exe(命令行界面)或CDImagegui.exe(图形界面)
  必须。可启动光盘镜像制作工具,生成标准的ISO文件,同时具有优化光盘上文件的功能,使相同的文件只刻录1个,其他的文件都连接到该文件,有点类似Unix的功能。
  下载地址:http://www.tech-hints.com/prog/cdimage.zip,http://www.tech-hints.com/prog/cdimagegui.zip
  (3)WinImg
  可选。解Windows 2000安装软盘组的img文件。可替换方法是制作4张安装软盘,然后将4张软盘上的全部文件复制到硬盘相应目录下。
  下载地址:http://www.winimage.com/winimage/winima60.zip
  (4)UltraEdit
  可选。十六进制编辑器,修改启动引导文件中的显示文字。
  下载地址:ftp://ultraedit.com/uedit32.zip
  (5)Windows 2000安装软盘组
  必须。用软盘引导机器,加载必要的系统文件及基本驱动程序,然后从光盘继续安装。
  Windows 2000安装软盘组在正版光盘的bootdisk目录下,三个版本的安装软盘是不同的,不能混用。
  (6)Windows 2000 Service Pack 3
  可选。将Windows 2000 Service Pack 3集成进Windows 2000的三个版本中,这样安装完毕的Windows 2000就集成了Service Pack 3,不必再单独安装了。
  下载地址:http://download.microsoft.com/download/win2000platform/SP/SP3/NT5/CN/W2Ksp3.exe
  (7)VMware(或Virtual PC)和Nero
  可选。测试制作完成的3合1镜像文件并烧录光盘。

  2. 目录及文件结构

  保证硬盘上有足够空余空间(假设将文件存放在硬盘d:,全部三个版本的原始文件约占用空间为1.24 GB,生成的镜像文件约为502 MB),建立如下目录结构,并复制文件w2kall.bin、cdimage.exe到相应位置:
  d:win2kw2kall.bin
  d:win2kcdimage.exe
  d:win2k
ootasrv
  d:win2k
ootwpro
  d:win2k
ootwsrv
  其中,d:win2k
oot是Windows 2000 3合1光盘的根目录,d:win2k
ootasrv用于存放Windows 2000高级服务器版文件,d:win2k
ootwsrv用于存放Windows 2000服务器版文件,d:win2k
ootwpro用于存放Windows 2000专业版文件。
  要点:“asrv”、“wsrv”和“wpro”的目录名称是固定在w2kall.bin中的,只能是4个字符长度。若需要存放在其他目录下,需要用UltraEdit修改w2kall.bin文件,找到“WPROWSRVASRV”,将其替换为其他名称,并相应修改目录结构。此外,还必须在后面的配置中进行相应修改。

  3. 文件复制

  将Windows 2000高级服务器版光盘上的文件全部复制到asrv目录,将Windows 2000服务器版光盘上的文件全部复制到wsrv目录,将Windows 2000专业版光盘上的文件全部复制到wpro目录。
  必须确保复制了全部文件和子目录,包括具有系统和隐藏属性的。
  复制完毕后,清除d:win2k
oot下全部文件和子目录的系统、隐藏和只读属性。
  将d:win2k
ootasrv目录下的cdrom_ia.5和cdrom_nt.5复制到d:win2k
oot,将d:win2k
ootwsrv目录下的cdrom_is.5复制到d:win2k
oot,将d:win2k
ootwpro目录下的cdrom_ip.5复制到d:win2k
oot。
  要点:d:win2k
oot下面必须有cdrom_ia.5、cdrom_is.5、cdrom_ip.5和cdrom_nt.5文件,这是我们欺骗安装程序的标志:这张光盘是Windows 2000的原始安装盘。

  4. 将Service Pack 3集成到Windows 2000各版本中

  运行w2ksp3.exe /x将Service Pack 3全部文件提取出来,假设提取到f: mp。在f: mpi386update下分别运行命令行命令:
  update.exe -s:-D:win2k
ootasrv
  update.exe -s:-D:win2k
ootwsrv
  update.exe -s:-D:win2k
ootwpro
  上述命令运行完毕后,Service Pack 3已经集成到Windows 2000各版本中,且d:win2k
ootasrv、d:win2k
ootwsrv、d:win2k
ootwpro各目录下应有一文件cdromsp3.tst,将其复制到d:win2k
oot。
  要点:d:win2k
oot下面必须有cdromsp3.tst文件,否则安装程序会要求我们插入Service Pack 3光盘。

  5. 跳过输入产品序列号

  查找各个版本i386目录,找到文件setupp.ini,用记事本打开,将其中的“Pid=xxxxx000”修改为“Pid=xxxxx270”,存盘退出。这一步不是必须的,只是图个方便。

  6. 配置安装程序

  Windows 2000正版光盘上有个bootdisk子目录,里面包含4张Windows 2000安装软盘镜像的img文件。用WinImg将各个版本bootdisk目录下的4个img文件分别释放到各自的系统文件目录下:
  d:win2k
ootwproootdisk的img文件全部释放到d:win2k
ootwpro下。
  d:win2k
ootwsrvootdisk的img文件全部释放到d:win2k
ootwsrv下。
  d:win2k
ootasrvootdisk的img文件全部释放到d:win2k
ootasrv下。
  要点:这是我们模拟软盘安装的关键,一定要连带system32目录(里面有两个文件)一起释放。
  从d:win2k
ootwproi386目录中复制bootfix.bin,将其分别粘贴到d:win2k
ootasrv、d:win2k
ootwpro和d:win2k
ootwsrv。该文件的作用就是光盘启动后显示一条信息“Press any key to boot from CD.”,并等待5秒钟,若没有按键,则从硬盘启动;否则从光盘启动。
  如果觉得5秒的延时太短,可以用UltraEdit编辑该文件,找到“Press any key to boot from CD.”后面的“49 00 12 00”,将“49”改为“AA”延时可达10秒,改为“FF”延时可达15秒。
  如果集成了Service Pack 3,需要将wpro、wsrv、asrv下面的文件用各自i386目录下面的文件替换(实际上只需要替换txtsetup.sif就行了),即将启动软盘组中的文件也替换为集成Service Pack 3后的文件。注意:一定不要替换system32中的文件,否则无法安装。
  要替换这一大堆文件比较繁琐,可以用两个办法:
  (1)xxcopy法。下载xxcopy(http://www.xxcopy.com/),执行下面的命令:
  xxcopy d:win2k
ootwproi386 d:win2k
ootwpro /U /E /YY
  xxcopy d:win2k
ootwsrvi386 d:win2k
ootwsrv /U /E /YY
  xxcopy d:win2k
ootasrvi386 d:win2k
ootasrv /U /E /YY
替换完成后删除wpro、wsrv、asrv下面的空目录(xxcopy替换的副产品)即可。
  (2)批处理替换法。以wpro目录为例:
  dir d:win2k
ootwpro*.* >1.bat
  move d:win2k
ootwpro1.bat d:win2k
ootwproi386
  用Ultraedit编辑1.bat,只保留文件名,每个文件名一行,修改每行的命令为
  copy [文件名] d:win2k
ootwpro
  存盘退出,在d:win2k
ootwproi386目录下运行1.bat,d:win2k
ootwproi386目录没有而d:win2k
ootwpro有的文件不替换。其他两个版本如法炮制。

  7. 修改setupldr.bin和txtsetup.sif

  用Ultraedit打开d:win2k
ootasrvsetupldr.bin,用ASCII方式替换“i386”为“asrv”,共3处;
  用Ultraedit打开d:win2k
ootwsrvsetupldr.bin,用ASCII方式替换“i386”为“wsrv”,共3处;
  用Ultraedit打开d:win2k
ootwprosetupldr.bin,用ASCII方式替换“i386”为“wpro”,共3处。
  存盘退出。
  用Ultraedit打开d:win2k
ootasrv xtsetup.sif,替换“SetupSourcePath = ""”为“SetupSourcePath = "asrv"”;
  用Ultraedit打开d:win2k
ootwsrv xtsetup.sif,替换“SetupSourcePath = ""”为“SetupSourcePath = "wsrv"”;
  用Ultraedit打开d:win2k
ootwpro xtsetup.sif,替换“SetupSourcePath = ""”为“SetupSourcePath = "wpro"”。
  存盘退出。
  要点:这两个文件中的路径告诉安装程序从何处复制文件,必须与目录结构相匹配。

  8. 启动菜单的修改

  Windows 2000启动引导文件w2kall.bin中已经内置了Windows 2000 3合1的启动菜单:
  [A] Windows 2000 Professional – English
  [B] Windows 2000 Server – English
  [C] Windows 2000 Advanced Server – English
  Choose an option and press [Enter]:
  所以我们不需再单独配置启动菜单。若需要修改该菜单,只需用UltraEdit打开w2kall.bin,找到相应的ASCII字符串,并修改为合适的字符串。例如,去掉所有的“ – English”。

  9. 配置完毕的目录结构及文件列表

  d:win2kcdimage.exe
  d:win2kw2kall.bin
  d:win2k
ootcdrom_ia.5
  d:win2k
ootcdrom_ip.5
  d:win2k
ootcdrom_is.5
  d:win2k
ootcdrom_nt.5
  d:win2k
ootcdromsp3.tst
  d:win2k
ootasrv1394bus.sy_
  d:win2k
ootasrvabp480n5.sy_
  d:win2k
ootasrvacpi.sy_
  d:win2k
ootasrvacpiec.sy_
  d:win2k
ootasrvadpu160m.sy_
  d:win2k
ootasrvaha154x.sy_
  d:win2k
ootasrvaic116x.sy_
  d:win2k
ootasrvaic78u2.sy_
  d:win2k
ootasrvaic78xx.sy_
  d:win2k
ootasrvamsint.sy_
  d:win2k
ootasrvasc.sy_
  d:win2k
ootasrvasc3350p.sy_
  d:win2k
ootasrvasc3550.sy_
  d:win2k
ootasrvatapi.sy_
  d:win2k
ootasrvautorun.inf
  d:win2k
ootasrviosinfo.inf
  d:win2k
ootasrvootfix.bin
  d:win2k
ootasrvootfont.bin
  d:win2k
ootasrvootvid.dl_
  d:win2k
ootasrvuslogic.sy_
  d:win2k
ootasrvc_936.nl_
  d:win2k
ootasrvcd20xrnt.sy_
  d:win2k
ootasrvcdfs.sy_
  d:win2k
ootasrvcdrom.sy_
  d:win2k
ootasrvcdrom_ia.5
  d:win2k
ootasrvcdrom_nt.5
  d:win2k
ootasrvcdromsp3.tst
  d:win2k
ootasrvclass2.sy_
  d:win2k
ootasrvclasspnp.sy_
  d:win2k
ootasrvcpqarray.sy_
  d:win2k
ootasrvcpqarry2.sy_
  d:win2k
ootasrvcpqfcalm.sy_
  d:win2k
ootasrvcpqfws2e.sy_
  d:win2k
ootasrvdac960nt.sy_
  d:win2k
ootasrvdisk.sy_
  d:win2k
ootasrvdisk101
  d:win2k
ootasrvdisk102
  d:win2k
ootasrvdisk103
  d:win2k
ootasrvdisk104
  d:win2k
ootasrvdmboot.sy_
  d:win2k
ootasrvdmio.sy_
  d:win2k
ootasrvdmload.sy_
  d:win2k
ootasrvfastfat.sy_
  d:win2k
ootasrvfd16_700.sy_
  d:win2k
ootasrvfdc.sy_
  d:win2k
ootasrvfireport.sy_
  d:win2k
ootasrvflashpnt.sy_
  d:win2k
ootasrvflpydisk.sy_
  d:win2k
ootasrvftdisk.sy_
  d:win2k
ootasrvhal.dl_
  d:win2k
ootasrvhalaacpi.dl_
  d:win2k
ootasrvhalacpi.dl_
  d:win2k
ootasrvhalapic.dl_
  d:win2k
ootasrvhidclass.sy_
  d:win2k
ootasrvhidparse.sy_
  d:win2k
ootasrvhidusb.sy_
  d:win2k
ootasrvi8042prt.sy_
  d:win2k
ootasrvini910u.sy_
  d:win2k
ootasrvintelide.sy_
  d:win2k
ootasrvipsraidn.sy_
  d:win2k
ootasrvisapnp.sy_
  d:win2k
ootasrvkbdclass.sy_
  d:win2k
ootasrvkbdhid.sy_
  d:win2k
ootasrvkbdus.dll
  d:win2k
ootasrvl_intl.nl_
  d:win2k
ootasrvlbrtfdc.sy_
  d:win2k
ootasrvlp6nds35.sy_
  d:win2k
ootasrvmountmgr.sy_
  d:win2k
ootasrvmraid35x.sy_
  d:win2k
ootasrv
crc710.sy_
  d:win2k
ootasrv
tdetect.com
  d:win2k
ootasrv
tfs.sy_
  d:win2k
ootasrv
tkrnlmp.ex_
  d:win2k
ootasrvohci1394.sy_
  d:win2k
ootasrvopenhci.sy_
  d:win2k
ootasrvpartmgr.sy_
  d:win2k
ootasrvpci.sy_
  d:win2k
ootasrvpciide.sy_
  d:win2k
ootasrvpciidex.sy_
  d:win2k
ootasrvpcmcia.sy_
  d:win2k
ootasrvql1080.sy_
  d:win2k
ootasrvql10wnt.sy_
  d:win2k
ootasrvql1240.sy_
  d:win2k
ootasrvql2100.sy_
  d:win2k
ootasrv
ead1st.txt
  d:win2k
ootasrv
eadme.doc
  d:win2k
ootasrvsbp2port.sy_
  d:win2k
ootasrvscsiport.sy_
  d:win2k
ootasrvserenum.sy_
  d:win2k
ootasrvserial.sy_
  d:win2k
ootasrvsetup.exe
  d:win2k
ootasrvsetupdd.sy_
  d:win2k
ootasrvsetupldr.bin
  d:win2k
ootasrvsetupreg.hiv
  d:win2k
ootasrvsfloppy.sy_
  d:win2k
ootasrvsparrow.sy_
  d:win2k
ootasrvspcmdcon.sys
  d:win2k
ootasrvspddlang.sy_
  d:win2k
ootasrvspnotes.htm
  d:win2k
ootasrvsym_hi.sy_
  d:win2k
ootasrvsymc810.sy_
  d:win2k
ootasrvsymc8xx.sy_
  d:win2k
ootasrv ffsport.sy_
  d:win2k
ootasrv xtsetup.sif
  d:win2k
ootasrvuhcd.sy_
  d:win2k
ootasrvultra66.sy_
  d:win2k
ootasrvusbd.sy_
  d:win2k
ootasrvusbhub.sy_
  d:win2k
ootasrvusbstor.sy_
  d:win2k
ootasrvvga.sy_
  d:win2k
ootasrvvgaoem.fo_
  d:win2k
ootasrvvideoprt.sy_
  d:win2k
ootasrvwmilib.sy_
  d:win2k
ootasrvootdisk……
  d:win2k
ootasrvclients……
  d:win2k
ootasrvi386……
  d:win2k
ootasrvprinters……
  d:win2k
ootasrvsetuptxt……
  d:win2k
ootasrvsupport……
  d:win2k
ootasrvsystem32
tdll.dll
  d:win2k
ootasrvsystem32smss.exe
  d:win2k
ootasrvvalueadd……
  d:win2k
ootwpro1394bus.sy_
  d:win2k
ootwproabp480n5.sy_
  d:win2k
ootwproacpi.sy_
  d:win2k
ootwproacpiec.sy_
  d:win2k
ootwproadpu160m.sy_
  d:win2k
ootwproaha154x.sy_
  d:win2k
ootwproaic116x.sy_
  d:win2k
ootwproaic78u2.sy_
  d:win2k
ootwproaic78xx.sy_
  d:win2k
ootwproamsint.sy_
  d:win2k
ootwproasc.sy_
  d:win2k
ootwproasc3350p.sy_
  d:win2k
ootwproasc3550.sy_
  d:win2k
ootwproatapi.sy_
  d:win2k
ootwproautorun.inf
  d:win2k
ootwproiosinfo.inf
  d:win2k
ootwproootfix.bin
  d:win2k
ootwproootfont.bin
  d:win2k
ootwproootvid.dl_
  d:win2k
ootwprouslogic.sy_
  d:win2k
ootwproc_936.nl_
  d:win2k
ootwprocd20xrnt.sy_
  d:win2k
ootwprocdfs.sy_
  d:win2k
ootwprocdrom.sy_
  d:win2k
ootwprocdrom_ip.5
  d:win2k
ootwprocdrom_nt.5
  d:win2k
ootwprocdromsp3.tst
  d:win2k
ootwproclass2.sy_
  d:win2k
ootwproclasspnp.sy_
  d:win2k
ootwprocpqarray.sy_
  d:win2k
ootwprocpqarry2.sy_
  d:win2k
ootwprocpqfcalm.sy_
  d:win2k
ootwprocpqfws2e.sy_
  d:win2k
ootwprodac960nt.sy_
  d:win2k
ootwprodisk.sy_
  d:win2k
ootwprodisk101
  d:win2k
ootwprodisk102
  d:win2k
ootwprodisk103
  d:win2k
ootwprodisk104
  d:win2k
ootwprodmboot.sy_
  d:win2k
ootwprodmio.sy_
  d:win2k
ootwprodmload.sy_
  d:win2k
ootwprofastfat.sy_
  d:win2k
ootwprofd16_700.sy_
  d:win2k
ootwprofdc.sy_
  d:win2k
ootwprofireport.sy_
  d:win2k
ootwproflashpnt.sy_
  d:win2k
ootwproflpydisk.sy_
  d:win2k
ootwproftdisk.sy_
  d:win2k
ootwprohal.dl_
  d:win2k
ootwprohalaacpi.dl_
  d:win2k
ootwprohalacpi.dl_
  d:win2k
ootwprohalapic.dl_
  d:win2k
ootwprohidclass.sy_
  d:win2k
ootwprohidparse.sy_
  d:win2k
ootwprohidusb.sy_
  d:win2k
ootwproi8042prt.sy_
  d:win2k
ootwproini910u.sy_
  d:win2k
ootwprointelide.sy_
  d:win2k
ootwproipsraidn.sy_
  d:win2k
ootwproisapnp.sy_
  d:win2k
ootwprokbdclass.sy_
  d:win2k
ootwprokbdhid.sy_
  d:win2k
ootwprokbdus.dll
  d:win2k
ootwprol_intl.nl_
  d:win2k
ootwprolbrtfdc.sy_
  d:win2k
ootwprolp6nds35.sy_
  d:win2k
ootwpromountmgr.sy_
  d:win2k
ootwpromraid35x.sy_
  d:win2k
ootwpro
crc710.sy_
  d:win2k
ootwpro
tdetect.com
  d:win2k
ootwpro
tfs.sy_
  d:win2k
ootwpro
tkrnlmp.ex_
  d:win2k
ootwproohci1394.sy_
  d:win2k
ootwproopenhci.sy_
  d:win2k
ootwpropartmgr.sy_
  d:win2k
ootwpropci.sy_
  d:win2k
ootwpropciide.sy_
  d:win2k
ootwpropciidex.sy_
  d:win2k
ootwpropcmcia.sy_
  d:win2k
ootwproql1080.sy_
  d:win2k
ootwproql10wnt.sy_
  d:win2k
ootwproql1240.sy_
  d:win2k
ootwproql2100.sy_
  d:win2k
ootwpro
ead1st.txt
  d:win2k
ootwpro
eadme.doc
  d:win2k
ootwprosbp2port.sy_
  d:win2k
ootwproscsiport.sy_
  d:win2k
ootwproserenum.sy_
  d:win2k
ootwproserial.sy_
  d:win2k
ootwprosetup.exe
  d:win2k
ootwprosetupdd.sy_
  d:win2k
ootwprosetupldr.bin
  d:win2k
ootwprosetupreg.hiv
  d:win2k
ootwprosfloppy.sy_
  d:win2k
ootwprosparrow.sy_
  d:win2k
ootwprospcmdcon.sys
  d:win2k
ootwprospddlang.sy_
  d:win2k
ootwprospnotes.htm
  d:win2k
ootwprosym_hi.sy_
  d:win2k
ootwprosymc810.sy_
  d:win2k
ootwprosymc8xx.sy_
  d:win2k
ootwpro ffsport.sy_
  d:win2k
ootwpro xtsetup.sif
  d:win2k
ootwprouhcd.sy_
  d:win2k
ootwproultra66.sy_
  d:win2k
ootwprousbd.sy_
  d:win2k
ootwprousbhub.sy_
  d:win2k
ootwprousbstor.sy_
  d:win2k
ootwprovga.sy_
  d:win2k
ootwprovgaoem.fo_
  d:win2k
ootwprovideoprt.sy_
  d:win2k
ootwprowmilib.sy_
  d:win2k
ootwproootdisk……
  d:win2k
ootwprodiscover……
  d:win2k
ootwproi386……
  d:win2k
ootwprosetuptxt……
  d:win2k
ootwprosupport……
  d:win2k
ootwprosystem32
tdll.dll
  d:win2k
ootwprosystem32smss.exe
  d:win2k
ootwprovalueadd……
  d:win2k
ootwsrv1394bus.sy_
  d:win2k
ootwsrvabp480n5.sy_
  d:win2k
ootwsrvacpi.sy_
  d:win2k
ootwsrvacpiec.sy_
  d:win2k
ootwsrvadpu160m.sy_
  d:win2k
ootwsrvaha154x.sy_
  d:win2k
ootwsrvaic116x.sy_
  d:win2k
ootwsrvaic78u2.sy_
  d:win2k
ootwsrvaic78xx.sy_
  d:win2k
ootwsrvamsint.sy_
  d:win2k
ootwsrvasc.sy_
  d:win2k
ootwsrvasc3350p.sy_
  d:win2k
ootwsrvasc3550.sy_
  d:win2k
ootwsrvatapi.sy_
  d:win2k
ootwsrvautorun.inf
  d:win2k
ootwsrviosinfo.inf
  d:win2k
ootwsrvootfix.bin
  d:win2k
ootwsrvootfont.bin
  d:win2k
ootwsrvootvid.dl_
  d:win2k
ootwsrvuslogic.sy_
  d:win2k
ootwsrvc_936.nl_
  d:win2k
ootwsrvcd20xrnt.sy_
  d:win2k
ootwsrvcdfs.sy_
  d:win2k
ootwsrvcdrom.sy_
  d:win2k
ootwsrvcdrom_is.5
  d:win2k
ootwsrvcdrom_nt.5
  d:win2k
ootwsrvcdromsp3.tst
  d:win2k
ootwsrvclass2.sy_
  d:win2k
ootwsrvclasspnp.sy_
  d:win2k
ootwsrvcpqarray.sy_
  d:win2k
ootwsrvcpqarry2.sy_
  d:win2k
ootwsrvcpqfcalm.sy_
  d:win2k
ootwsrvcpqfws2e.sy_
  d:win2k
ootwsrvdac960nt.sy_
  d:win2k
ootwsrvdisk.sy_
  d:win2k
ootwsrvdisk101
  d:win2k
ootwsrvdisk102
  d:win2k
ootwsrvdisk103
  d:win2k
ootwsrvdisk104
  d:win2k
ootwsrvdmboot.sy_
  d:win2k
ootwsrvdmio.sy_
  d:win2k
ootwsrvdmload.sy_
  d:win2k
ootwsrvfastfat.sy_
  d:win2k
ootwsrvfd16_700.sy_
  d:win2k
ootwsrvfdc.sy_
  d:win2k
ootwsrvfireport.sy_
  d:win2k
ootwsrvflashpnt.sy_
  d:win2k
ootwsrvflpydisk.sy_
  d:win2k
ootwsrvftdisk.sy_
  d:win2k
ootwsrvhal.dl_
  d:win2k
ootwsrvhalaacpi.dl_
  d:win2k
ootwsrvhalacpi.dl_
  d:win2k
ootwsrvhalapic.dl_
  d:win2k
ootwsrvhidclass.sy_
  d:win2k
ootwsrvhidparse.sy_
  d:win2k
ootwsrvhidusb.sy_
  d:win2k
ootwsrvi8042prt.sy_
  d:win2k
ootwsrvini910u.sy_
  d:win2k
ootwsrvintelide.sy_
  d:win2k
ootwsrvipsraidn.sy_
  d:win2k
ootwsrvisapnp.sy_
  d:win2k
ootwsrvkbdclass.sy_
  d:win2k
ootwsrvkbdhid.sy_
  d:win2k
ootwsrvkbdus.dll
  d:win2k
ootwsrvl_intl.nl_
  d:win2k
ootwsrvlbrtfdc.sy_
  d:win2k
ootwsrvlp6nds35.sy_
  d:win2k
ootwsrvmountmgr.sy_
  d:win2k
ootwsrvmraid35x.sy_
  d:win2k
ootwsrv
crc710.sy_
  d:win2k
ootwsrv
tdetect.com
  d:win2k
ootwsrv
tfs.sy_
  d:win2k
ootwsrv
tkrnlmp.ex_
  d:win2k
ootwsrvohci1394.sy_
  d:win2k
ootwsrvopenhci.sy_
  d:win2k
ootwsrvpartmgr.sy_
  d:win2k
ootwsrvpci.sy_
  d:win2k
ootwsrvpciide.sy_
  d:win2k
ootwsrvpciidex.sy_
  d:win2k
ootwsrvpcmcia.sy_
  d:win2k
ootwsrvql1080.sy_
  d:win2k
ootwsrvql10wnt.sy_
  d:win2k
ootwsrvql1240.sy_
  d:win2k
ootwsrvql2100.sy_
  d:win2k
ootwsrv
ead1st.txt
  d:win2k
ootwsrv
eadme.doc
  d:win2k
ootwsrvsbp2port.sy_
  d:win2k
ootwsrvscsiport.sy_
  d:win2k
ootwsrvserenum.sy_
  d:win2k
ootwsrvserial.sy_
  d:win2k
ootwsrvsetup.exe
  d:win2k
ootwsrvsetupdd.sy_
  d:win2k
ootwsrvsetupldr.bin
  d:win2k
ootwsrvsetupreg.hiv
  d:win2k
ootwsrvsfloppy.sy_
  d:win2k
ootwsrvsparrow.sy_
  d:win2k
ootwsrvspcmdcon.sys
  d:win2k
ootwsrvspddlang.sy_
  d:win2k
ootwsrvspnotes.htm
  d:win2k
ootwsrvsym_hi.sy_
  d:win2k
ootwsrvsymc810.sy_
  d:win2k
ootwsrvsymc8xx.sy_
  d:win2k
ootwsrv ffsport.sy_
  d:win2k
ootwsrv xtsetup.sif
  d:win2k
ootwsrvuhcd.sy_
  d:win2k
ootwsrvultra66.sy_
  d:win2k
ootwsrvusbd.sy_
  d:win2k
ootwsrvusbhub.sy_
  d:win2k
ootwsrvusbstor.sy_
  d:win2k
ootwsrvvga.sy_
  d:win2k
ootwsrvvgaoem.fo_
  d:win2k
ootwsrvvideoprt.sy_
  d:win2k
ootwsrvwmilib.sy_
  d:win2k
ootwsrvootdisk……
  d:win2k
ootwsrvclients……
  d:win2k
ootwsrvi386……
  d:win2k
ootwsrvprinters……
  d:win2k
ootwsrvsetuptxt……
  d:win2k
ootwsrvsupport……
  d:win2k
ootwsrvsystem32
tdll.dll
  d:win2k
ootwsrvsystem32smss.exe
  d:win2k
ootwsrvvalueadd……

  10. 制作ISO文件

  CDImage程序加“-o”参数优化后生成的镜像文件约为502 MB,我们假设将它存放在f:盘的根目录下,命令行命令如下:
  d:win2kcdimage -lWin2K-3in1 -t01/10/2000,12:00:00 -g -h -n -o -m -bd:win2kw2kall.bin d:win2k
oot f:w2k-3in1.iso
  上述命令中各参数含义分别为:
  -l:设置光盘卷标。此处为“Win2K-3in1”。
  -t:设置光盘上所有文件的生成日期。此处为“2000年1月10日格林威治时间(GMT)上午12点整”。
  -g:转换本地时间与格林威治时间(GMT)。但如果是在Windows XP系统下,该参数似乎不起作用,“-t”参数指定的是GMT时间,而文件的生成时间是“-t”指定的时间加上时区转换后的本地时间。如,上例中的文件生成本地时间是“20:00:00”,即GMT+8=北京时间。
  -h:包含隐藏的目录和文件。
  -n:允许长文件名。
  -o:优化相同的文件,最重要的参数,这是我们将3个版本的1.24 GB文件压缩到502 MB的关键。
  -m:允许生成的ISO文件超过640 MB。
  -b:光盘启动引导程序,此处我们使用了w2kall.bin。
  d:win2k
oot:源文件路径,将作为光盘的根目录。
  f:w2k-3in1.iso:最后生成的ISO文件,我们要的就是它。
  要点:cdimage /?可显示所有选项。CDImagegui提供了一个图形界面,使用更直观,功能是一样的。

  11. 测试ISO文件

  用VMware加载w2k-3in1.iso文件,设置第1启动设备为光驱。从光盘启动后,系统首先显示信息“Press any key to boot from CD.”,按任意键后,出现[A]、[B]、[C]3个选项菜单,键入A、B或C键然后回车,可启动相应安装版本,此后的安装与原版光盘的安装一致。需要逐个安装,以测试各个版本的完整性。

  12. 增加特殊文件

  可以根据个人的爱好,在光盘上再增加一些特殊文件,例如新版IE、DirectX及一些专用的驱动程序等,只需将其复制到d:win2k
oot目录下,并重新制作ISO文件。

  13.烧录光盘

  ISO镜像文件测试无误后,即可用自己熟悉的烧录软件软件(例如Nero)将其烧录到光盘。 这样,一张可启动的Windows 2000 3合1光盘就制作完成了。当然,最好再用光盘正式地安装一遍,因为VMware测试与光盘测试是不完全一样的。

三、Windows XP 2合1启动光盘的制作

  Windows XP与Windows 2000(当然还包括Windows NT 4.0)同属于Windows NT系列,其启动过程是非常相似的。虽然Bart开发w2kall.bin的初衷是制作3合1的Windows 2000,但既然它能够引导Windows 2000,那么它能否引导Windows XP呢?绝对可以。虽然与制作Windows 2000 3合1的过程类似,但其中有一些明显的不同,而且我们还需要对w2kall.bin进行一些适当的改造,希望朋友们多加注意。下面我介绍Windows XP 2合1启动光盘的制作过程。

  1. 所需工具

  (1)w2kall.bin
  必须。Windows 2000/XP光盘启动引导文件。
  下载地址:http://www.tech-hints.com/files/w2kall.zip
  (2)CDImage.exe(命令行界面)或CDImagegui.exe(图形界面)
  必须。可启动光盘镜像制作工具,生成标准的ISO文件,同时具有优化光盘上文件的功能,使相同的文件只刻录一个,其他的文件都连接到该文件。
  下载地址:http://www.tech-hints.com/prog/cdimage.zip,http://www.tech-hints.com/prog/cdimagegui.zip
  (3)WinZip、WinImg
  可选。解Windows XP安装软盘组的img文件。可替换方法是制作6张安装软盘,然后将6张软盘上的全部文件复制到硬盘。
  下载地址:http://www.winimage.com/winimage/winima60.zip,http://www.winzip.com/getsite.cgi?winzip81.exe
  (4)UltraEdit
  必须。十六进制编辑器,修改启动引导文件中的显示文字,并修改Windows XP不同版本的存放路径。
  下载地址:ftp://ultraedit.com/uedit32.zip
  (5)Windows XP安装软盘组
  必须。用软盘引导机器,加载必要的系统文件及基本驱动程序,然后从光盘继续安装。
  专业版及家庭版的安装软盘是不同的,二者不能混用。XP的安装软盘组必须从微软网站下载:
  简体中文专业版:winxp_cn_pro_bf.exe
  下载地址:http://www.microsoft.com/downloads/release.asp?releaseid=33494   简体中文家庭版:winxp_cn_hom_bf.exe
  下载地址:http://www.microsoft.com/downloads/release.asp?releaseid=33493
  (6)VMware(或Virtual PC)和Nero
  可选。测试制作完成的3合1镜像文件并烧录光盘。

  2. 目录及文件结构

  保证硬盘上有足够空余空间(假设将文件存放在硬盘d:,全部2个版本的原始文件约占用空间为1.02 GB,生成的镜像文件约为558 MB),建立如下目录结构,并复制文件w2kall.bin、cdimage.exe到相应位置:
  d:winxpw2kall.bin
  d:winxpcdimage.exe
  d:winxp
oothome
  d:winxp
ootwpro
  其中,d:winxp
oot是Windows XP 2合1光盘的根目录,d:winxp
oothome用于存放Windows XP家庭版文件,d:winxp
ootwpro用于存放Windows XP专业版文件。
  要点:“home”和“wpro”的目录名称需要固定在w2kall.bin中,只能是4个字符长度。若需要存放在其他目录下,必须用UltraEdit修改w2kall.bin文件,找到“WPROWSRVASRV”,将其替换为其他名称,并相应修改目录结构。此外,还必须在后面的配置中进行相应修改。

  3. 文件复制

  将Windows XP家庭版光盘上的文件全部复制到home目录,将Windows XP专业版光盘上的文件全部复制到wpro目录。
  必须确保复制了全部文件和子目录,包括具有系统和隐藏属性的。
  复制完毕后,清除d:winxp
oot下全部文件和子目录的系统、隐藏和只读属性。
  将d:winxp
oothome目录下的win51和win51ic复制到d:winxp
oot,将d:winxp
ootwpro目录下的win51ip复制到d:winxp
oot。
  要点:d:winxp
oot下面必须有win51、win51ic和win51ip文件,这是我们欺骗安装程序的标志:这张光盘是Windows XP原始安装盘。

  4. 配置安装程序

  将下载到的winxp_cn_pro_bf.exe文件用WinZip释放到硬盘任一目录,得到6个img文件。用WinImg将6个img文件释放到目录d:winxp
ootwpro。
  将下载到的winxp_cn_hom_bf.exe文件用WinZip释放到硬盘任一目录,得到6个img文件。用WinImg将6个img文件释放到目录d:winxp
oothome。
  要点:这是我们模拟软盘安装的关键,一定要连带system32目录(里面有两个文件)一起释放。
  从d:winxp
ootwproi386目录中复制bootfix.bin,将其分别粘贴到d:winxp
oothome和d:winxp
ootwpro。该文件的作用就是光盘启动后显示一条信息“Press any key to boot from CD.”,并等待5秒钟,若没有按键,则从硬盘启动;否则从光盘启动。
  如果觉得5秒的延时太短,可以用Ultraedit编辑该文件,找到“Press any key to boot from CD.”后面的“49 00 12 00”,将“49”改为“AA”延时可达10秒,改为“FF”延时可达15秒。

  5. 修改w2kall.bin

  w2kall.bin是专门针对Windows 2000 3合1启动光盘而开发的,要使它适用于Windows XP 2合1光盘的启动引导,我们必须对其进行一些适当的修改。
  用UltraEdit打开d:win2k
ootw2kall.bin,找到启动菜单:

  [A] Windows 2000 Professional – English
  [B] Windows 2000 Server – English
  [C] Windows 2000 Advanced Server – English

  Choose an option and press [Enter]:

  将其修改为:

  [A] Windows XP Professional
  [B] Windows XP Home
  ==================================

  Choose an option and press [Enter]:

  再查找“WPROWSRVASRV”,将其替换为找到“WPROHOMEHOME”。
  启动菜单接受4个键:A、B、C键和回车键,若用户按了A和B键,将进行相应的安装,若用户按了C键,将安装家庭版,且没有提示。这样的处理比较简单,高手们可以考虑屏蔽C键。
  要点:“WPROHOMEHOME”是光盘安装路径,一定要与目录结构相匹配。最后一个“HOME”对应C键,若用户按了C键后,应使其能够找到相应目录,或在启动菜单中干脆注明“[B/C] Windows XP Home”。

  6. 修改setupldr.bin和txtsetup.si_

  用UltraEdit打开d:winxp
oothomesetupldr.bin,用ASCII方式替换“i386”为“home”,共4处。
  用UltraEdit打开d:winxp
ootwprosetupldr.bin,用ASCII方式替换“i386”为“wpro”,共4处。
  存盘退出。
  将文件d:winxp
oothome xtsetup.si_复制到d:,在d:下运行命令行命令:
  expand txtsetup.si_ txtsetup.sif
  用UltraEdit打开d: xtsetup.sif,替换“SetupSourcePath = ""”为“SetupSourcePath = "home"”;
  存盘退出。
  将txtsetup.sif改名为txtsetup.si_,覆盖掉d:winxp
oothome xtsetup.si_。
  将文件d:winxp
ootwpro xtsetup.si_复制到d:,在d:下运行命令行命令:
  expand txtsetup.si_ txtsetup.sif
  用UltraEdit打开d: xtsetup.sif,替换“SetupSourcePath = ""”为“SetupSourcePath = "wpro"”;
  存盘退出。
  将txtsetup.sif改名为txtsetup.si_,覆盖掉d:winxp
ootwpro xtsetup.si_
  简单办法:将i386中的txtsetup.sif复制到各自的上层目录,删除掉txtsetup.si_,并修改txtsetup.sif,效果一样。
  要点:这两个文件中的路径安装程序告诉安装程序从何处复制文件,必须与目录结构相匹配。

  7. 配置完毕的目录结构及文件列表

  d:winxpcdimage.exe
  d:winxpw2kall.bin
  d:winxp
ootwin51
  d:winxp
ootwin51ic
  d:winxp
ootwin51ip
  d:winxp
oothome1394bus.sy_
  d:winxp
oothome1394vdbg.sy_
  d:winxp
oothomeabp480n5.sy_
  d:winxp
oothomeacpi.sy_
  d:winxp
oothomeacpiec.sy_
  d:winxp
oothomeadpu160m.sy_
  d:winxp
oothomeaha154x.sy_
  d:winxp
oothomeaic78u2.sy_
  d:winxp
oothomeaic78xx.sy_
  d:winxp
oothomealiide.sy_
  d:winxp
oothomeamsint.sy_
  d:winxp
oothomeasc.sy_
  d:winxp
oothomeasc3350p.sy_
  d:winxp
oothomeasc3550.sy_
  d:winxp
oothomeatapi.sy_
  d:winxp
oothomeautorun.inf
  d:winxp
oothomeiosinfo.inf
  d:winxp
oothomeootfix.bin
  d:winxp
oothomeootfont.bin
  d:winxp
oothomeootvid.dl_
  d:winxp
oothomec_936.nl_
  d:winxp
oothomecbidf2k.sy_
  d:winxp
oothomecd20xrnt.sy_
  d:winxp
oothomecdfs.sy_
  d:winxp
oothomecdrom.sy_
  d:winxp
oothomeclasspnp.sy_
  d:winxp
oothomecmdide.sy_
  d:winxp
oothomecpqarray.sy_
  d:winxp
oothomedac2w2k.sy_
  d:winxp
oothomedac960nt.sy_
  d:winxp
oothomedisk.sy_
  d:winxp
oothomedisk101
  d:winxp
oothomedisk102
  d:winxp
oothomedisk103
  d:winxp
oothomedisk104
  d:winxp
oothomedisk105
  d:winxp
oothomedisk106
  d:winxp
oothomedmboot.sy_
  d:winxp
oothomedmio.sy_
  d:winxp
oothomedmload.sy_
  d:winxp
oothomedpti2o.sy_
  d:winxp
oothomedrvmain.sdb
  d:winxp
oothomefastfat.sy_
  d:winxp
oothomefdc.sy_
  d:winxp
oothomeflpydisk.sy_
  d:winxp
oothomeftdisk.sy_
  d:winxp
oothomehal.dl_
  d:winxp
oothomehalaacpi.dl_
  d:winxp
oothomehalacpi.dl_
  d:winxp
oothomehalapic.dl_
  d:winxp
oothomehalmacpi.dl_
  d:winxp
oothomehalmps.dl_
  d:winxp
oothomehalsp.dl_
  d:winxp
oothomehidclass.sy_
  d:winxp
oothomehidparse.sy_
  d:winxp
oothomehidusb.sy_
  d:winxp
oothomehpn.sy_
  d:winxp
oothomehpt3xx.sy_
  d:winxp
oothomei2omgmt.sy_
  d:winxp
oothomei2omp.sy_
  d:winxp
oothomei8042prt.sy_
  d:winxp
oothomeini910u.sy_
  d:winxp
oothomeintelide.sy_
  d:winxp
oothomeisapnp.sy_
  d:winxp
oothomekbda1.dll
  d:winxp
oothomekbda2.dll
  d:winxp
oothomekbda3.dll
  d:winxp
oothomekbdal.dll
  d:winxp
oothomekbdarme.dll
  d:winxp
oothomekbdarmw.dll
  d:winxp
oothomekbdaze.dll
  d:winxp
oothomekbdazel.dll
  d:winxp
oothomekbdbe.dll
  d:winxp
oothomekbdblr.dll
  d:winxp
oothomekbdbr.dll
  d:winxp
oothomekbdbu.dll
  d:winxp
oothomekbdca.dll
  d:winxp
oothomekbdclass.sy_
  d:winxp
oothomekbdcr.dll
  d:winxp
oothomekbdcz.dll
  d:winxp
oothomekbdcz1.dll
  d:winxp
oothomekbdcz2.dll
  d:winxp
oothomekbdda.dll
  d:winxp
oothomekbddiv1.dll
  d:winxp
oothomekbddiv2.dll
  d:winxp
oothomekbddv.dll
  d:winxp
oothomekbdes.dll
  d:winxp
oothomekbdest.dll
  d:winxp
oothomekbdfa.dll
  d:winxp
oothomekbdfc.dll
  d:winxp
oothomekbdfi.dll
  d:winxp
oothomekbdfr.dll
  d:winxp
oothomekbdgae.dll
  d:winxp
oothomekbdgeo.dll
  d:winxp
oothomekbdgkl.dll
  d:winxp
oothomekbdgr.dll
  d:winxp
oothomekbdgr1.dll
  d:winxp
oothomekbdhe.dll
  d:winxp
oothomekbdhe220.dll
  d:winxp
oothomekbdhe319.dll
  d:winxp
oothomekbdheb.dll
  d:winxp
oothomekbdhela2.dll
  d:winxp
oothomekbdhela3.dll
  d:winxp
oothomekbdhept.dll
  d:winxp
oothomekbdhid.sy_
  d:winxp
oothomekbdhu.dll
  d:winxp
oothomekbdhu1.dll
  d:winxp
oothomekbdic.dll
  d:winxp
oothomekbdindev.dll
  d:winxp
oothomekbdinguj.dll
  d:winxp
oothomekbdinhin.dll
  d:winxp
oothomekbdinkan.dll
  d:winxp
oothomekbdinmar.dll
  d:winxp
oothomekbdinpun.dll
  d:winxp
oothomekbdintam.dll
  d:winxp
oothomekbdintel.dll
  d:winxp
oothomekbdir.dll
  d:winxp
oothomekbdit.dll
  d:winxp
oothomekbdit142.dll
  d:winxp
oothomekbdkaz.dll
  d:winxp
oothomekbdkyr.dll
  d:winxp
oothomekbdla.dll
  d:winxp
oothomekbdlt.dll
  d:winxp
oothomekbdlt1.dll
  d:winxp
oothomekbdlv.dll
  d:winxp
oothomekbdlv1.dll
  d:winxp
oothomekbdmon.dll
  d:winxp
oothomekbdne.dll
  d:winxp
oothomekbdnec.dll
  d:winxp
oothomekbdno.dll
  d:winxp
oothomekbdpl.dll
  d:winxp
oothomekbdpl1.dll
  d:winxp
oothomekbdpo.dll
  d:winxp
oothomekbdro.dll
  d:winxp
oothomekbdru.dll
  d:winxp
oothomekbdru1.dll
  d:winxp
oothomekbdsf.dll
  d:winxp
oothomekbdsg.dll
  d:winxp
oothomekbdsl.dll
  d:winxp
oothomekbdsl1.dll
  d:winxp
oothomekbdsp.dll
  d:winxp
oothomekbdsw.dll
  d:winxp
oothomekbdsyr1.dll
  d:winxp
oothomekbdsyr2.dll
  d:winxp
oothomekbdtat.dll
  d:winxp
oothomekbdth0.dll
  d:winxp
oothomekbdth1.dll
  d:winxp
oothomekbdth2.dll
  d:winxp
oothomekbdth3.dll
  d:winxp
oothomekbdtuf.dll
  d:winxp
oothomekbdtuq.dll
  d:winxp
oothomekbduk.dll
  d:winxp
oothomekbdur.dll
  d:winxp
oothomekbdurdu.dll
  d:winxp
oothomekbdus.dll
  d:winxp
oothomekbdusl.dll
  d:winxp
oothomekbdusr.dll
  d:winxp
oothomekbdusx.dll
  d:winxp
oothomekbduzb.dll
  d:winxp
oothomekbdvntc.dll
  d:winxp
oothomekbdycc.dll
  d:winxp
oothomekbdycl.dll
  d:winxp
oothomekd1394.dl_
  d:winxp
oothomekdcom.dl_
  d:winxp
oothomeksecdd.sys
  d:winxp
oothomel_intl.nl_
  d:winxp
oothomelbrtfdc.sy_
  d:winxp
oothomemountmgr.sy_
  d:winxp
oothomemraid35x.sy_
  d:winxp
oothome
tdetect.com
  d:winxp
oothome
tfs.sys
  d:winxp
oothome
tkrnlmp.ex_
  d:winxp
oothomeohci1394.sy_
  d:winxp
oothomeoprghdlr.sy_
  d:winxp
oothomepartmgr.sy_
  d:winxp
oothomepci.sy_
  d:winxp
oothomepciide.sy_
  d:winxp
oothomepciidex.sy_
  d:winxp
oothomepcmcia.sy_
  d:winxp
oothomeperc2.sy_
  d:winxp
oothomeperc2hib.sy_
  d:winxp
oothomeql1080.sy_
  d:winxp
oothomeql10wnt.sy_
  d:winxp
oothomeql12160.sy_
  d:winxp
oothomeql1240.sy_
  d:winxp
oothomeql1280.sy_
  d:winxp
oothome
amdisk.sy_
  d:winxp
oothome
eadme.htm
  d:winxp
oothomesbp2port.sy_
  d:winxp
oothomescsiport.sy_
  d:winxp
oothomeserenum.sy_
  d:winxp
oothomeserial.sy_
  d:winxp
oothomesetup.exe
  d:winxp
oothomesetupdd.sy_
  d:winxp
oothomesetupldr.bin
  d:winxp
oothomesetupreg.hiv
  d:winxp
oothomesfloppy.sy_
  d:winxp
oothomeslip.sy_
  d:winxp
oothomesparrow.sy_
  d:winxp
oothomespcmdcon.sys
  d:winxp
oothomespddlang.sy_
  d:winxp
oothomesq.txt
  d:winxp
oothomestreamip.sy_
  d:winxp
oothomesym_hi.sy_
  d:winxp
oothomesym_u3.sy_
  d:winxp
oothomesymc810.sy_
  d:winxp
oothomesymc8xx.sy_
  d:winxp
oothome ffsport.sy_
  d:winxp
oothome oside.sy_
  d:winxp
oothome xtsetup.si_
  d:winxp
oothomeultra.sy_
  d:winxp
oothomeusbccgp.sy_
  d:winxp
oothomeusbd.sy_
  d:winxp
oothomeusbhub.sy_
  d:winxp
oothomeusbohci.sy_
  d:winxp
oothomeusbport.sy_
  d:winxp
oothomeusbstor.sy_
  d:winxp
oothomeusbuhci.sy_
  d:winxp
oothomevga.sy_
  d:winxp
oothomevgaoem.fo_
  d:winxp
oothomeviaide.sy_
  d:winxp
oothomevideoprt.sy_
  d:winxp
oothomewin51
  d:winxp
oothomewin51ic
  d:winxp
oothomewmilib.sy_
  d:winxp
oothomedocs……
  d:winxp
oothomei386……
  d:winxp
oothomesupport……
  d:winxp
oothomesystem32
tdll.dll
  d:winxp
oothomesystem32smss.exe
  d:winxp
oothomevalueadd……
  d:winxp
ootwpro1394bus.sy_
  d:winxp
ootwpro1394vdbg.sy_
  d:winxp
ootwproabp480n5.sy_
  d:winxp
ootwproacpi.sy_
  d:winxp
ootwproacpiec.sy_
  d:winxp
ootwproadpu160m.sy_
  d:winxp
ootwproaha154x.sy_
  d:winxp
ootwproaic78u2.sy_
  d:winxp
ootwproaic78xx.sy_
  d:winxp
ootwproaliide.sy_
  d:winxp
ootwproamsint.sy_
  d:winxp
ootwproasc.sy_
  d:winxp
ootwproasc3350p.sy_
  d:winxp
ootwproasc3550.sy_
  d:winxp
ootwproatapi.sy_
  d:winxp
ootwproautorun.inf
  d:winxp
ootwproiosinfo.inf
  d:winxp
ootwproootfix.bin
  d:winxp
ootwproootfont.bin
  d:winxp
ootwproootvid.dl_
  d:winxp
ootwproc_936.nl_
  d:winxp
ootwprocbidf2k.sy_
  d:winxp
ootwprocd20xrnt.sy_
  d:winxp
ootwprocdfs.sy_
  d:winxp
ootwprocdrom.sy_
  d:winxp
ootwproclasspnp.sy_
  d:winxp
ootwprocmdide.sy_
  d:winxp
ootwprocpqarray.sy_
  d:winxp
ootwprodac2w2k.sy_
  d:winxp
ootwprodac960nt.sy_
  d:winxp
ootwprodisk.sy_
  d:winxp
ootwprodisk101
  d:winxp
ootwprodisk102
  d:winxp
ootwprodisk103
  d:winxp
ootwprodisk104
  d:winxp
ootwprodisk105
  d:winxp
ootwprodisk106
  d:winxp
ootwprodmboot.sy_
  d:winxp
ootwprodmio.sy_
  d:winxp
ootwprodmload.sy_
  d:winxp
ootwprodpti2o.sy_
  d:winxp
ootwprodrvmain.sdb
  d:winxp
ootwprofastfat.sy_
  d:winxp
ootwprofdc.sy_
  d:winxp
ootwproflpydisk.sy_
  d:winxp
ootwproftdisk.sy_
  d:winxp
ootwprohal.dl_
  d:winxp
ootwprohalaacpi.dl_
  d:winxp
ootwprohalacpi.dl_
  d:winxp
ootwprohalapic.dl_
  d:winxp
ootwprohalmacpi.dl_
  d:winxp
ootwprohalmps.dl_
  d:winxp
ootwprohalsp.dl_
  d:winxp
ootwprohidclass.sy_
  d:winxp
ootwprohidparse.sy_
  d:winxp
ootwprohidusb.sy_
  d:winxp
ootwprohpn.sy_
  d:winxp
ootwprohpt3xx.sy_
  d:winxp
ootwproi2omgmt.sy_
  d:winxp
ootwproi2omp.sy_
  d:winxp
ootwproi8042prt.sy_
  d:winxp
ootwproini910u.sy_
  d:winxp
ootwprointelide.sy_
  d:winxp
ootwproisapnp.sy_
  d:winxp
ootwprokbda1.dll
  d:winxp
ootwprokbda2.dll
  d:winxp
ootwprokbda3.dll
  d:winxp
ootwprokbdal.dll
  d:winxp
ootwprokbdarme.dll
  d:winxp
ootwprokbdarmw.dll
  d:winxp
ootwprokbdaze.dll
  d:winxp
ootwprokbdazel.dll
  d:winxp
ootwprokbdbe.dll
  d:winxp
ootwprokbdblr.dll
  d:winxp
ootwprokbdbr.dll
  d:winxp
ootwprokbdbu.dll
  d:winxp
ootwprokbdca.dll
  d:winxp
ootwprokbdclass.sy_
  d:winxp
ootwprokbdcr.dll
  d:winxp
ootwprokbdcz.dll
  d:winxp
ootwprokbdcz1.dll
  d:winxp
ootwprokbdcz2.dll
  d:winxp
ootwprokbdda.dll
  d:winxp
ootwprokbddiv1.dll
  d:winxp
ootwprokbddiv2.dll
  d:winxp
ootwprokbddv.dll
  d:winxp
ootwprokbdes.dll
  d:winxp
ootwprokbdest.dll
  d:winxp
ootwprokbdfa.dll
  d:winxp
ootwprokbdfc.dll
  d:winxp
ootwprokbdfi.dll
  d:winxp
ootwprokbdfr.dll
  d:winxp
ootwprokbdgae.dll
  d:winxp
ootwprokbdgeo.dll
  d:winxp
ootwprokbdgkl.dll
  d:winxp
ootwprokbdgr.dll
  d:winxp
ootwprokbdgr1.dll
  d:winxp
ootwprokbdhe.dll
  d:winxp
ootwprokbdhe220.dll
  d:winxp
ootwprokbdhe319.dll
  d:winxp
ootwprokbdheb.dll
  d:winxp
ootwprokbdhela2.dll
  d:winxp
ootwprokbdhela3.dll
  d:winxp
ootwprokbdhept.dll
  d:winxp
ootwprokbdhid.sy_
  d:winxp
ootwprokbdhu.dll
  d:winxp
ootwprokbdhu1.dll
  d:winxp
ootwprokbdic.dll
  d:winxp
ootwprokbdindev.dll
  d:winxp
ootwprokbdinguj.dll
  d:winxp
ootwprokbdinhin.dll
  d:winxp
ootwprokbdinkan.dll
  d:winxp
ootwprokbdinmar.dll
  d:winxp
ootwprokbdinpun.dll
  d:winxp
ootwprokbdintam.dll
  d:winxp
ootwprokbdintel.dll
  d:winxp
ootwprokbdir.dll
  d:winxp
ootwprokbdit.dll
  d:winxp
ootwprokbdit142.dll
  d:winxp
ootwprokbdkaz.dll
  d:winxp
ootwprokbdkyr.dll
  d:winxp
ootwprokbdla.dll
  d:winxp
ootwprokbdlt.dll
  d:winxp
ootwprokbdlt1.dll
  d:winxp
ootwprokbdlv.dll
  d:winxp
ootwprokbdlv1.dll
  d:winxp
ootwprokbdmon.dll
  d:winxp
ootwprokbdne.dll
  d:winxp
ootwprokbdnec.dll
  d:winxp
ootwprokbdno.dll
  d:winxp
ootwprokbdpl.dll
  d:winxp
ootwprokbdpl1.dll
  d:winxp
ootwprokbdpo.dll
  d:winxp
ootwprokbdro.dll
  d:winxp
ootwprokbdru.dll
  d:winxp
ootwprokbdru1.dll
  d:winxp
ootwprokbdsf.dll
  d:winxp
ootwprokbdsg.dll
  d:winxp
ootwprokbdsl.dll
  d:winxp
ootwprokbdsl1.dll
  d:winxp
ootwprokbdsp.dll
  d:winxp
ootwprokbdsw.dll
  d:winxp
ootwprokbdsyr1.dll
  d:winxp
ootwprokbdsyr2.dll
  d:winxp
ootwprokbdtat.dll
  d:winxp
ootwprokbdth0.dll
  d:winxp
ootwprokbdth1.dll
  d:winxp
ootwprokbdth2.dll
  d:winxp
ootwprokbdth3.dll
  d:winxp
ootwprokbdtuf.dll
  d:winxp
ootwprokbdtuq.dll
  d:winxp
ootwprokbduk.dll
  d:winxp
ootwprokbdur.dll
  d:winxp
ootwprokbdurdu.dll
  d:winxp
ootwprokbdus.dll
  d:winxp
ootwprokbdusl.dll
  d:winxp
ootwprokbdusr.dll
  d:winxp
ootwprokbdusx.dll
  d:winxp
ootwprokbduzb.dll
  d:winxp
ootwprokbdvntc.dll
  d:winxp
ootwprokbdycc.dll
  d:winxp
ootwprokbdycl.dll
  d:winxp
ootwprokd1394.dl_
  d:winxp
ootwprokdcom.dl_
  d:winxp
ootwproksecdd.sys
  d:winxp
ootwprol_intl.nl_
  d:winxp
ootwprolbrtfdc.sy_
  d:winxp
ootwpromountmgr.sy_
  d:winxp
ootwpromraid35x.sy_
  d:winxp
ootwpro
tdetect.com
  d:winxp
ootwpro
tfs.sys
  d:winxp
ootwpro
tkrnlmp.ex_
  d:winxp
ootwproohci1394.sy_
  d:winxp
ootwprooprghdlr.sy_
  d:winxp
ootwpropartmgr.sy_
  d:winxp
ootwpropci.sy_
  d:winxp
ootwpropciide.sy_
  d:winxp
ootwpropciidex.sy_
  d:winxp
ootwpropcmcia.sy_
  d:winxp
ootwproperc2.sy_
  d:winxp
ootwproperc2hib.sy_
  d:winxp
ootwproql1080.sy_
  d:winxp
ootwproql10wnt.sy_
  d:winxp
ootwproql12160.sy_
  d:winxp
ootwproql1240.sy_
  d:winxp
ootwproql1280.sy_
  d:winxp
ootwpro
amdisk.sy_
  d:winxp
ootwpro
eadme.htm
  d:winxp
ootwprosbp2port.sy_
  d:winxp
ootwproscsiport.sy_
  d:winxp
ootwproserenum.sy_
  d:winxp
ootwproserial.sy_
  d:winxp
ootwprosetup.exe
  d:winxp
ootwprosetupdd.sy_
  d:winxp
ootwprosetupldr.bin
  d:winxp
ootwprosetupreg.hiv
  d:winxp
ootwprosfloppy.sy_
  d:winxp
ootwproslip.sy_
  d:winxp
ootwprosparrow.sy_
  d:winxp
ootwprospcmdcon.sys
  d:winxp
ootwprospddlang.sy_
  d:winxp
ootwprostreamip.sy_
  d:winxp
ootwprosym_hi.sy_
  d:winxp
ootwprosym_u3.sy_
  d:winxp
ootwprosymc810.sy_
  d:winxp
ootwprosymc8xx.sy_
  d:winxp
ootwpro ffsport.sy_
  d:winxp
ootwpro oside.sy_
  d:winxp
ootwpro xtsetup.si_
  d:winxp
ootwproultra.sy_
  d:winxp
ootwprousbccgp.sy_
  d:winxp
ootwprousbd.sy_
  d:winxp
ootwprousbhub.sy_
  d:winxp
ootwprousbohci.sy_
  d:winxp
ootwprousbport.sy_
  d:winxp
ootwprousbstor.sy_
  d:winxp
ootwprousbuhci.sy_
  d:winxp
ootwprovga.sy_
  d:winxp
ootwprovgaoem.fo_
  d:winxp
ootwproviaide.sy_
  d:winxp
ootwprovideoprt.sy_
  d:winxp
ootwprowin51
  d:winxp
ootwprowin51ip
  d:winxp
ootwprowmilib.sy_
  d:winxp
ootwprodocs……
  d:winxp
ootwproi386……
  d:winxp
ootwprosupport……
  d:winxp
ootwprosystem32
tdll.dll
  d:winxp
ootwprosystem32smss.exe
  d:winxp
ootwprovalueadd……

  8. 制作ISO文件

  CDImage程序加“-o”参数优化后生成的镜像文件约为558 MB,我们假设将它存放在f:盘的根目录下,命令如下:
  d:winxpcdimage -lWinXP-2in1 -t09/05/2001,12:00:00 -g -h -j1 -o -m -bd:winxpw2kall.bin d:winxp
oot f:wxp-2in1.iso
  上述命令与生成Windows 2000的命令略有不同,各参数含义分别为:
  -l:设置光盘卷标。此处为“WinXP-2in1”。
  -t:设置光盘上所有文件的生成日期。此处为“2001年9月5日格林威治时间(GMT)上午12点整”。
  -g:转换本地时间与格林威治时间(GMT)。但如果是在Windows XP系统下,该参数似乎不起作用,“-t”参数指定的是GMT时间,而文件的生成时间是“-t”指定的时间加上时区转换后的本地时间。如,上例中的文件生成本地时间是“20:00:00”,即GMT+8=北京时间。
  -h:包含隐藏的目录和文件。
  -j1:编码Joliet文件名,并兼容DOS的8.3格式文件名。
  -o:优化相同的文件,最重要的参数,这是我们将3个版本的1.02 GB文件压缩到558 MB的关键。
  -m:允许生成的ISO文件超过640 MB。
  -b:光盘启动引导程序,此处我们使用了w2kall.bin。
  d:winxp
oot:源文件路径,将作为光盘的根目录。
  f:wxp-2in1.iso:最后生成的ISO文件,我们要的就是它。
  要点:cdimage /?可显示所有选项。CDImagegui提供了一个图形界面,使用更直观,功能是一样的。

  9. 测试ISO文件

  用VMware加载wxp-2in1.iso文件,设置第1启动设备为光驱。从光盘启动后,系统首先显示信息“Press any key to boot from CD.”,按任意键后,出现[A]、[B]2个选项菜单,键入A、B键然后回车,可启动相应安装版本,键入C键然后回车,可安装家庭版。此后的安装与原版光盘的安装一致。需要逐个安装,以测试各个版本的完整性。

  10. 增加特殊文件

  可以根据个人的爱好,在光盘上再增加一些特殊文件,只需将其复制到d:winxp
oot目录下,并重新制作ISO文件。

  11.烧录光盘

  ISO镜像文件测试无误后,即可用自己熟悉的软件(例如Nero)将其烧录到光盘。 这样,一张可启动的Windows XP 2合1光盘就制作完成了。同样,需要测试这张CD,最好的办法就是用它逐个安装一遍。

四、特色点评

  优点:与街面上流行的Windows 2000/XP n合1光盘相比,上述方法制作的光盘目录结构更简洁,没有一个多余的文件,不需要diskem1x引导程序,不需要重新制作启动菜单,不需要为每个版本分别准备不同的引导文件,针对性更强。
  缺点:只针对Windows 2000/XP系列,最多只能包含3个版本,无法制作出漂亮的彩色菜单。