无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 8576|回复: 57
打印 上一主题 下一主题

如果有可能的话,我感觉 yaya 应该帮我整合操作系统

    [复制链接]
跳转到指定楼层
1#
发表于 2014-11-16 04:44:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 不点 于 2014-11-16 10:14 编辑

我的操作系统构想是这样的,主程序内核进入纯 32 位保护模式,不再像目前这样不停地在实模式和保护模式之间切换。

在纯保护模式环境下,由于不使用 bios,所以,就可以腾出大量常规内存,与 dos 等操作系统不再争用常规内存,让 dos 等其他操作系统可以与 grub4dos 同时存在。grub4dos 自身隐藏于被 int15 所保护的虚拟内存盘中,启动其他操作系统后,只需热键呼出,即可进入 grub4dos 环境。这种格局有点类似于 win98 时代的 softice 的运作方式。

整合成功后,顺便也可以集成一个 dos,例如 dosemu 或 dosbox,只需实现 int21 等少数几个 API 即可。这样就能够直接运行 DOS 软件了。目前的 grub4dos 可以运行 16 位程序,但这个 16 位程序只能调用 bios 功能,无法调用 dos 功能。到那时,局面彻底改观。

grub4dos 自身隐藏在扩展内存顶部之后,还可以让常规内存顶部的 int13 处理程序的代码切换到保护模式环境,执行位于扩展内存顶端的 32 位代码,完成处理任务之后,再返回到实模式。这样的话,int13 处理程序的代码空间变得很大了,再也不用为空间紧张而发愁了。于是,比如说,yaya 想支持碎片文件的仿真,其碎片个数就可以不加限制了,爽歪歪。

推荐
发表于 2014-11-16 11:35:42 | 只看该作者
还有这里有一份ntldr的解析资料,希望能有用

61470.7z

1.61 MB, 下载次数: 98, 下载积分: 无忧币 -2

回复

使用道具 举报

推荐
发表于 2014-11-16 11:06:49 | 只看该作者
我感觉最重要的是移植两个功能

1.不依赖BIOS读盘
2.能够把自己移到拓展内存并运行
回复

使用道具 举报

推荐
 楼主| 发表于 2014-11-16 10:19:46 | 只看该作者
本帖最后由 不点 于 2014-11-19 08:56 编辑

今天下载了一个 open android svn, 可以用它下载 kolibri 到平板上。下载后,再配合 terminalIDE 以及 vim touch 等软件,就可以在 android 下进行开发了。

又用这个 svn 软件下载了 grub4dos 到平板上,感觉很爽。
回复

使用道具 举报

推荐
 楼主| 发表于 2014-11-16 05:06:15 | 只看该作者
本帖最后由 不点 于 2014-11-16 05:18 编辑


技术实现路线

第一步,寻找一个合适的操作系统,功能比较满意,结构比较简单。
第二步,改造这个操作系统,让它能够隐遁到扩展内存顶部运行,不再占用低端内存。这一步是关键,如果实现,其余的也就没有实质性的困难了。
第三步,将 grub4dos 的家搬到这个操作系统上,或者等价地说,继续改造这个操作系统,让它能够具有 grub4dos 的功能。



回复

使用道具 举报

6#
 楼主| 发表于 2014-11-16 11:51:11 | 只看该作者
谢谢。如果是几年前,或许我还有兴趣研究 ntldr,现在没有兴趣,也没有时间了。

现成的开源操作系统多的是,总能找到一个满意的,作为基础模型。

回复

使用道具 举报

7#
发表于 2014-11-16 16:35:01 | 只看该作者
脱离BISO的问题是, 要自己针对各种不同厂家的设备写pool驱动。
需要一个公司/ORG 一直维护这件事。

点评

这方面可以参考Linux(应该是写了通用的驱动),再不行我有msahci的源码可以参考一下  详情 回复 发表于 2014-11-16 16:55
回复

使用道具 举报

8#
发表于 2014-11-16 16:55:47 | 只看该作者
mdyblog 发表于 2014-11-16 16:35
脱离BISO的问题是, 要自己针对各种不同厂家的设备写pool驱动。
需要一个公司/ORG 一直维护这件事。

这方面可以参考Linux(应该是写了通用的驱动),再不行我有msahci的源码可以参考一下
回复

使用道具 举报

9#
发表于 2014-11-17 10:44:43 | 只看该作者
不点高看我了。能吃几碗干饭自己知道。可以做点力所能及的事,尽管吩咐。

点评

制作好了第一个补丁,可在这里下载: http://bbs.wuyou.net/forum.php?mod=viewthread&tid=345619 仍有问题,USB 初始化代码会导致死机,所以,屏蔽掉了 USB 初始化代码。另外,进入桌面后,能看见右下角的时  详情 回复 发表于 2014-11-24 09:30
回复

