无忧启动论坛

标题: 如果有可能的话,我感觉 yaya 应该帮我整合操作系统 [打印本页]

作者: 不点    时间: 2014-11-16 04:44
标题: 如果有可能的话,我感觉 yaya 应该帮我整合操作系统
本帖最后由 不点 于 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 05:06
本帖最后由 不点 于 2014-11-16 05:18 编辑


技术实现路线

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




作者: 不点    时间: 2014-11-16 10:19
本帖最后由 不点 于 2014-11-19 08:56 编辑

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

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

作者: sunsea    时间: 2014-11-16 11:06
我感觉最重要的是移植两个功能

1.不依赖BIOS读盘
2.能够把自己移到拓展内存并运行
作者: sunsea    时间: 2014-11-16 11:35
还有这里有一份ntldr的解析资料,希望能有用

61470.7z

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


作者: 不点    时间: 2014-11-16 11:51
谢谢。如果是几年前,或许我还有兴趣研究 ntldr,现在没有兴趣,也没有时间了。

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


作者: mdyblog    时间: 2014-11-16 16:35
脱离BISO的问题是, 要自己针对各种不同厂家的设备写pool驱动。
需要一个公司/ORG 一直维护这件事。


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

这方面可以参考Linux(应该是写了通用的驱动),再不行我有msahci的源码可以参考一下
作者: 2011yaya2007777    时间: 2014-11-17 10:44
不点高看我了。能吃几碗干饭自己知道。可以做点力所能及的事,尽管吩咐。
作者: 不点    时间: 2014-11-24 09:30
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。这就减少了复杂性。


作者: 2011yaya2007777    时间: 2014-11-24 14:26
我下载了 kolibri.img,可以在虚拟机运行。我没有源码,无法打补丁。请给个链接地址。
作者: 不点    时间: 2014-11-24 16:31
本帖最后由 不点 于 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 里面的同名文件,即可开始测试。




作者: 不点    时间: 2014-11-26 11:45
本帖最后由 不点 于 2014-11-26 12:42 编辑

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

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

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

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

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


作者: 不点    时间: 2014-11-26 15:33
刚才在 VirtualBox 虚拟机下安装了最新版 minix,能启动到命令行,但敲入 startx 命令,竟然失败!!无法进入图形桌面!!

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

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

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



作者: jack95    时间: 2014-11-26 15:45
可以分享你测试的minix吗?

作者: 不点    时间: 2014-11-26 15:55
jack95 发表于 2014-11-26 15:45
可以分享你测试的minix吗?

下载地址:

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

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

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

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

xinit: server error


作者: 不点    时间: 2014-11-26 16:08
BaremetalOS,简约、高效,但可惜没有图形界面,是个玩具。


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


作者: 不点    时间: 2014-11-26 21:44
谢谢 pppfj 的支持和提问。

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

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


作者: sunsea    时间: 2014-11-27 09:46
不点 发表于 2014-11-26 21:22
当失望到达顶点时,好消息来了。

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

请问MTRR是什么东西?
作者: jack95    时间: 2014-11-27 10:28
成品的kolibri 不大,不点能否提供成品让大家帮忙测试
作者: roytam1    时间: 2014-11-27 10:37
不点 发表于 2014-11-26 21:22
当失望到达顶点时,好消息来了。

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

反正有問題都可以去官方論壇問。
http://board.kolibrios.org/
作者: roytam1    时间: 2014-11-27 10:41
sunsea 发表于 2014-11-27 09:46
请问MTRR是什么东西?

Memory type range register,中文介紹
http://blog.csdn.net/lightseed/article/details/4603383
作者: 不点    时间: 2014-11-28 11:35
本帖最后由 不点 于 2014-11-28 11:36 编辑

@captain_g

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

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

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

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





作者: captain_g    时间: 2014-11-28 13:32
@ 不点

