Board logo

标题: [推荐] 我提议有人牵头建立 DOS 内核开发项目 [打印本页]

作者: 不点     时间: 2007-1-22 09:46    标题: [推荐] 我提议有人牵头建立 DOS 内核开发项目

本帖原来发在启动盘室,但今天在这里重发。原因是我发现这里聚集着开发人才。

http://www.cn-dos.net/forum/viewthread.php?tid=26364 (本链接为管理员添加,便于参考)
-----------------------

DOS 已经有许许多多种了,有必要再建立一种 DOS 吗?多年以来,我也是有这么一个观念,所以,才一直没有主张建立一个新的 DOS;即便曾经在 FreeDOS 网站上看到招募 FreeDOS 管理者的公告,我也不曾想过要建立一个新的 DOS,或者去应聘管理 FreeDOS。

但是现在,我确实觉得有必要建立一个新的 DOS 了。原因主要有以下三点:

1、FreeDOS 的开发处于停顿状态,根本满足不了日渐增多的 DOS 需求和应用。在 FreeDOS 之后又诞生了若干种 DOS,这就是最好的证明。

2、FreeDOS 号称与 MS-DOS 100% 兼容,但遗憾的是,它并非 100% 兼容的。现今的工业标准 DOS 就是微软的 Win98 里面的 DOS。FreeDOS 远远不能代替这个 DOS,因此,它根本就是不理想的。

3、其它还有许多 DOS,但是竟然没有一个是把 “全面兼容微软的 DOS” 当作一个目标去做的。

因此,我觉得有必要建立一个新的 DOS,这个 DOS 的主要任务就是全面兼容微软的 DOS,并且可以替换掉微软的 DOS(比如说,在它之下敲入 win 就可以启动 Win98)。

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

我们开发一个新的 DOS 是有可能的。DOS 虽然复杂,但比起 Windows 来,要简单得多。现存的许多项目中都有 DOS 的身影。比如 Wine, DOSEMU, DOSBOX, ReactOS, FreeDOS, NX-DOS 等等,这些都是开放源码的软件。我们还有微软的 DOS 躺在那里检验我们是否做到了兼容性。这都是有利条件。更重要的,我们有论坛上大量高素质的 DOS 人才在,这是难得的宝贵资源。

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

开发 DOS 内核,可以大大提高开发者的技术水平,更多地发现微软的技术秘密。这无论对老手还是新手,都有着不可估量的作用。

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

开发 DOS 内核是有意义的。DOS 是一个成熟的、简单的操作系统,它的历史很长。DOS 是不可能消亡的,这是由它的成熟度、简单性决定的。这就是它的内在美。DOS 和 BIOS 珠联璧合共同锻造了 PC 历史,因此,它有着雄厚的基础,它是不会在一夜之间就退出历史舞台的。你不可能消灭一个内涵和外延都很丰富的东西。当今的舞台上尽管有 Windows 和 Linux 在表现,但是,它们不能代表世界的全部。DOS 好像是一种纽带,它把不同的东西联系在一起。Linux 之下早就有成熟的 DOS 仿真器,Win9x 更是一个 DOS 下的应用程序。即便那日夜渴望消灭 DOS 的微软,也不得不在它最新版的 Windows 中继续保留 DOS 的一席之地。世界离不开 DOS,我们更离不开 DOS!

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

好了,废话不说。我希望大家能够关注、讨论这一话题,这是我今天提议的目的。我本人不能担负这个任务(我有别的事情在做),否则,我是不会让给别人的:-)。希望志同道合者认真考虑这一问题,勇于担负起这个重任,本人会竭尽全力支持您的!

又及,谦虚是一种美德,本人好像不够谦虚啊。说实在话,本人还真做不了,因为本人不曾深入研究过 DOS,只是停留在略微了解的水平上。
作者: electronixtar     时间: 2007-1-22 11:10
顶~~~可惜偶不会
作者: Wengier     时间: 2007-1-23 03:46
不点所说的很在点子上,尤其是这段话我非常认同:

  Quote:
1、FreeDOS 的开发处于停顿状态,根本满足不了日渐增多的 DOS 需求和应用。在 FreeDOS 之后又诞生了若干种 DOS,这就是最好的证明。

2、FreeDOS 号称与 MS-DOS 100% 兼容,但遗憾的是,它并非 100% 兼容的。现今的工业标准 DOS 就是微软的 Win98 里面的 DOS。FreeDOS 远远不能代替这个 DOS,因此,它根本就是不理想的。

3、其它还有许多 DOS,但是竟然没有一个是把 “全面兼容微软的 DOS” 当作一个目标去做的。

我曾经向FreeDOS的开发者们建议加强兼容性,尤其是加强与MS-DOS 7的兼容性,比如支持Win9x的启动等。可惜的是,以Eric为代表的主要开发者们对此并不以为然,更不用说实际行动了。所以,建立一个属于我们自己的DOS才是真正的解决之道。

由于时间等各种原因,我无法直接牵头。但我希望大家积极关注或参加这项有意义的行动,以让DOS的潜力真正得到应有的发挥。
作者: 19951001     时间: 2007-1-23 04:17
全力支持,也会积极参与。
作者: johnsonlam     时间: 2007-1-23 05:53


  Quote:
Originally posted by Wengier at 2007-1-23 03:46 AM:
我曾经向FreeDOS的开发者们建议加强兼容性,尤其是加强与MS-DOS 7的兼容性,比如支持Win9x的启动等。可惜的是,以Eric为代表的主要开发者们对此并不以为然,更不用说实际行动了。所以,建立一个属于我们自己的DOS才是真正的解决之道。


1) 加 强 兼 容 : FreeDOS 并 没 有 计 划 改 掉 那 些 "自 家" 设 计 的 multi-boot 设 定

2) 我 虽 不 觉 得 FreeDOS 上 运 行 Windows 95/98 有 实 际 用 途 ( 因 Win9x 是 Microsoft 的 专 利 ) , 但 "可 以 运 行 但 我 不 会 用" 不 等 于 "不 能 够" , 所 以 Wengier 说 的 还 是 有 意 义

3) FreeDOS 没 有 领 导 ! Jim Hall 并 不 想 管 网 页 档 案 以 外 的 东 西 , Eric Auer 不 是 一 个 授 权 的 领 导 , 只 是 一 个 低 产 量 的 论 坛 活 跃 份 子

  Quote:
由于时间等各种原因,我无法直接牵头。但我希望大家积极关注或参加这项有意义的行动,以让DOS的潜力真正得到应有的发挥。  

现 在 要 从 无 到 有 制 作 一 个 DOS 出 来 , 牵 涉 太 大 , 以 业 余 用 家 来 说 不 大 可 能 。

解 决 办 法 不 是 没 有 , 最 理 想 做 法 是 从 FreeDOS 另 起 一 个 分 支 , 得 决 定 从 那 个 版 本 着 手 , 而 且 要 看 这 里 有 谁 愿 意 负 责 kernel , 这 不 是 简 单 的 工 作 ...

也 考 虑 过 Enhanced DR-DOS , 但 行 不 通 , 结 构 距 离 原 来 的 MS-DOS 太 远 , 而 且 合 约 条 款 限 制 了 发 展 。