使用道具 举报

10#
 楼主| 发表于 2014-11-24 09:30:28 | 只看该作者
2011yaya2007777 发表于 2014-11-17 10:44
不点高看我了。能吃几碗干饭自己知道。可以做点力所能及的事,尽管吩咐。

制作好了第一个补丁,可在这里下载:

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=345619

仍有问题,USB 初始化代码会导致死机,所以,屏蔽掉了 USB 初始化代码。另外,进入桌面后,能看见右下角的时间在走动,但鼠标没响应。按键盘上的 “Windows” 键可以调出开始菜单,但执行任何菜单命令都会导致系统失常,以后再也无法调出开始菜单了。

目前已经做的工作:

将 kolibri 使用的内存限定在扩展内存顶部的 64M 范围之内。其中上半部分的 32M 供内核使用,下半部分的 32M 供应用程序使用。

虚拟内存的分页已经调整得差不多了,之所以出现上述问题,可能是因为仍然有某些与实模式常规内存有关的地址转换还存在死角,没有转换完成。

我用 grep 命令查了整个内核代码,发现没有 LLDT 指令。这说明,kolibri 不使用 LDT,只使用 GDT 和 IDT。这就减少了复杂性。

回复

使用道具 举报

11#
发表于 2014-11-24 14:26:42 | 只看该作者
我下载了 kolibri.img,可以在虚拟机运行。我没有源码,无法打补丁。请给个链接地址。
回复

使用道具 举报

12#
 楼主| 发表于 2014-11-24 16:31:22 | 只看该作者
本帖最后由 不点 于 2014-11-26 11:41 编辑

下载源码的命令是
  1. svn  co  svn://kolibrios.org/kernel/trunk  kolibri
复制代码


在线查看源码的地址是:
http://websvn.kolibrios.org/

从 fasm 的开发主站下载 fasm 的 Windows 版,解压后把 fasm.exe 放在 C:\Windows 下,然后在资源管理器中进入 kernel\trunk\

双击 build.bat 即可开始编译。它会询问究竟是执行编译 kernel 的操作还是执行 clean,此时敲入 kernel 回车,即可编译。

编译结果是 bin\kernel.mnt 用它覆盖掉 kolibri.img 里面的同名文件,即可开始测试。



回复

使用道具 举报

13#
 楼主| 发表于 2014-11-26 11:45:03 | 只看该作者
本帖最后由 不点 于 2014-11-26 12:42 编辑

kolibri 的体积不大,但内存布局十分复杂,愣是找不出哪里有问题。

看来得再找一个替代品了。

顺便发表一下感慨。事物都是不完美的,不是有这样的缺点,就是有那样的缺点。

看到 kolibri 华丽的界面,感觉很超值。但深入到内部,发现其代码结构,内存布局等,
十分混乱。出了问题,很难排错。

于是体会到代码结构的井井有条是重要的了。首先想到的是 minix,希望能够有所突破。

回复

使用道具 举报

14#
 楼主| 发表于 2014-11-26 15:33:38 | 只看该作者
刚才在 VirtualBox 虚拟机下安装了最新版 minix,能启动到命令行,但敲入 startx 命令,竟然失败!!无法进入图形桌面!!

老天!minix 开发了这么久,还不能支持 VirtualBox 的显卡!!这也太差劲了吧?

如果光是进入命令行,那有个什么劲啊?

一开始都磕磕碰碰的,这号的,只能放弃。


回复

使用道具 举报

15#
发表于 2014-11-26 15:45:14 | 只看该作者
可以分享你测试的minix吗?

点评

下载地址: http://download.minix3.org/iso/snapshot/ 是光盘镜像,我下载的是最底下那个,也就是最新的。 挂在你的虚拟机下就可以测试了。但是,它的光盘启动只是到达一个命令行界面,你需要按照英文提示  详情 回复 发表于 2014-11-26 15:55
回复

使用道具 举报

16#
 楼主| 发表于 2014-11-26 15:55:14 | 只看该作者
jack95 发表于 2014-11-26 15:45
可以分享你测试的minix吗?

下载地址:

http://download.minix3.org/iso/snapshot/

是光盘镜像,我下载的是最底下那个,也就是最新的。

挂在你的虚拟机下就可以测试了。但是,它的光盘启动只是到达一个命令行界面,你需要按照英文提示安装到虚拟的硬盘上才行。

我安装到虚拟硬盘以后,仍然只有命令行。敲入 startx 命令,显示一大堆出错信息,最后一行是:

xinit: server error