中午休息,在办公室的电脑(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测试是正常的。
作者: captain_g    时间: 2014-11-28 14:13
@ 不点

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

测试几遍,关机正常,但 按ENTER键 或 点鼠标 重启 均无反应。还有,鼠标偶尔不能加载。
作者: 不点    时间: 2014-11-30 15:46


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

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

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

kolibri 也有 shell ……

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

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


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

期待不点大师的作品
作者: 青青草    时间: 2014-11-30 16:49
不点大师初试成功,可喜可贺!


作者: 不点    时间: 2014-12-1 12:06
我在 kolibri 的 LiveCD 中可以运行 DOSBox 仿真器,成功进入 DOS。

可是我在官方的 svn 代码库里面没有找到相关的软件。

有谁能研究一下,这究竟是如何实现的吗?

作者: 不点    时间: 2014-12-1 12:55
在 kolibri 中可以使用各种编译器:FASM,NASM,MASM,还有如下的 C 语言编译器和一个 Pascal 编译器:

Environments Visual C++ 6, C++ from Visual Studio .NET/2005

Compilers GCC, G++

Compiler Borland C++

The compiler Tiny C

Compiler Pascal Pro

参考网址:Use of various compilers in KolibriOS
http://kolibri-n.org/inf/hll/hll_eng.php
作者: 不点    时间: 2014-12-1 19:53
我可以做与系统底层有关的移植工作,CPU 指令之类的东西,我不害怕。

需要有人做中文化方面的工作,包括字库、字符编码、输入法之类的东西。

驱动程序的开发当然也是需要的,我也做不了这些工作。

网络我也不懂,需要有人做这些工作。

总之,谁愿意帮忙的话,现在就可以动手做了。等你做完了,我的移植工作说不定也全面完成了。


作者: 不点    时间: 2014-12-1 20:19
这里是 distrowatch 的 kolibri 页面:
http://distrowatch.com/table.php?distribution=kolibri

KolibriOS

最后更新: 2014-11-20 03:02 UTC

【KolibriOS】

    发行归类: Other OS
    基于何种发行: Independent
    来源: Russia
    处理器架构: i386
    桌面: KolibriOS
    类型: Desktop, Old Computers, Live Medium, Netbooks
    状态: 活跃发展中
    受欢迎程度排名: 152 (75 每日点击次数)

KolibriOS是微型开源操作系统,它采用单片式内核及显示驱动,面向32比特的x86架构计算机。KolibriOS是MenuetOS的分支,完全以FASM(一种汇编语言)编写。然而,C、C++、Free Pascal、Forth等其他高级编程语言及编译器也能用于应用软件的开发。KolibriOS的特性在于一套丰富的应用软件,包括字处理软件、图像显示软件、图形编辑器、网页浏览器,以及30多种游戏。

受欢迎程度排名 (每日点击次数): 12 个月: 152 (79), 6 个月: 152 (75), 3 个月: 149 (79), 4 个星期: 131 (79), 1 个星期: 131 (71)


作者: sunsea    时间: 2014-12-1 20:39
本帖最后由 sunsea 于 2014-12-1 20:42 编辑
不点 发表于 2014-12-1 12:55
在 kolibri 中可以使用各种编译器:FASM,NASM,MASM,还有如下的 C 语言编译器和一个 Pascal 编译器:

...


能用VC2005/VC6那我被吓坏了,如果真的可以的话找一份API清单来所有这些问题都不难解决,内核改造成使用UTF8/unicode,于是万国语言支持so easy(网上有开源中文输入法),然后支持一个TRUETYPE字体解析就可以彻底解决语言问题。(再不济也可以弄点阵字库unifont.hex),然后弄个通用硬盘驱动以及通用网卡驱动,还有开源的一些HTTP,TCP协议栈啥的(貌似不是难事,linux就是几乎通用,网络方面也有现成的开源协议栈)和USB驱动就行了,其他驱动暂且不用
作者: sunsea    时间: 2014-12-1 20:46
不点 发表于 2014-12-1 20:19
这里是 distrowatch 的 kolibri 页面:
http://distrowatch.com/table.php?distribution=kolibri


看样子他们已经解决了应用层面和硬盘以及网络以及usb的问题了,移植万国语言支持(其实就是unicode\utf8以及字库支持)和重要的g4d.功能就行了
作者: 不点    时间: 2014-12-1 22:01
dosbox for kolibri 的编译结果能够下载到:

http://diamond.kolibrios.org/prg/dosbox.7z

但是,源代码不能得到。难道说源代码是用 dosbox 官方网站上的,然后只是用 kolibri 的编译器编译一下就行了?

谁知道内幕的,说说看。


作者: roytam1    时间: 2014-12-1 23:11
不点 发表于 2014-12-1 22:01
dosbox for kolibri 的编译结果能够下载到:

http://diamond.kolibrios.org/prg/dosbox.7z

http://board.kolibrios.org/viewt ... t=671&start=120
問問看?
作者: sunsea    时间: 2014-12-2 07:11
不点 发表于 2014-12-1 22:01
dosbox for kolibri 的编译结果能够下载到:

http://diamond.kolibrios.org/prg/dosbox.7z

我不知道,不过我看见编译器里有这么三条,
Environments Visual C++ 6, C++ from Visual Studio .NET/2005

Compilers GCC, G++

Compiler Borland C++
那就应该是了
作者: gkos    时间: 2014-12-2 08:10
一连测试了 2台电脑
一台家用 微星785GTM-45  能进桌面,鼠标正常,游戏也正常
办公   华硕b75  进桌面,鼠标正常,游戏也ok  关机都正常,
就是英文水平很菜,要是有汉化版,就好了!
另外看到大家都下载不到,
上传一个 放入不点大师改好的,11.30号的版本
kolibri.zip (1.17 MB, 下载次数: 21)
作者: 不点    时间: 2014-12-2 15:34
本帖最后由 不点 于 2014-12-2 15:35 编辑

做个好汉真是好,一个好汉三个帮。能得到大家的支持,不至于孤苦伶仃的,这味道确实比较正。

话说又考虑了一两天,刚开始时有点懵,不知道究竟是怎么个整合法,权衡了很多,思路比较乱。

现在终于又有点眉目了。四个字:稳扎稳打。细说如下。

目前已经做到了,让 kolibri 运行在扩展内存顶端的 64M 空间上。kolibri 与别的操作系统可以共存。

仔细想想,现在的 grub4dos 也是一个操作系统(只不过功能简单罢了)。那么,根据刚才的结论,kolibri 就可以与 grub4dos 共存。

虽然这一点看起来很平凡,但想到它却不平凡。也许是岁数大了,脑筋开始退化,所以就浪费了两天的苦苦思索,才得到这个真理。真理没那么神秘,它也许是很显然的东西。即使很显然,也不一定能够认识到。人类的认知能力还很欠缺。用一个计算器很快就可以算出乘法的结果,但人却需要花费很长时间。就是说,对于电脑很显然的东西,对与人来说,却不显然了,需要慢慢计算才行。

言归正传。我们可以先让 kolibri 与 grub4dos 互相能够启动,进退自如,这样,我们就从 grub4dos 无缝过渡到 kolibri。kolibri 与 grub4dos 进退自如 —— 这一点肯定可以做到。我们早有经验,grub4dos 和 DOS 互相可以进退自如,况且 DOS 还破坏了中断向量表,而且 DOS 与 grub4dos 都在争用常规内存。kolibri 与 grub4dos 不存在内存重叠,经过改造后的 kolibri 不使用低端内存,而且 kolibri 也不破坏中断向量表,所以从原则上讲,应该更容易实现进退自如。

思路理清了,一步一个脚印,这就是稳扎稳打。

从 grub4dos 向 kolibri 的过渡,就好像从 DOS 向 Windows 的过渡。Win98 是最好的一个操作系统,兼具 DOS 和 Windows 的优点。后来的 Windows 强行割去 DOS,这样其实伤害了 DOS 上的开发者和用户。

如上所述,我们这样做,其结果是,保持了兼容性,让现有的 grub4dos 程序都能正常运行。这就尊重了现有的 grub4dos 应用成果,因此也应该会得到广泛的支持。

就是说,目前的 grub4dos 这一块,永远不割掉。用户想用什么,自己决定。如此一来,我们就可以静下心来,慢慢移植 grub4dos 的功能到 kolibri。就是说,kolibri 桌面环境刚开始时只是个空架子,没有各种 grub4dos 的功能。但后续的开发可以慢慢地添加那些必要的功能。

好了,这就是整体设想,和盘托出了。


作者: 不点    时间: 2014-12-3 08:14
本帖最后由 不点 于 2014-12-3 08:16 编辑

风云突变,有人报告 kolibri 无法驱动键盘鼠标,导致桌面无法操作。这个情况在几年前我也碰到过,没想到过了这么多年,仍然没有解决。这说明 kolibri 在驱动开发上是软肋。

集成 kolibri 的工作只能暂时搁置下来。一直等到有人写好键盘鼠标驱动才行。

未来大概只有 Linux 可以集成了,这就把我们逼到了这一条路上了。

Linux 不是不可能集成,而是工作量太大,难度也相当高。

所以,目前就暂时不考虑了。

但是,继续考虑将 grub4dos 自身挪到扩展内存顶部运行的问题。这应该是可以实现的。

作者: 2011yaya2007777    时间: 2014-12-3 09:18
DELL 笔记本, usb 鼠标有时启动后可以使用,有时不能使用。但 ps2 鼠标均正常。
桌面图标不能使用键盘选定和执行。进入命令行,则键盘正常。
作者: 不点    时间: 2014-12-3 10:53
2011yaya2007777 发表于 2014-12-3 09:18
DELL 笔记本, usb 鼠标有时启动后可以使用,有时不能使用。但 ps2 鼠标均正常。
桌面图标不能使用键盘选 ...

如果不支持 USB 鼠标,这不行啊。现在 USB 鼠标很多,PS2 鼠标越来越少了。
作者: Cryyy    时间: 2014-12-3 12:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: gkos    时间: 2014-12-3 14:00
不点大师,不要放弃啊
毕竟成功的多
如果99%都成功,1%不成功,为了那一小部分而放弃所有吗
dell制造不兼容,是自己作死,
至少身边的用del非常少了,这就是趋势!
作者: 不点    时间: 2014-12-3 14:13
gkos 发表于 2014-12-3 14:00
不点大师,不要放弃啊
毕竟成功的多
如果99%都成功,1%不成功,为了那一小部分而放弃所有吗

谢谢您的建议。

光是 dell 作恶,其实也不是太要紧的。问题是,只要有 dell 的不兼容存在,就会有其他类似的机器存在。现在不容易估计出究竟有多大的比例。

更要命的是,kolibri 多年来在驱动方面没有进步,这一点比起 Linux 可差远了。我们初步的评估是看键盘鼠标显卡的支持,这是基本的,不可以存在失败。

如果这一步通过了,那么下一步是第二阶段的评估,那就要看硬盘的支持情况了。目前这个 kolibri 不支持我的笔记本硬盘,可以说是很糟糕的。

这些事情暴露出来的是 kolibri 的问题,不是 DELL 的问题。


作者: sunsea    时间: 2014-12-3 16:41
不点 发表于 2014-12-3 08:14
风云突变,有人报告 kolibri 无法驱动键盘鼠标,导致桌面无法操作。这个情况在几年前我也碰到过,没想到过 ...

不用集成操作系统,移植脱离bios的能力和把自己弄进拓展内存的能力就行,我手上有msahci(微软的通用AHCI驱动)和atapi(微软的通用IDE驱动)源码可以参考
作者: 不点    时间: 2014-12-8 11:15
本帖最后由 不点 于 2014-12-8 16:14 编辑

最近这几天又在反复思考这个问题。

先是思考究竟该不该继续整合 kolibri 的问题。连键盘鼠标这种基本的操作都不能有保证,实在是严重问题。进一步还有硬盘、USB 存贮设备、网卡、声卡等等,一系列的问题。当然我们重点只关心硬盘、U 盘、网卡等。

这些东西本来都不该是问题,因为它们是硬件,而硬件是基本的,本来是不可以驱动不了的。但残酷的现实却是,恰恰在不该出问题的地方出问题了。这不是埋怨 kolibri 的开发者,而是归咎于 x86 这个严重恶化的生态。

Linux 可以应付大多数这些复杂的情况,但是,那得增加多大的驱动代码量!天文数字,全都是为了应付恶意的硬件制造商。像 kolibri 这样小体积的操作系统软件,根本不可能做好硬件驱动这一块的工作。

假定硬件驱动搞不成,那整个工作也就瞎了,做了也没用。硬件规范的混乱,以及故意破坏规范的现象很普遍,让 x86 的驱动异常复杂,不可能有小体积的驱动。开发者们可能被迫远离 x86 了,除了完全依赖微软的那些开发者以外。

不考虑那些有问题的电脑,只支持 90% 的电脑,这样行不行?不行。grub4dos 的一个关键特色就是兼容性好,确切地说,是 BIOS 兼容性好。至于说功能,倒不是特别根本性的。假如丧失了我们原本就有的兼容性,那根本不可接受。

另一方面,整合 Linux 的工作量太大,而且 Linux 庞大的驱动也是受不了的。更糟糕的是,Linux 也不能 100% 地应付所有的情况,失败也很多,这就是 Linux 为什么不能被广泛接受的原因之一。当然归根结底是硬件制造商的打压了。

所以,这个工作也就画个休止符吧,我觉得没什么可说的。今后把精力用在 ARM 系列上。

后来又思考把 grub4dos 自身放在高端内存运行的问题。由于硬件驱动做不好,我们只好还用 BIOS。但是,BIOS 是需要实模式的,这就需要常规内存。

我研究了 vm86 模式,了解到,vm86 模式可以通过分页,让虚拟地址 0 映射到物理地址的高端。但是,int13 磁盘驱动,内部可能使用 DMA,而这 DMA 是使用物理地址的,这就瞎火了。就是说,迫使 vm86 模式使用物理地址 0M 处的 1M 空间,这与实模式又完全一样了。所以,切换到 vm86 模式也不能解决所有的问题,而且还增加了很复杂的 DMA 问题。

那么可以粗略得出结论:如果把 grub4dos 的内核移动到内存顶端,那么需要在常规内存中保留一部分空间用来调用实模式的 BIOS。


现在情况已经明朗了:占用常规内存最多的,就是 int13 了。grub4dos 为 int13 进行缓冲,缓冲区有 64K 之大。另外自动探测几何参数,也要花费 64K 的空间。这么大的空间占用,不可能放在常规内存空间的顶部,即 int13 处理程序的代码中。

当 grub4dos 自身被 int15 保护起来之后,grub4dos 如果不接管控制,而是启动了别的操作系统,那么,grub4dos 就可以完全不再占用实模式内存(常规内存顶部的 int13 处理程序所占用的 12K 空间,是被 int15 保护的,不能算是占用了实模式内存)。

当 grub4dos 处于活动状态时,它需要额外占用常规内存,作为磁盘缓冲,或者探测几何参数之用。它在毁掉常规内存之前,首先把常规内存保存在扩展内存顶部的内核空间中,而在准备切换到操作系统中的时候,又可以恢复原先的常规内存内容。其实,底端 32M 空间都可以如此处理。

就是说,grub4dos 与操作系统争用底端内存的情况不可避免,解决办法是保存和恢复,这样就可以避免冲突。

然而这样的话,不可能在 grub4dos 运行的同时,也集成一个 DOS 内核,因为 DOS 内核也在使用常规内存。

看来最后还是归结到一点上,即,必须有保护模式的驱动才行。只有这样,才真正可以腾出实模式内存。

因此,这就不值得去做了。


作者: sunsea    时间: 2014-12-8 17:38
不点 发表于 2014-12-8 11:15
最近这几天又在反复思考这个问题。

先是思考究竟该不该继续整合 kolibri 的问题。连键盘鼠标这种基本的 ...


找到了微软自己的家当:微软自己公布的通用AHCI驱动、IDE小端口驱动、通用光盘、磁盘驱动代码,大部分是Win7带的

希望有用,或者对别的开发者有用
谢谢

过会再挖掘挖掘微软泄露的2K和NT4代码试试

storage.7z

567.26 KB, 下载次数: 24, 下载积分: 无忧币 -2


作者: qq88580232    时间: 2014-12-8 23:28
看看。。。。




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3