目 前 只 有 LZ-DOS (http://dos.nm.ru) 比 较 可 取 , 俄 国 人 从 MS-DOS 修 改 而 来 的 核 心 , 可 以 配 合 长 档 名 运 行 , 所 有 设 定 和 MS-DOS 一 样 , 只 是 版 权 问 题 不 能 完 全 解 决 。 理 论 上 MS 不 会 为 了 些 免 费 的 东 西 控 告 , 但 也 不 能 排 除 这 个 可 能 性 。

作者: johnsonlam     时间: 2007-1-23 06:02


  Quote:
Originally posted by 不点 at 2007-1-22 09:46 AM:
比如 Wine, DOSEMU, DOSBOX, ReactOS, FreeDOS, NX-DOS 等等,这些都是开放源码的软件。我们还有微软的 DOS 躺在那里检验我们是否做到了兼容性。这都是有利条件。更重要的,我们有论坛上大量高素质的 DOS 人才在,这是难得的宝贵资源。


简 单 的 说 , 我 们 要 一 个 "可 以 用" 的 DOS , 不 是 要 全 能 、 理 想 的 DOS , 所 以 一 定 要 建 基 于 以 上 开 放 源 码 的 资 源 开 始 干 , 省 去 不 少 时 间 和 气 力

  Quote:
又及,谦虚是一种美德,本人好像不够谦虚啊。说实在话,本人还真做不了,因为本人不曾深入研究过 DOS,只是停留在略微了解的水平上。

真 正 干 活 的 时 候 不 用 太 谦 虚 , 否 则 会 打 慢 进 度 。

作者: 不点     时间: 2007-1-23 07:50
johnsonlam 兄,其实,就连究竟该如何开展这个项目,都是可以讨论的。

我自己有一个不成熟的见解,叙述如下。我对 DOS 并不熟悉,然而同时我又觉得 DOS 的体积不是特别吓人,所以,它有可能被我们肢解。

由于我不了解 DOS ,也不了解前人都做过什么,所以,我以下所说的,都是站在我的视角来说的,对诸位不一定合适。

首先,我发现 DOS 的启动过程就很神秘。我觉得我们应该成立一个分支小组,研究 MS- DOS 的启动。就是说,逐条分析它的启动代码。然后剥离出真正属于内核的部分。

LZ-DOS 我还是首次听说,谢谢,我觉得这很好。如果它能够支持 win.com 的运行,我们可以从它入手来研究。我们不抄袭它,但是,我认为,我们研究微软隐藏了的秘密,这不构成侵权。

wengier 已经把 200 多 KB 的 IO 减小了一半。我觉得这一半之中应该还有很多是累赘,比如说,纯粹是加密用的,故意不让人理解的。我们把它 “脱壳” 以后,就可以现出 真正的 DOS 内核的原型了。

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

当然也可以不管 DOS 是如何启动的,只研究 DOS 提供的接口。不过我觉得这恐怕难以找到 DOS 运行 win.com 的真正秘密所在。

当然了,ralf brown 的 interrupt list 很好。我们可以检验 FreeDOS 是否完整实现了这个 list 中的功能,如果有什么缺失的,我们可以打补丁,完善它,这样也有可能让 FreeDOS 能够运行 win.com。

总之,这个工程很庞大,需要大家一起做。每个人都可以从不同的角度入手,以不同的切入点开始做。然后,大家交流经验,互相取长补短,互相借鉴。

好了,我也就是这么一个想法而已,也算是我对这个提议的一个贡献。
作者: Wengier     时间: 2007-1-23 15:14


  Quote:
Originally posted by 不点 at 2007-1-22 06:50 PM:
johnsonlam 兄,其实,就连究竟该如何开展这个项目,都是可以讨论的。

我自己有一个不成熟的见解,叙述如下。我对 DOS 并不熟悉,然而同时我又觉 ...

不点,您还是太谦虚了一些。作为GRUB for DOS的作者,您肯定已对DOS有相当程度的了解了,更不用说系统启动方面的知识。

去年曾有个外国人向我提到,当年开发DR-DOS的Caldera公司为了起诉MS隐藏DOS下启动Win9x GUI的秘密,开发出了一个约1-2KB的TSR程序,以向法官证明DR-DOS等系统下通过这种秘密设计的接口也可以运行Win9x GUI界面。可惜的是,Caldera公司似乎并没有公开这个程序。Ralf Brown的中断列表中也提到了一些特有的API,比如MS-DOS 7 Version Check、Get/Set Registry entry等,不过里面有些参数带有问号,还需要进一步研究才能找出真正值。但既然Caldera公司当年就能做到,从理论上来说肯定是可以实现的。
作者: 不点     时间: 2007-1-24 07:46
我希望有人出面来维护这个项目,但是,如果实在没人能够出面的话,其实,不用领头羊,一群羊也能前进。如果 wengier 给 fans 们开辟一个专门的讨论区,我觉得恐怕可以热闹起来。我主张开辟一个单独的讨论区。不要担心没有人气。这个 dos 不同于 grub,因为 grub 的讨论相对来说少一些,grub 仅仅是一个工具软件而已,所以,它可以放在 启动盘室里面。然而,DOS 内核的开发将是很庞大的,如果也嵌入在开发室里面,我觉得恐怕混乱,也就是说,大家将来搜索有关 “dos 内核开发” 的帖子,将会很辛苦。

看来我们先得为这个项目起一个名字,以便开设一个专门的讨论区。我先开一个头,叫做 MR-DOS,大家接着起名,人气最旺的名字就作为这个项目的名称。

MR 并无特别的意义。它是 Mister 的缩写。微软的 MS-DOS 是 DOS 女士,我们就叫做 DOS 先生,准备和 DOS 女士一起跳舞呢。DOS 博士(DR-DOS)也可以常常来做客。
作者: 不点     时间: 2007-1-27 08:34
我下载了 LZ-DOS,它的 IO.SYS 很小,只有 74 KB。难道没有人用用吗?真是可惜了!

在这里可以下载: http://dos.nm.ru

这是个糟糕的 EXE 文件,它不是一个磁盘映像,而是要求你插入软盘,它要直接写入软盘。

我在办公室里竟然找不到一个好的软驱,也找不到好的软盘盘片。

谁能帮忙用它生成一个软盘映象,先谢谢。
作者: cmlsml     时间: 2007-1-27 08:56
rar解压EXE得到162KB的映象;WINIMGE制作得到标准1.4M的。全在里面。
http://zhenlove.com.cn/cndos/fileup/files/LZDOS71E.zip

这个DOS真的不错啊!;)
========
不用解压了,那个EXE是WinImage Self Extractor file,扩展名直接改成IMG/IMA即可。

[ Last edited by cmlsml on 2007-1-26 at 08:47 PM ]
作者: 不点     时间: 2007-1-27 09:23
RAR 竟然能解开,学了一招。大家研究研究,看看可否再次脱壳。我总觉得,似乎应该还可以精简。

另外,大家试试,看它能否启动 win98。
作者: electronixtar     时间: 2007-1-27 09:30
期待各位大侠的进一步发现
作者: 不点     时间: 2007-1-27 09:42
报告一个失败的消息。用这个 IO.SYS 代替微软的 IO.SYS,在我的机器上不能启动 Win98。

启动时显示:Windows 发现注册表损坏,已经恢复了最近的一个备份。接着就只能重新启动电脑了。
作者: 本是     时间: 2007-1-27 10:51
RE 不点14楼:
8 楼有说:“通过这种秘密设计的接口也可以运行Win9x GUI界面。可惜的是,Caldera公司似乎并没有公开这个程序。Ralf Brown的中断列表中也提到了一些特有的API,比如MS-DOS 7 Version Check、Get/Set Registry entry等”,而LZ-DOS只是兼容MS-DOS而不包括这种“秘密设计的接口”!商业秘密呀!
作者: johnsonlam     时间: 2007-1-27 14:03


  Quote:
Originally posted by 不点 at 2007-1-23 07:50 AM:
我自己有一个不成熟的见解,叙述如下。我对 DOS 并不熟悉,然而同时我又觉得 DOS 的体积不是特别吓人,所以,它有可能被我们肢解。

看 Wengier 說 才 知 道 你 是 GRUB for DOS 的 作 者 , 這 就 真 是 謙 虛 了 , 你 知 的 比 許 多 人 還 要 多 。

  Quote:
首先,我发现 DOS 的启动过程就很神秘。我觉得我们应该成立一个分支小组,研究 MS- DOS 的启动。就是说,逐条分析它的启动代码。然后剥离出真正属于内核的部分。

那 就 要 反 向 匯 編 囉 ...

其 實 也 可 參 考 FreeDOS 的 源 碼 , 瞭 解 "怎 樣 去 啟 動" 比 純 粹 複 製 更 有 意 義

  Quote:
LZ-DOS 我还是首次听说,谢谢,我觉得这很好。如果它能够支持 win.com 的运行,我们可以从它入手来研究。我们不抄袭它,但是,我认为,我们研究微软隐藏了的秘密,这不构成侵权。

wengier 已经把 200 多 KB 的 IO 减小了一半。我觉得这一半之中应该还有很多是累赘,比如说,纯粹是加密用的,故意不让人理解的。我们把它 “脱壳” 以后,就可以现出 真正的 DOS 内核的原型了。

其 實 要 完 全 不 侵 權 , 只 有 從 FreeDOS 入 手 , 因 為 反 向 匯 編 也 是 不 妥 當 的 , 但 是 單 從 學 習 而 不 去 複 製 , 卻 又 是 GNU 精 神

LZ-DOS 是 改 良 了 核 心 的 MS-DOS 7.10 ( Win98SE 啟 動 部 份 ) , 俄 國 人 只 拿 掉 了 他 們 認 為 沒 有 用 的 東 西 ( 可 能 是 Win98SE GUI 部 份 )

  Quote:
当然了,ralf brown 的 interrupt list 很好。我们可以检验 FreeDOS 是否完整实现了这个 list 中的功能,如果有什么缺失的,我们可以打补丁,完善它,这样也有可能让 FreeDOS 能够运行 win.com。