回复

使用道具 举报

17#
 楼主| 发表于 2014-11-26 16:08:18 | 只看该作者
BaremetalOS,简约、高效,但可惜没有图形界面,是个玩具。

回复

使用道具 举报

18#
发表于 2014-11-26 21:20:55 | 只看该作者
    G4D是基于grub,归根到底是一个bootloader。在兼容性和实用性上,G4D作出了非凡的贡献,在和商业软件恶意封杀的斗争中,不屈不挠,贡献有目共睹,甚至超越了grub本身和grub2,这要感谢全体开发者的努力。斗胆问一句,整合操作系统,是准备和M$的windows竞争,还是准备替代linux,再创开源软件的辉煌?
    再次感谢G4D软件的全体维护人员,正是你们辛勤的工作,不断开发完善G4D的功能,比如兼容性,比如exfat等新文件系统的支持,比如支持碎片文件的仿真等功能,才使G4D软件保持了旺盛的生命力,受到越来越多的人的喜爱和支持!
    谢谢!
回复

使用道具 举报

19#
 楼主| 发表于 2014-11-26 21:22:30 | 只看该作者
本帖最后由 不点 于 2014-11-30 15:05 编辑

当失望到达顶点时,好消息来了。

kolibri 的内核基本改造成功,可以正常进入桌面了。

回想一下,Minix 竟然不能进入图形界面,而 Linux 内核的改造难度又太大。其实可选择的余地已经不多了。庆幸 kolibri 能够改造成功。

请下载附件,解压后,它是编译好的 kernel.mnt 文件,用来替换掉 kolibri.img 里面的同名文件,即可测试。

遗留的小问题:

1、重启时会死机,但关机似乎正常,能成功关机。【更新】死机的原因已找到,是由于实模式代码位于扩展内存造成的,暂时不解决,以后会统一处理那些与实模式有关的问题。【再更新】2014-11-29:问题解决了,重启时不再死机了。
2、MTRR 有异常,在右上角有出错提示出现。【更新】忽略这个问题,这是原版的 kolibri 就有的问题,与本次改动无关。

源代码已经更新,在这里下载:
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=345619

2014-11-30 更新:添加了虚拟地址映射,将物理地址 0 至 4M 的空间映射为虚拟地址 0xC0000000 处的 4M 空间,方便读写实模式内存。

kernel.rar

86.24 KB, 下载次数: 39, 下载积分: 无忧币 -2

2014-11-30 更新:添加了虚拟地址映射,将物理地址 0 至 4M 的空间映射为虚拟地址 0xC0000000 处的 4M 空间 ...

点评