加 入 FreeDOS 是 不 可 行 的 , 因 為 那 兒 的 開 發 人 員 不 齊 心 , 借 用 文 件 內 的 知 識 就 可 以

  Quote:
总之,这个工程很庞大,需要大家一起做。每个人都可以从不同的角度入手,以不同的切入点开始做。然后,大家交流经验,互相取长补短,互相借鉴。

好了,我也就是这么一个想法而已,也算是我对这个提议的一个贡献。

很 好 , 但 還 是 要 有 個 領 導 , 要 組 織 開 發 和 測 試 班 子

作者: johnsonlam     时间: 2007-1-27 14:08


  Quote:
Originally posted by 不点 at 2007-1-24 07:46 AM:
我希望有人出面来维护这个项目,但是,如果实在没人能够出面的话,其实,不用领头羊,一群羊也能前进。

恕 冒 犯 ...

"一 群 羊 各 就 各" 這 就 是 FreeDOS 的 過 程 , 整 整 10 年 兼 容 度 還 比 不 起 一 個 LZ-DOS ...  分 工 合 作 是 很 重 要 的 , 否 則 就 變 成 FreeDOS 膠 著 的 現 狀

作者: johnsonlam     时间: 2007-1-27 14:13


  Quote:
Originally posted by 不点 at 2007-1-27 08:34 AM:
我下载了 LZ-DOS,它的 IO.SYS 很小,只有 74 KB。难道没有人用用吗?真是可惜了!


Lucho 的 單 軟 盤 版 就 有 LZ-DOS + E.DR-DOS 雙 內 核 ...
還 有 QCACHE, QHIMEM, QCDROM, AEFDISK, FM 等 工 具

http://johnson.tmfc.net/dos/lucho.html

作者: Wengier     时间: 2007-1-27 16:27


  Quote:
Originally posted by johnsonlam at 2007-1-27 01:03 AM:



LZ-DOS 是 改 良 了 核 心 的 MS-DOS 7.10 ( Win98SE 啟 動 部 份 ) , 俄 國 人 只 拿 掉 了 他 們 認 為 沒 有 用 的 東 西 ( 可 能 是 Win98SE GUI 部 份 )

关于这个LZ-DOS,其实我去年就曾研究过。当时经过研究确定,它的英文版/俄文版的IO.SYS文件分别是在英文版/俄文版的MS-DOS 7.1内核上经过简单修改并压缩而成的,而COMMAND.COM则是在DOS 6.x的基础上改成的。关于它的兼容性和压缩问题论坛中就曾有一些讨论,比如这儿:

http://www.cn-dos.net/forum/viewthread.php?tid=21627

当时经研究发现,那个俄国人并没有拿掉Win9x GUI支持部分,也没有删减任何重要功能。之所以体积比较小,主要是因为经过了压缩。它可以正常启动Win9x GUI(这个我当时就验证过了),但有两点要注意,那就是路径设置和默认语言代码页。因为它的英文版是在英文版的MS-DOS 7.1内核基础上修改和压缩而来的,所以它的默认语言代码页是437。而Win98启动有个要求,那就是MSDOS.SYS中的路径设置必须正确,而且DOS启动代码页必须与Win98代码页相同,否则会出现注册表错误的提示。对于前者,我曾在论坛中发过专帖进行详细介绍;对于后者,如果代码页不相同的话,可以在CONFIG.SYS中用COUNTRY命令修改。当时通过这些设置,我在LZ-DOS上成功启动过Win3.x到98SE之间的各种中英文版本的WIN。
作者: johnsonlam     时间: 2007-1-28 02:56


  Quote:
Originally posted by Wengier at 2007-1-27 04:27 PM:
当时经研究发现,那个俄国人并没有拿掉Win9x GUI支持部分,也没有删减任何重要功能。之所以体积比较小,主要是因为经过了压缩。


謝 謝 , 我 是 看 漏 了 眼 。

俄 國 人 透 露 了 , 這 是 "內 部 、 特 別 、 軍 事 和 太 空" 用 途 !!

問 題 是 -- 我 們 欠 缺 軟 體 ...

作者: 不点     时间: 2007-1-28 04:40
johnsonlam:你的 Q 系列在很多工具软件中都有列入。相比之下,grub4dos 的了解度还很低。其实我也是前几天才知道你是 Q 的作者。而且正是因为这个,我才把帖子重发在开发室的。我以前从不来开发室的。

虽然我知道你适合于做这个项目的开发、管理人,但是,我也不好意思明说,毕竟你自己已经有项目在身了,考虑到额外给你增加一些压力并不好。

我又有一个提议,来这里的人最好都要说明自己能否担当维护人。如果不能担当,请说明不能担当的理由。考虑到有些人其实可以担当,但是又不太积极主动,所以我觉得有必要增加这个提议,来促成这件事情。

另外,我觉得不要太过于拘泥于 “侵权” 问题。如果严格按照 EULA,我们什么都不能做了。我认为那就是紧箍咒而已。我们可以反问软件公司,难道你隐藏技术秘密就是完全合理的吗?如果我们不反汇编,怎么能够知道你的产品里面有没有炸药?我们每个人对于“合理性” 的理解,可能是有偏差的。人是高级的动物,所以,想法就决定着他的行动。我们不要忘了,微软的所作所为,也不一定就是合理合法的(微软也曾被人控告并且败诉)。我认为,我们只要做到,让那些可能的控告者抓不到把柄就好了。还是那句话,不要过分自己束缚自己的手脚。

当然我绝不是说要去 "偷" 人家的代码。如果我们把它的技术秘密掌握了,我们也就根本不需要去 "偷" 了。而掌握技术秘密,你没有 debug 怎么行呢?以前看过《未公开的DOS核心技术》,像这样的作者,都是 debug 的熟练玩家。我认为 debug 是合法的,否则 DOS 为何要附带这个工具呢?我们的目的,是要找出微软的那些不该隐藏的秘密,这不构成对它的知识产权的侵犯。严格说来,它的那些秘密无非就是用来扼杀竞争对手的,属于不正当竞争的范畴。因此严格说来,我们有权要求微软公开那些秘密,至少在道义上,微软该这么做。所以说,不用担心,我们的做法完全是合理合法又合情的。

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

又,最新报告:把 scanreg.ini 中的 Backup 和 Optimize 清零,改成这样:

;Registry backup is skipped altogether if this is set to 0
Backup=0

;Registry automatic optimization is skipped if this is set to 0
Optimize=0

另外还要在 msconfig 中把 scanregw 禁用。这么一来,Windows 98SE 就可以启动了。

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

不过,既然这只是一个压缩的产物,那么也就没什么意义了。我准备研究一下 IO.SYS 的启动过程,把研究心得贴在这里。Wengier 和大家有什么建议和忠告,赶快说,以免我走弯路。
作者: johnsonlam     时间: 2007-1-28 07:59


  Quote:
Originally posted by 不点 at 2007-1-28 04:40 AM:
johnsonlam:你的 Q 系列在很多工具软件中都有列入。相比之下,grub4dos 的了解度还很低。其实我也是前几天才知道你是 Q 的作者。而且正是因为这个,我才把帖子重发在开发室的。我以前从不来开发室的。

你 誤 會 了 , 我 是 管 網 頁 和 聯 系 的 , 作 者 是 Jack Ellis.

  Quote:
虽然我知道你适合于做这个项目的开发、管理人,但是,我也不好意思明说,毕竟你自己已经有项目在身了,考虑到额外给你增加一些压力并不好。

抱 歉 , Jack 暫 時 對 其 它 計 劃 不 想 參 與 , 只 想 做 好 手 頭 的 Q-系 驅 動

  Quote:
我又有一个提议,来这里的人最好都要说明自己能否担当维护人。如果不能担当,请说明不能担当的理由。考虑到有些人其实可以担当,但是又不太积极主动,所以我觉得有必要增加这个提议,来促成这件事情。

我 覺 得 要 承 擔 的 話 , 很 多 人 就 會 有 壓 力
我 不 懂 編 程 , 又 不 懂 看 匯 編 , 否 則 已 經 在 幫 忙 了

  Quote:
另外,我觉得不要太过于拘泥于 “侵权” 问题。如果严格按照 EULA,我们什么都不能做了。我认为那就是紧箍咒而已。我们可以反问软件公司,难道你隐藏技术秘密就是完全合理的吗?如果我们不反汇编,怎么能够知道你的产品里面有没有炸药?我们每个人对于“合理性” 的理解,可能是有偏差的。人是高级的动物,所以,想法就决定着他的行动。我们不要忘了,微软的所作所为,也不一定就是合理合法的(微软也曾被人控告并且败诉)。我认为,我们只要做到,让那些可能的控告者抓不到把柄就好了。还是那句话,不要过分自己束缚自己的手脚。

我 們 不 需 要 美 國 或 國 際 法 律 完 全 認 同 , 但 你 說 的 對 , 軟 件 公 司 的 私 心 , 使 人 類 落 後 太 多 , 我 們 不 必 完 全 遵 守 。

但 我 覺 得 要 有 道 德 底 線 , 不 能 抄 了 別 人 卻 認 是 自 己 的 , 禮 貌 道 德 上 要 立 於 不 敗 之 地 , 可 以 反 汇 编 但 不 能 抄 MS 的 源 碼 。我 同 意 不 要   过 分 自 己 束 缚 自 己 的 手 脚 。

  Quote:
当然我绝不是说要去 "偷" 人家的代码。如果我们把它的技术秘密掌握了,我们也就根本不需要去 "偷" 了。而掌握技术秘密,你没有 debug 怎么行呢?以前看过《未公开的DOS核心技术》,像这样的作者,都是 debug 的熟练玩家。我认为 debug 是合法的,否则 DOS 为何要附带这个工具呢?我们的目的,是要找出微软的那些不该隐藏的秘密,这不构成对它的知识产权的侵犯。严格说来,它的那些秘密无非就是用来扼杀竞争对手的,属于不正当竞争的范畴。因此严格说来,我们有权要求微软公开那些秘密,至少在道义上,微软该这么做。所以说,不用担心,我们的做法完全是合理合法又合情的。

完 全 同 意

  Quote:
不过,既然这只是一个压缩的产物,那么也就没什么意义了。我准备研究一下 IO.SYS 的启动过程,把研究心得贴在这里。Wengier 和大家有什么建议和忠告,赶快说,以免我走弯路。  

聽 Jack 兄 談 多 了 驅 動 知 識 , 我 覺 得 可 能 還 有 改 良 的 餘 地 呢 。

作者: 本是     时间: 2007-1-28 11:41
关于IO.EXE/.SYS:
虽然我知道704--726是在解密205--704的代码并写入202--703,
我自己将解密代码写入并尝试修改文件头,最后用此新IO.SYS
更新启动映像,在QEMU中启动成功。

刚才查LZDOS的IO.SYS/EXE怎么找不着入口?
请WENGIER露点风给大家!!!

[ Last edited by 本是 on 2007-1-28 at 12:46 PM ]
附件 1: io.rar (2007-1-28 12:26, 73.62 K, 下载附件所需积分 1点 ,下载次数: 13)
附件 2: io_sys.gif (2007-1-28 12:45, 2.36 K, 下载附件所需积分 1点 ,下载次数: 16)



作者: 不点     时间: 2007-1-28 11:58
johnsonlam: 怪我粗心大意了。谢谢你的澄清。另外我很能理解你和 Jack 的想法。那我们就等着看有没有人自告奋勇了。

本是:干得好!我很想得到你修改后的这个 IO.SYS。你能做个下载链结吗?
作者: Kinglion     时间: 2007-1-31 22:37
可以借鉴Micro$oft公司公开的DOS6.0的源码.

大概有20MB左右吧.
作者: 不点     时间: 2007-2-1 23:22
本是: 我下载了你的 IO.SYS,发现了又一个秘密.

1. 你的这个 IO.SYS 怎么和 LZ-DOS 的 IO.SYS 在长度上完全一样,都是 75885 字节?
如果 LZ 就是 "压缩" 的意思, 那我觉得它的意义就不大了,还不如 wengier 的 io.sys 来得实在. "压缩" 只能增加我们脱壳的困难, 所以是糟糕的做法. WinME 中的 IO.SYS 就是压缩的.

2. 直接用你的这个 IO.SYS 覆盖微软的 IO.SYS, 结果不能启动 DOS(要死机).

3. 保持微软的 IO.SYS 作为 C:\IO.SYS, 此时通过 GRUB 的 chainloader 来启动你的 IO.SYS (已经改名为 IO_1.SYS), 那么能够成功进入 DOS, 也能进入 Win98.

4. 用你的 IO.SYS 作为 C:\IO.SYS, 把微软的 IO.SYS 改名为 IO_MS.SYS. 此时即便通过 GRUB 的 chainloader 来启动 IO_MS.SYS, 都是失败的. 好像是死机了,但键盘上的 NumLock 键可以切换 NumLOCK 指示灯. 用 Ctrl+Alt+Del 也可以重启动机器.

这最后一个现象,说明 grub 的 chainloader 还没有掌握 IO.SYS 的深层秘密.
作者: 本是     时间: 2007-2-2 01:31


  Quote:
Originally posted by 不点 at 2007-2-1 23:22:
本是: 我下载了你的 IO.SYS,发现了又一个秘密.
...

1.我的这个 IO.SYS 本来就是 LZ-DOS 的 IO.SYS,只是解了一段密,并未改变文件长度。

2.关于死机问题,建议
debug io.sys
e 0002 ce 01 b3 01
w
q
改回原值。这样EXE文件头就与原LZ的一样了。应该没有当机问题了。

3.即使是加密的,解了以后一样可用。因为有秘密在其中嘛!也许他们加减乘除了什么……
作者: brglng     时间: 2007-2-13 03:21
我觉得可以把对MSDOS 8.0的IO.SYS的研究也作为这个项目的一部分哦
作者: 不点     时间: 2007-3-4 12:21    标题: FAT16 的引导扇区剖析

关键字:boot sector, boot record, asm, assembly, FAT16 file system, MS-DOS, 引导扇区,引导记录,FAT16 文件系统,汇编语言,反汇编

从这个引导过程的分析可以知道,IO.SYS 在接管控制后,进入点是第二扇区的开头。

IO.SYS 被 boot sector 装入了 4 个扇区,装入的地址是 0000:0700,控制转移的 CS:IP=0070:0200,也就是 IO.SYS 的第二扇区的开头。另外,BP,SP,SI,DI,SS,DS,ES 以及堆栈内容都是有意义的,在下面的注释中都作了详细说明。
2181:7C00 EB 3C 90 4D-53 57 49 4E-34 2E 31 00-02 04 04 00  .<.MSWIN4.1.....
2181:7C10 02 00 02 00-00 F8 F8 00-20 00 40 00-20 00 00 00  ........ .@. ...
2181:7C20 E0 DF 03 00-80 00 29 FA-6F 0B 00 55-53 42 5A 49  ......).o..USBZI
2181:7C30 50 2D 42 4F-4F 54 46 41-54 31 36 00-00 00 33 C9  P-BOOTFAT16...3.
2181:7C40 8E D1 BC FC-7B 16 07 BD-78 00 C5 76-00 1E 56 16  ....{...x..v..V.
2181:7C50 55 BF 22 05-89 7E 00 89-4E 02 B1 0B-FC F3 A4 06  U."..~..N.......
2181:7C60 1F BD 00 7C-C6 45 FE 0F-38 4E 24 7D-20 8B C1 99  ...|.E..8N$} ...
2181:7C70 E8 7E 01 83-EB 3A 66 A1-1C 7C 66 3B-07 8A 57 FC  .~...:f..|f;..W.

2181:7C80 75 06 80 CA-02 88 56 02-80 C3 10 73-ED 33 C9 FE  u.....V....s.3..
2181:7C90 06 D8 7D 8A-46 10 98 F7-66 16 03 46-1C 13 56 1E  ..}.F...f..F..V.
2181:7CA0 03 46 0E 13-D1 8B 76 11-60 89 46 FC-89 56 FE B8  .F....v.`.F..V..
2181:7CB0 20 00 F7 E6-8B 5E 0B 03-C3 48 F7 F3-01 46 FC 11   ....^...H...F..
2181:7CC0 4E FE 61 BF-00 07 E8 28-01 72 3E 38-2D 74 17 60  N.a....(.r>8-t.`
2181:7CD0 B1 0B BE D8-7D F3 A6 61-74 3D 4E 74-09 83 C7 20  ....}..at=Nt...
2181:7CE0 3B FB 72 E7-EB DD FE 0E-D8 7D 7B A7-BE 7F 7D AC  ;.r......}{..}.
2181:7CF0 98 03 F0 AC-98 40 74 0C-48 74 13 B4-0E BB 07 00  .....@t.Ht......