实机测试的,一台945主板,一台B85的主板,优盘启动,用G4D MAP进内存测试的: 如果不知选择,卡死在 Setting OS task阶段,只能RESET重启; 在ABCDE中作选择,最终也没能成功,只是多显示了几行字符(没仔细   发表于 2014-11-28 10:08
反正有問題都可以去官方論壇問。 http://board.kolibrios.org/  详情 回复 发表于 2014-11-27 10:37
请问MTRR是什么东西?  详情 回复 发表于 2014-11-27 09:46
回复

使用道具 举报

20#
 楼主| 发表于 2014-11-26 21:44:24 | 只看该作者
谢谢 pppfj 的支持和提问。

把 grub4dos 发展为操作系统的想法,在几年前就有过讨论。这是一个并不轻松的课题。启动器的功能不断完善,这个过程就是向轻型操作系统迈进的过程,这本来就是自然而然的。比如说,syslinux,grub2,都具有了操作系统的某些功能和特征。grub4dos 目前也算得上是半个操作系统,因为 grub4dos 能够运行用户程序。但是, grub4dos 的进程管理和内存管理都太贫乏,不能算是一个方便易用的操作系统。其实第三方的开发者们希望 grub4dos 能够有着完善的操作系统功能,这样,第三方的开发者们用起来更方便。

这个操作系统不是让最终用户使用的,而是方便第三方的 grub4dos 应用者和开发者的。我们不可能与商业操作系统进行竞争,我们也没有能力与 Linux 等著名开源操作系统竞争。我们只能填补空缺,只能在启动方面达到我们所能达到的高度,让这个世界更丰富多彩一些,让用户也多一种选择。

回复

使用道具 举报

21#
发表于 2014-11-27 09:46:46 来自手机 | 只看该作者
不点 发表于 2014-11-26 21:22
当失望到达顶点时,好消息来了。

kolibri 的内核基本改造成功,可以正常进入桌面了。

请问MTRR是什么东西?

点评

Memory type range register,中文介紹 http://blog.csdn.net/lightseed/article/details/4603383  详情 回复 发表于 2014-11-27 10:41
回复

使用道具 举报

22#
发表于 2014-11-27 10:28:03 | 只看该作者
成品的kolibri 不大,不点能否提供成品让大家帮忙测试
回复

使用道具 举报

23#
发表于 2014-11-27 10:37:57 | 只看该作者
不点 发表于 2014-11-26 21:22
当失望到达顶点时,好消息来了。

kolibri 的内核基本改造成功,可以正常进入桌面了。

反正有問題都可以去官方論壇問。
http://board.kolibrios.org/
回复

使用道具 举报

24#
发表于 2014-11-27 10:41:29 | 只看该作者
sunsea 发表于 2014-11-27 09:46
请问MTRR是什么东西?

Memory type range register,中文介紹
http://blog.csdn.net/lightseed/article/details/4603383
回复

使用道具 举报

25#
 楼主| 发表于 2014-11-28 11:35:38 | 只看该作者
本帖最后由 不点 于 2014-11-28 11:36 编辑

@captain_g

麻烦你,报告详细一点。你首先试试未经修改的原版 kolibri.img 能否正常?

必须确定究竟是原版固有的问题呢,还是改造后产生的问题?

如果原版本来就有问题,那我们有两种选择:其一,放弃它。其二,对其进行深度改造。

如果是改动后出现的问题,那我们只需排除 bug。




回复

使用道具 举报

26#
发表于 2014-11-28 13:32:12 | 只看该作者
@ 不点

中午休息,在办公室的电脑(B85M主板)上测试了一下:

原版的IMG(2014-1125 04:00),测试了几次,使用缺省选择,自动成功进入桌面,没有发现错误提示,玩了一下贪吃蛇,关机正常,但有时鼠标未能驱动(这个应该不是问题,在这台机器上,WIN8之前的PE有时也不能加载鼠标,估计鼠标插在3.0的口上);

看来一下它的缺省设置,b项c项是“关”的,d项是“开”的,e项是软盘;

按你的方法修改后的IMG,如使用缺省选择,则会卡在死 Setting OS task 处,只能按 RESET 重启;
按屏幕提示进行手动设置,关b开c关d,仍不能能进入桌面,屏幕 多 提示一行,K: using mwait for idle loop
e项也选了,其他组合也试了,失败的提示大同小异;

有时间再在我自己的笔电上试一试,那台上面的提示倒是有好几行。

注:修改后的镜像用QUMU测试是正常的。
回复

使用道具 举报

27#
发表于 2014-11-28 14:13:13 | 只看该作者
@ 不点

用你今日(28)12:34 的 kernel.mnt 更新 IMG 后,使用缺省设置 成功 进入桌面!玩了一下贪吃蛇。

测试几遍,关机正常,但 按ENTER键 或 点鼠标 重启 均无反应。还有,鼠标偶尔不能加载。
回复

使用道具 举报

28#
 楼主| 发表于 2014-11-30 15:46:04 | 只看该作者


kolibri 的改造进行得很顺利。原来 kolibri 内核位于常规内存空间中。经过改造后,内核移动到扩展内存的顶部。内核以及应用程序只使用扩展内存顶部的 64M 内存。内核的虚拟地址空间是 0x80000000 至 0xFFFFFFFF,而应用程序的虚拟地址空间是 0 至 0x7FFFFFFF。经过改造之后,可以通过虚拟地址 0xC0000000 处的 4M 空间来访问物理地址 0 处的 4M 空间。如果要访问其他物理地址空间(包括访问 4G 以上的物理地址空间),需要继续做工作才行。

只需用 int15 把 kolibri 的物理内存空间保护起来,就可以让 kolibri 与其他操作系统共存。

kolibri 有图形模式,有桌面,有窗口系统。有进程管理,有内存管理,有文件系统。

kolibri 也有 shell ……

似乎我们只需要写出一些应用程序便可(当然,必要时可以修改内核,增加系统调用),比如,写个 map 程序用来模仿 grub4dos 的功能。

驱动程序也可以写。官方的 kolibri 驱动程序和应用软件,都可以原封不动照搬过来。

点评

期待不点大师的作品  详情 回复 发表于 2014-11-30 16:02
回复

使用道具 举报

29#
发表于 2014-11-30 16:02:45 | 只看该作者
不点 发表于 2014-11-30 15:46
kolibri 的改造进行得很顺利。原来 kolibri 内核位于常规内存空间中。经过改造后,内核移动到扩展内存 ...

期待不点大师的作品
回复

使用道具 举报

30#
发表于 2014-11-30 16:49:06 | 只看该作者
不点大师初试成功,可喜可贺!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-9-22 07:13

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表