2181:7D00 CD 10 EB EF-BE 82 7D EB-E6 BE 80 7D-EB E1 CD 16  ......}....}....
2181:7D10 5E 1F 66 8F-04 CD 19 BE-81 7D 8B 7D-1A 8D 45 FE  ^.f......}.}..E.
2181:7D20 8A 4E 0D F7-E1 03 46 FC-13 56 FE B1-04 E8 C2 00  .N....F..V......
2181:7D30 72 D7 EA 00-02 70 00 52-50 06 53 6A-01 6A 10 91  r....p.RP.Sj.j..
2181:7D40 8B 46 18 A2-26 05 96 92-33 D2 F7 F6-91 F7 F6 42  .F..&...3......B
2181:7D50 87 CA F7 76-1A 8A F2 8A-E8 C0 CC 02-0A CC B8 01  ...v............
2181:7D60 02 80 7E 02-0E 75 04 B4-42 8B F4 8A-56 24 CD 13  ..~..u..B...V$..
2181:7D70 61 61 72 0A-40 75 01 42-03 5E 0B 49-75 77 C3 03  aar.@u.B.^.Iuw..

2181:7D80 18 01 27 0D-0A 49 6E 76-61 6C 69 64-20 73 79 73  ..'..Invalid sys
2181:7D90 74 65 6D 20-64 69 73 6B-FF 0D 0A 44-69 73 6B 20  tem disk...Disk
2181:7DA0 49 2F 4F 20-65 72 72 6F-72 FF 0D 0A-52 65 70 6C  I/O error...Repl
2181:7DB0 61 63 65 20-74 68 65 20-64 69 73 6B-2C 20 61 6E  ace the disk, an
2181:7DC0 64 20 74 68-65 6E 20 70-72 65 73 73-20 61 6E 79  d then press any
2181:7DD0 20 6B 65 79-0D 0A 00 00-49 4F 20 20-20 20 20 20   key....IO      
2181:7DE0 53 59 53 4D-53 44 4F 53-20 20 20 53-59 53 7F 01  SYSMSDOS   SYS.
2181:7DF0 00 41 BB 00-07 60 66 6A-00 E9 3B FF-00 00 55 AA  .A...`fj..;...U.

2181:7C00 EB 3C          jmp          7C3E

2181:7C02       90 4D-53 57 49 4E-34 2E 31 00-02 04 04 00    .MSWIN4.1.....
2181:7C10 02 00 02 00-00 F8 F8 00-20 00 40 00-20 00 00 00  ........ .@. ...
2181:7C20 E0 DF 03 00-80 00 29 FA-6F 0B 00 55-53 42 5A 49  ......).o..USBZI
2181:7C30 50 2D 42 4F-4F 54 46 41-54 31 36 00-00 00        P-BOOTFAT16...  

2181:7C3E 33 C9          xor          cx,cx             ;CX=0
2181:7C40 8E D1          mov          ss,cx             ;SS=0
2181:7C42 BC FC 7B       mov          sp,7BFC           ;SP=7BFC
2181:7C45 16             push         ss
2181:7C46 07             pop          es                ;ES=0
2181:7C47 BD 78 00       mov          bp,0078           ;BP=78
2181:7C4A C5 76 00       lds          si,[bp+00]        ;DS:SI->floppy param
2181:7C4D 1E             push         ds
2181:7C4E 56             push         si                ;Save floppy param
2181:7C4F 16             push         ss
2181:7C50 55             push         bp                ;Save 0000:0078
2181:7C51 BF 22 05       mov          di,0522           ;DI=0522
2181:7C54 89 7E 00       mov          [bp+00],di        ;Set 0000:0522 as...
2181:7C57 89 4E 02       mov          [bp+02],cx        ;...new floppy param
2181:7C5A B1 0B          mov          cl,000B           ;CX=000B
2181:7C5C FC             cld         
2181:7C5D F3 A4          repz movsb                     ;copy old param to new
2181:7C5F 06             push         es
2181:7C60 1F             pop          ds                ;DS=0
2181:7C61 BD 00 7C       mov          bp,7C00           ;BP=7C00
2181:7C64 C6 45 FE 0F    mov          byte [di-02],000F ;modify floppy param
2181:7C68 38 4E 24       cmp          [bp+24],cl        ;drive is floppy?
2181:7C6B 7D 20          jge          7C8D              ;yes. jump.

               hard drive: check partition table for EBIOS indicator

2181:7C6D 8B C1          mov          ax,cx             ;AX=CX=0
2181:7C6F 99             cwd                            ;DX=0

2181:7C70 E8 7E 01       call         7DF1              ;read the MBR sector

2181:7C73 83 EB 3A       sub          bx,003A           ;startLBA of entry 0
2181:7C76 66 A1 1C 7C    mov          eax,[7C1C]        ;EAX=hidden sectors

2181:7C7A 66 3B 07       cmp          eax,[bx]          ;match?
2181:7C7D 8A 57 FC       mov          dl,[bx-04]        ;DL=partition type
2181:7C80 75 06          jnz          7C88              ;not match, skip
2181:7C82 80 CA 02       or           dl,0002           ;if the type is 0C
                                                        ;let it be 0E
2181:7C85 88 56 02       mov          [bp+02],dl        ;set EBIOS flag in 7C02

2181:7C88 80 C3 10       add          bl,0010           ;next entry
2181:7C8B 73 ED          jnb          7C7A              ;carry set if done

              the real deal begins here                           

2181:7C8D 33 C9          xor          cx,cx             ;CX=0
2181:7C8F FE 06 D8 7D    inc          byte [7DD8]       ;Change IO to JO

2181:7C93 8A 46 10       mov          al,[bp+10]        ;AL=number of FATs
2181:7C96 98             cbw                            ;AX=number of FATs
2181:7C97 F7 66 16       mul          word [bp+16]      ;sectors per FAT
                                                        ;DX:AX=sectors in FATs
2181:7C9A 03 46 1C       add          ax,[bp+1C]
2181:7C9D 13 56 1E       adc          dx,[bp+1E]        ;Add hidden sectors
2181:7CA0 03 46 0E       add          ax,[bp+0E]        ;Add reserved sectors
2181:7CA3 13 D1          adc          dx,cx             ;DX:AX->root dir
2181:7CA5 8B 76 11       mov          si,[bp+11]        ;SI=root dir entries

2181:7CA8 60             pushaw

2181:7CA9 89 46 FC       mov          [bp-04],ax        ;
2181:7CAC 89 56 FE       mov          [bp-02],dx        ;save DX:AX on stack
2181:7CAF B8 20 00       mov          ax,0020           ;AX=dir entry length
2181:7CB2 F7 E6          mul          si                ;DX:AX=root dir size
2181:7CB4 8B 5E 0B       mov          bx,[bp+0B]        ;BX=sector size
2181:7CB7 03 C3          add          ax,bx
2181:7CB9 48             dec          ax
2181:7CBA F7 F3          div          bx                ;AX=root dir sectors
2181:7CBC 01 46 FC       add          [bp-04],ax        
2181:7CBF 11 4E FE       adc          [bp-02],cx        ;stack->Data area

2181:7CC2 61             popaw

2181:7CC3 BF 00 07       mov          di,0700           ;DI=0700
2181:7CC6 E8 28 01       call         7DF1              ;read root dir
2181:7CC9 72 3E          jb           7D09

2181:7CCB 38 2D          cmp          [di],ch
2181:7CCD 74 17          jz           7CE6              ;failure find file

2181:7CCF 60             pushaw
2181:7CD0 B1 0B          mov          cl,000B           ;find kernel filename
2181:7CD2 BE D8 7D       mov          si,7DD8
2181:7CD5 F3 A6          repz cmpsb   
2181:7CD7 61             popaw        

2181:7CD8 74 3D          jz           7D17              ;found, jump
2181:7CDA 4E             dec          si                ;SI=rest entries
2181:7CDB 74 09          jz           7CE6              ;not found, failure
2181:7CDD 83 C7 20       add          di,0020           ;next entry
2181:7CE0 3B FB          cmp          di,bx             ;end?
2181:7CE2 72 E7          jb           7CCB              ;no, check the entry
2181:7CE4 EB DD          jmp          7CC3              ;yes, load 1 sector

2181:7CE6 FE 0E D8 7D    dec          byte [7DD8]       ;Change JO to IO
2181:7CEA 7B A7          jnp          7C93              ;find again
2181:7CEC BE 7F 7D       mov          si,7D7F           ;not found

                print error message:
                SI=7D7F "invalid system disk"
                SI=7D80 "Disk I/O error"
                SI=7D82 "Replace the disk, and then press any key..."

2181:7CEF AC             lodsb
2181:7CF0 98             cbw


2181:7CF1 03 F0          add          si,ax

                display string DS:SI, if encountered FF, then
                display "Replace the disk, and then press any key..."
                if encountered 00, wait for a key press and reboot.

2181:7CF3 AC             lodsb
2181:7CF4 98             cbw         
2181:7CF5 40             inc          ax
2181:7CF6 74 0C          jz           7D04
2181:7CF8 48             dec          ax
2181:7CF9 74 13          jz           7D0E

                display char in AL

2181:7CFB B4 0E          mov          ah,000E
2181:7CFD BB 07 00       mov          bx,0007
2181:7D00 CD 10          int          10
2181:7D02 EB EF          jmp          7CF3

                display "Replace the disk, and then press any key..."

2181:7D04 BE 82 7D       mov          si,7D82
2181:7D07 EB E6          jmp          7CEF

                display "Disk I/O error"

2181:7D09 BE 80 7D       mov          si,7D80
2181:7D0C EB E1          jmp          7CEF

2181:7D0E CD 16          int          16
2181:7D10 5E             pop          si
2181:7D11 1F             pop          ds                ;DS:SI=0000:0078
2181:7D12 66 8F 04       pop          dword [si]        ;restore original...
                                                        ;...floppy params
2181:7D15 CD 19          int          19

                the kernel file was found

2181:7D17 BE 81 7D       mov          si,7D81           ;error message
2181:7D1A 8B 7D 1A       mov          di,[di+1A]        ;start cluster
2181:7D1D 8D 45 FE       lea          ax,[di-02]
2181:7D20 8A 4E 0D       mov          cl,[bp+0D]        ;sectors per cluster
2181:7D23 F7 E1          mul          cx                ;DX:AX=sectors
2181:7D25 03 46 FC       add          ax,[bp-04]
2181:7D28 13 56 FE       adc          dx,[bp-02]        ;DX:AX=LBA
2181:7D2B B1 04          mov          cl,0004           ;read 4 sectors
2181:7D2D E8 C2 00       call         7DF2              ;... to 0000:0700
2181:7D30 72 D7          jb           7D09

                Transfer control to the second sector of IO.SYS, with

                        SS=DS=ES=0000

                        SP=7BF4

                        BP=7C00

                        SI=error message "invalid system disk"

                        DI=start cluster number of IO.SYS

                        [SP+00]=[7BF4]=0078

                        [SP+02]=[7BF6]=0000

                        [SP+04]=[7BF8]=OFFSET of FLOPPY PARAMS

                        [SP+06]=[7BFA]=SEGMENT of FLOPPY PARAMS

                        [SP+08]=[7BFC]=[BP-4]=LBA of data area


2181:7D32 EA 00 02 70 00 jmp          0070:0200         ;CS:IP=0070:0200




2181:7D37 52             push         dx                ;DX:AX=LBA lo 32 bits
2181:7D38 50             push         ax
2181:7D39 06             push         es                ;ES:BX=buffer
2181:7D3A 53             push         bx
2181:7D3B 6A 01          push         0001              ;read 1 sector
2181:7D3D 6A 10          push         0010              ;EBIOS packet size

                begin geometry translation: LBA to CHS

2181:7D3F 91             xchg         ax,cx             ;save AX to CX
2181:7D40 8B 46 18       mov          ax,[bp+18]        ;AX=sectors per track
2181:7D43 A2 26 05       mov          [0526],al         ;modify floppy param
2181:7D46 96             xchg         ax,si             ;SI=sectors per track
2181:7D47 92             xchg         ax,dx             ;AX=DX
2181:7D48 33 D2          xor          dx,dx
2181:7D4A F7 F6          div          si                ;AX=quo, DX=res
2181:7D4C 91             xchg         ax,cx             ;restore AX from CX
                                                        ;CX=quo
                                                        ;DX:AX=the rest sectors
2181:7D4D F7 F6          div          si                ;AX=quo, DX=res
2181:7D4F 42             inc          dx                ;DX=sector
2181:7D50 87 CA          xchg         cx,dx             ;CX=sector, DX=old quo
                                                        ;DX:AX=quo
2181:7D52 F7 76 1A       div          word [bp+1A]      ;heads
                                                        ;AX=cyl, DX=head
2181:7D55 8A F2          mov          dh,dl             ;DH=head
2181:7D57 8A E8          mov          ch,al             ;CH=cyl. lo 8 bits
2181:7D59 C0 CC 02       ror          ah,02             ;AH=cyl. hi 2 bits
2181:7D5C 0A CC          or           cl,ah             ;put into CL

                end geometry translation: LBA to CHS

2181:7D5E B8 01 02       mov          ax,0201           ;read 1 sector
2181:7D61 80 7E 02 0E    cmp          byte [bp+02],000E ;USE EBIOS?
2181:7D65 75 04          jnz          7D6B              ;no, skip
2181:7D67 B4 42          mov          ah,0042           ;yes, set AH=42
2181:7D69 8B F4          mov          si,sp             ;DS:SI->packet

2181:7D6B 8A 56 24       mov          dl,[bp+24]        ;drive number
2181:7D6E CD 13          int          13                ;BIOS disk call
2181:7D70 61             popaw                          ;discard packet
2181:7D71 61             popaw                          ;restore regs
2181:7D72 72 0A          jb           7D7E              ;failure jump
2181:7D74 40             inc          ax                ;next sector
2181:7D75 75 01          jnz          7D78
2181:7D77 42             inc          dx
2181:7D78 03 5E 0B       add          bx,[bp+0B]        ;buffer
2181:7D7B 49             dec          cx               
2181:7D7C 75 77          jnz          7DF5              ;continue to read
                                                        ;until done
2181:7D7E C3             ret

2181:7D7F                                              03                 .
2181:7D80 18 01 27 0D-0A 49 6E 76-61 6C 69 64-20 73 79 73  ..'..Invalid sys
2181:7D90 74 65 6D 20-64 69 73 6B-FF 0D 0A 44-69 73 6B 20  tem disk...Disk
2181:7DA0 49 2F 4F 20-65 72 72 6F-72 FF 0D 0A-52 65 70 6C  I/O error...Repl
2181:7DB0 61 63 65 20-74 68 65 20-64 69 73 6B-2C 20 61 6E  ace the disk, an
2181:7DC0 64 20 74 68-65 6E 20 70-72 65 73 73-20 61 6E 79  d then press any
2181:7DD0 20 6B 65 79-0D 0A 00 00-49 4F 20 20-20 20 20 20   key....IO      
2181:7DE0 53 59 53 4D-53 44 4F 53-20 20 20 53-59 53 7F 01  SYSMSDOS   SYS.
2181:7DF0 00                                               .               

                subroutine: read sectors

2181:7DF1 41             inc          cx                  ;CX=1

                CX=sectors to read

2181:7DF2 BB 00 07       mov          bx, 0700            ;ES:BX=0000:0700

                BX=buffer

2181:7DF5 60             pushaw      
2181:7DF6 66 6A 00       push         00000000
2181:7DF9 E9 3B FF       jmp          7D37

2181:7DFC                                     00 00 55 AA              ..U.

作者: acen     时间: 2007-3-7 05:47
都是高手阿
作者: henrya2     时间: 2007-3-19 08:00
我也想参加,可惜我不是一个从DOS时代过来的老鸟,很多东西都不了解
作者: wzsunlight     时间: 2007-3-28 18:55
全力支持,也会积极参与。
作者: macauxdragon     时间: 2007-3-29 11:36
我也支持,我雖然也玩電腦好幾年,不過編程能力也只局限在mfc,vb等windows
程式庫上,dos的程式也只在讀書時用過gwbasic(完全忘記了),qbasic及tc2.0,dos上最强的技倆只是寫bat檔,現在有時間才拿起asm的書看,真的比上面各位大大差很遠呢。
作者: ksquest     时间: 2007-4-7 08:33
什么时候开始呢?
作者: 29934856     时间: 2007-4-11 21:59
做一个操作系统,我们可以借鉴其它任何优秀系统的东西,我们最好有明确的思路,开发的规则等一系列的具体目标,我们不要追求系统的大而全,简单的东西往往更能发挥它的威力。
楼主可以说一下开发计划,以及具体的思路,把一些具体的事情分工来做,大家共同努力,我想系统开发将不再是梦想。
作者: 99     时间: 2007-4-18 08:02
我来学习下
作者: haizaonan     时间: 2007-10-28 16:19
支持!我没有楼上各位那么深厚的功底,对OS了解较多,也有热情,怎么参加这个项目?
作者: uleak     时间: 2007-10-31 00:58    标题: MR-DOS

Be careful!
If you(tinybit) are going to contribute to the new project by coding to it, you are better not do any kind of dirty room reverse engineering. ie:softice

i suggest somebody can file and document those info, then someone else can code for it. REACTOS suffers a lot from the (legal) reverse engineering problem. WineHQ is more careful about this. You are advised to look into Wine's clean room reverse engineering method.

just my little suggestions.
作者: brglng     时间: 2007-11-3 13:21
我认为,我们需要的只是一个能够“替代”MS-DOS的系统,而“替代”并不等于“完全兼容”。对于不兼容的程序,如果能够做出完全能替代的新程序,那还有什么必要去兼容原来的程序呢?我们需要一个“干净”的“新”的好系统,而不是一个“旧”的系统。因此,我觉得FreeDOS从一开始就走错了方向。
作者: jojand     时间: 2007-11-3 16:24
怎样为之“完全兼容”?
若要“完全兼容”,则必定某些东西会跟MSDOS一样,这样会不会堕入微软的陷阱?
作者: johnsonlam     时间: 2007-11-3 20:13
不 覺 又 一 大 段 日 子 過 去 了 , 似 乎 只 有 建 基 在 FreeDOS 的 東 西 較 實 在 ...

在 FreeDOS 電 郵 通 訊 又 吵 了 一 頓 .... 不 外 是 版 本 多 且 亂 , 每 人 的 工 具 不 一 , 內 轄 有 太 多 的 原 碼 可 以 整 理 ( 但 沒 人 去 做 ) ...

其 實 可 以 先 整 理 一 下 原 碼 ...
作者: shanliang8008     时间: 2007-11-4 20:12
本来我不该在这里说什么  看汇编像看天书 ,C就会个HELLO WORD

我看了好久 大家到底想得到一个怎么样的DOS我还是不明白 。任何一个操作系统都要有第三方支持的,没有软件的操作系统拿来何用。自由的 开源的DOS很难。兼容MSDOS的程序还要能启动WIN98,最主要的是还要知道 微软到底在MSDOs里写了什么程序。这是以件很难的事情。要么从头开发一个系统要么,就选择非开源的,要么选择开源的LINUX。这不是一个人或者几个人的事情。中科院都选了一条捷径 开发了个垃圾红旗。何况几个人能怎么样呢。

我觉得开发操作系统要考虑他做什么用,兼容开源自由免费你选择了哪个,总不能都选择吧 。开发软件没有收入都很难混下去,何况开发一个系统而且要兼容MSDOS还要启动WIN98,其实政府应该出面解决一下,可惜政府选择了 LINUX,做的还那么像WINDOWS ,可见是拿来赚钱的,而且就是一套办公软件。如果有能力应该从CPU指令开始从头开发一套系统(没有自己的CPU,amd应该公开了指令,要不中国不会跟他合作开发巨型计算机)
作者: shanliang8008     时间: 2007-11-4 23:00
我不知道你们想要一个什么样子的系统或者达到一个什么效果,我以一个菜鸟的观点看:我们应该完善的不一定是DOS的内核, 或者说根本我们要的不是DOS而是一个可以兼容很多程序的开源的自由的系统(并不一点要免费)。

解决的办法是开发一个虚拟机的系统或者是能运行虚拟机器的系统,这个系统本生对资源消耗不太大提供的是驱动然后开发一个开源的类似于VBOX的虚拟机器,当然也包括可以运行VBOX。不是放弃DOS也不是要自己的内核我们要自己的内核是为了什么?完全可以完善FREEDOS,然后开发他的驱动然后开发他的虚拟机
这个虚拟机器要能运行一些常用系统如其他的DOS 我windows(xp/98==)linux
这样所有的问题都解决了。
还有个办法:
貌似Grub 已经脱离其他操作系统而可以启动其他操作系统了 ,所以下一步就是跳过他们那几个引导文件。。。。。我不明白大家要到达一个什么目标(开发DOS内核的目的是什么)?

[ Last edited by shanliang8008 on 2007-11-4 at 11:07 PM ]
作者: 不点     时间: 2007-11-8 17:59
报告几条消息:

1. FreeDOS 的 debug(自由软件)出了新版:

http://www.japheth.de/Download/debug107.zip

2. Get Real Debugger(自由软件)grdb 也出了新版,版本是 9.2。你想下载?没门,除非你能够访问作者的主页(需要用特殊手段才行,这个就不能在这里唠叨了)。

debug 和 grdb 的差别在于:debug 的语法完全与 MS 的 debug 兼容,而 grdb 只是部分兼容。两个调试器都比 MS 的好,因为 MS 的 debug 不支持 386 指令。这些调试器当然都可以在微软的 DOS 下运行了。所以它们是非常好的,是玩家不可缺少的工具。

3. 在 FreeDOS 主页发现一条消息,说 MPlayer 已经移植到 DOS 了。这可是个大消息!MPlayer 是一个自由软件媒体播放器,运行于 Linux/Windows9x/NT系列,如今也运行于 DOS 了。

从种种迹象可见,DOS 的开发十分活跃,DOS 根本不会像 MS 希望的那样消失掉。DOS 代表的是 MS 不想要的技术,但是,不能代表世界上其他人都不想要。

所以,希望那些徘徊、彷徨的人,树立信心,看到前面的路,不要被一些假象所蒙蔽了,要高瞻远瞩。

当然,我可不是鼓动任何人去做任何冒险的事。你自己一定要看准了方向,不要轻易受到别人的鼓动。

我说的 DOS 有前途,主要是指开发自由软件的 DOS 有前途。如果你想开发一个私有软件 DOS,那不在讨论范围之内(也许有前途,也许没有前途,这个结论我不能下,因为我不关心这一情况,也没有研究过这一情况)。

shanliang8008: 你关于 grub 说得没错。其实,我实际上主要在开发 grub4dos,也非常重视 grub4dos 的发展,我没有时间来做 DOS 的开发,如果有一点闲暇,我都希望贡献给 grub4dos,而不是 DOS,因为 grub4dos 太需要开发了,目前的开发进度,距离我们的目标还很遥远。grub4dos 将来有可能发展成为一个操作系统,但那同样很遥远。

[ Last edited by 不点 on 2007-11-8 at 09:06 PM ]
附件 1: grdbdl92.zip (2007-11-8 21:04, 215.21 K, 下载附件所需积分 1点 ,下载次数: 26)

作者: 本是     时间: 2007-11-8 18:57


  Quote:
Originally posted by 不点 at 2007-11-8 17:59:
Get Real Debugger(自由软件)grdb 也出了新版,版本是 9.2。你想下载?没门,除非你能够访问作者的主页(需要用特殊手段才行,这个就不能在这里唠叨了)。

就等着你唠叨“用特殊手段才行”!!!
作者: 220110     时间: 2007-11-8 20:58
MAXDOS 6。0的版权声明都有了“本是”的大名啦~强~
能不能让MAXDOS作者加上“本是(form www.cn-dos.net中国DOS联盟)“,哈
作者: 不点     时间: 2007-11-8 21:13
本是,伟大的防火墙,对你来说不会是个很大的障碍吧?既然你懒得动手,我就上载了它,见前一帖子的附件 grdbdl92.zip 。
作者: 本是     时间: 2007-11-9 00:58
RE: 不点:
太谢谢你了——让大家都能用到好工具!
作者: shanliang8008     时间: 2007-11-9 14:14
WIN98现在也不行了, 我日驱动都没, 除非自己会写 。
软件世界就这样呀  ,第三方是最重要的。
作者: shanliang8008     时间: 2007-11-9 14:18
其实我们想要的就是 IO里面到底有什么见不得人的东西,启动WIN98 grub4dos就可以作到 还可以启动XP等等,我是不懂反编译 ,在这里胡扯了
作者: DJ131452DJ     时间: 2009-3-3 17:35
支持
作者: MeKeM     时间: 2009-3-8 18:37    标题: 容许小菜说一句

我觉得有技术必须要有组织。。。
每个人有自己的专长 应该发挥长处
一选目标
1.虽然windows有很多人不齿 毕竟为大多数接受。界面操作应该为目标
2.Linux的安全机制。
3.兼容多种格式以及系统
二根据目标能力分工
1.首先能力自愿上报。
2.有组织性网络人才。是人才就问一句前提是自愿。所谓组织就是各方面人才。组织 策划 公布 落实 其实就是类似跟单 或叫项目跟踪(太冷了 可能表达不够清楚)
3.项目设立小组 小组落实人手 小组组长复制落实人任务和人 还有检查进度和结果
4.主线小部分整合 和测试
5.宣传并发布收集意见
6.改进并完善界面和功能,增强安全性能 精简核心程序,加快运行速度。
7.开发周边应用软件
8.我是菜鸟 乱说一通 欢迎批评指正。QQ:88186814
作者: johnsonlam     时间: 2009-4-22 01:01


  Quote:
Originally posted by 本是 at 2007-1-27 10:51 AM:
RE 不点14楼:
8 楼有说:“通过这种秘密设计的接口也可以运行Win9x GUI界面。可惜的是,Caldera公司似乎并没有公开这个程序。Ralf Brown的中断列表中也 ...


最 好 不 要 用 『 非 標 準 』 的 秘 密 API ...
會 影 響 兼 容

作者: shanliang8008     时间: 2009-4-22 09:54
2007-1-22 09:46 AM
2 年了
作者: qyriver     时间: 2009-5-30 10:57
不知道有没有成为一个项目呢?
作者: qq692172929     时间: 2009-6-13 23:30    标题: DOS的命运不敢想像

从最初的就DOS到现在!

想想以后

就已经觉得 自己所处在的这个社会相当的复杂!

  人们也是格外的聪明!
所以以后一定还会有更好的DOS作品出现在我们的眼前!
作者: Roy     时间: 2009-6-23 12:17
也許該由最基本的Int 21開始做起吧?
外國的 DexOS 就有一個小項目做這個,叫做MiniDOS。
http://dex.7.forumer.com/viewtopic.php?p=3895#3895
作者: SSYYZZ     时间: 2009-8-17 07:38
要么编个以DOS为内核的Window OS?
作者: swarron     时间: 2009-8-28 22:54
不看好重起楼灶,赞成5楼的提议,可以效仿*BSD的模式。
作者: swarron     时间: 2009-8-28 23:00
近况如何?
作者: kirov     时间: 2009-9-19 09:50
很支持自立门户建立一个新的DOS标准,如果有什么要我效劳的尽管说,我虽说不是相当精通DOS,但我可以做DOS的测试人员啊,甚至我可以发动我的几个网友一同投入测试,我们都会虚拟机,甚至我可以拿我自己的电脑投入测试!所以就算开发再久,我们都会等,等待属于我们的DOS!

[ Last edited by kirov on 2009-9-19 at 09:52 ]
作者: lxwlxwayy     时间: 2009-10-11 19:37
这个项目我不喜欢,不过我想一个人干试试,从0和1开始
反正每天是无聊
作者: lovewow200s     时间: 2009-12-28 16:42
提法很好,只是似乎没有了下文!
作者: 414716676     时间: 2010-1-11 09:49
怎么没有人组织,开始研发呢?非常想和各位告诉请教!
作者: sl543001     时间: 2010-2-25 12:31
顶,找齐人马,抄家伙!
作者: jnwgs     时间: 2010-4-21 00:37
支持楼主!
作者: pdl     时间: 2010-4-24 22:50
我认为我们应该新制作一个系统,而不是一个“旧”的系统,就像WindowsNT一样
作者: pdl     时间: 2010-4-25 08:56


  Quote:
Originally posted by MeKeM at 2009-3-8 18:37:
我觉得有技术必须要有组织。。。
每个人有自己的专长 应该发挥长处
一选目标
1.虽然windows有很多人不齿 毕竟为大多数接受。界面操作应该为目标 ...

我也是这样认为的,这个系统应该能兼容多种系统!而且要有实用意义和Windows般的界面和LINUX的安全!
我也是个小菜,只会写写BAT,C++只会HELLOWORD!,ASM一知半解。

[ Last edited by pdl on 2010-4-25 at 08:58 ]
作者: pdl     时间: 2010-4-30 19:27
我认为可以叫Cdu OS,即中国DOS联盟的系统,这是我用WindowsXP的画图制作的16色LOGO,转成了PNG档,大家可以转回BMP档。

[ Last edited by pdl on 2010-4-30 at 19:30 ]
附件 1: 1.png (2010-4-30 19:28, 41.72 K)


附件 2: 1.bmp.rar (2010-4-30 19:30, 2.82 K,下载次数: 2)

作者: pdl     时间: 2010-5-5 13:25
我虽然不能当领头人,但我想把我的构思说一下。
领头人
   │核心研究部
   ├─────┐
   │程序员1    │┐
   │程序员2    │ >很多人
     ................│┘
   │shell研究部
   ├─────┐
   │设计部      │
   ├────┐│
   │设计师   ││
   ├────┘│
   │制作部      │
   ├────┐│
   │程序员1 ││
   │程序员2 ││
   │程序员3 ││
   │程序员4 ││
   ├────┘│
   ──────┘
工具制作部
   │播放器部
   │4个程序员
   │浏览器部
   │4个程序员
   │图片查看器部
   │4个程序员
   │小工具部
   │4个程序员
测试部
   │ 5个测试员
作者: mbss     时间: 2010-5-15 11:21
支持下
新手也好好学习
谢谢
作者: sgzhou12345     时间: 2010-5-18 11:55
向努力学习的人致敬》》》》》》》》》》》》》》
作者: qiouhuawoaini     时间: 2010-5-21 04:37    标题: !!@#

有人发起   为啥就不见动静呢?
作者: 人类     时间: 2010-5-30 01:49    标题: 现在干什么都最缺的是时间

十二年前写过自己的主引导程序,是为了多操作系统启动方便。
DOS还有很强生命力,至少现在U盘启动等及低级维护还需要它。
我觉得直接拿msdos源程序来仿制吧,非盈利的研究和自用也会被告吗?
做个崭新的DOS工程量偏大,不如直接在msdos上更改和扩展更实用。比如NTFS的访问,我找了N多都还不如ghost内置的好。还比如目前马上面临更大的分区和文件的exFAT支持,我8G以上U盘为了拷入单个4G以上大小的文件而格成exFAT,显然目前不能同时做启动盘了。我想,首先要从修改分区引导去找io.sys开始。exFAT毕竟是从FAT基础上扩展出来的,比去搞NTFS要容易。

又有好几年没上来了

[ Last edited by 人类 on 2010-5-30 at 01:52 ]
作者: comsci     时间: 2010-10-28 17:08
支持楼主的建议,但是我们很多时候缺乏足够的精力和时间
作者: QQ11468778     时间: 2010-11-17 11:50
顶峰
作者: zaixinxiangnian     时间: 2010-11-20 17:21
我也支持,,,
管理层的极及带动我们的极及
作者: coohai     时间: 2010-12-7 21:34
我是新来的.但看到这么多人对开发DOS的热情,不由想说两句.
首先,对于这种思想:要有自己的免费的开源的DOS,极为赞同,支持!
但也有些疑问:
    DOS大部分时候都在实模式下工作,而这种模式下,很多操作免不了不便,比如内存操作(虽然有4G访问的方法,4G以上只怕力有不逮),多任务,多线程等,相比之下,还是在保护模式下工作为好.当然,保护模式下对驱动要求会更多.
    从开发需求来说,也许只是满足了部分人的开发需要(也许是好奇心),对于大多数人的应用来说,DOS很难满足,所以这个开发也许不是那么需要.
    以上厥词,让大家不高兴了,请原谅.
作者: chenggongwy     时间: 2010-12-12 23:05
顶下
作者: xempo     时间: 2016-2-11 21:46
DOS有其简单的优点,曾是一个时代的标志,当然会有“续绝世,兴亡国,举逸民”的可能,况百花齐放才是春嘛。
    要支持DOS的继往开来,我们应该务实,并非一定要再建内核。子曰:“施于有政,是亦为政。”
作者: xempo     时间: 2016-2-27 13:19
“朝菌不知晦朔,蕙菇不知春秋。”此庄子言,谓世间物种繁多,而各自有不同的生存方式,乃达逍遥自在境界,呼吁人们效法自然,不要谋简单的统一而争论不休。佛教亦有云:“各得其所”,此当自“万法随缘”的佛教宗旨。
而达尔文的“进化论”,人们不会理解成“今天的猴子,明天就变成人”的吧!如这般理解,那么世界只剩一种特种了,那就是最高级的人,而事实上,人并非什么都比其它生物好,例如这两天我在害眼疾,人的眼睛就远比不上蜻蜓。
作者: LoggerVick     时间: 2018-4-4 21:03
但是这个计划到现在没实行,凉了吗?
作者: NoEvil     时间: 2020-12-1 20:41
我是一个新手 以下的话 或许有错误 因为 我并不了解前辈们 如果那里说错 还望见谅。

我想说:想要真正的完成 你的想法 首先自身要有高度 这个高度 不仅仅是技术高度 还有你的社会高度 如果 你是清华高校 亦或 微软的人 那一定可以接触到 被隐藏的秘密 我希望 我是那个人 但我感觉 我实力不够 希望后来者 如果有人看到 可以成为真正的的大人物!!!

之前 高中 我以为我的计算机是同龄人中的佼佼者 把所有时间 花费在了计算机上面 如今 只是一名专科生 看了很多的书籍 证书 比如CISP认证( 由于是学生 我考的NISP ) 感触很多 目前打算接本 打算考研 目标就是清华!!!

希望看到这篇文章的你我 都可以 加油哦(ง •_•)ง