Chinaunix

标题: 自己写操作系统一书看后的问题 [打印本页]

作者: 中国大表哥    时间: 2007-03-27 14:22
标题: 自己写操作系统一书看后的问题
看到第5章。我想知道。第一章写的HELLOWORLD后(引导程序)我怎么把他写到虚拟硬盘上让他引导,而又不破坏我的虚拟系统的引导程序????
作者: mq110    时间: 2007-03-27 14:32
我说下我的方式,我利用Bios的中断来实现的 从软盘镜像写入硬盘.
作者: 中国大表哥    时间: 2007-03-27 14:59
谢谢.还有个问题。从软盘镜像过去的话,可能会覆盖硬盘中的数据。你是怎么解决的

[ 本帖最后由 中国大表哥 于 2007-3-27 15:01 编辑 ]
作者: mq110    时间: 2007-03-27 15:19
原帖由 中国大表哥 于 2007-3-27 14:59 发表
谢谢.还有个问题。从软盘镜像过去的话,可能会覆盖硬盘中的数据。你是怎么解决的



新的虚拟机映像, 我的办法是通过软盘引导,然后将软盘扇区中的内容写到硬盘上.
作者: 中国大表哥    时间: 2007-03-27 15:21
原帖由 mq110 于 2007-3-27 15:19 发表



新的虚拟机映像, 我的办法是通过软盘引导,然后将软盘扇区中的内容写到硬盘上.

这样存在着一个问题。至少对我来说,我是在WINDOWS平台下开发的,如果直接影像在原来的硬盘上,那么我就不能用GCC了〔原来的系统被破坏了)。如果影像在新的硬盘上我还是不能用GCC(新系统上还没有GCC呢)。你是怎么解决的》???
作者: mq110    时间: 2007-03-27 15:23
为什么不能用gcc? 你所做的工作,就是生成一个纯2进制的映像文件,然后让虚拟机跑起来.
这个2进制映像文件在那个平台上编写都无所谓啦.
作者: 中国大表哥    时间: 2007-03-27 15:27
原帖由 mq110 于 2007-3-27 15:23 发表
为什么不能用gcc? 你所做的工作,就是生成一个纯2进制的映像文件,然后让虚拟机跑起来.
这个2进制映像文件在那个平台上编写都无所谓啦.

你没有明白我的意思。我知道*.bin在所有的平台下都是无所谓的。不错,但是如果我不用软盘启动,(把*.bin的影像文件)改用硬盘启动系统,就存在一个问题。他会覆盖我的硬盘中的数据?是不是???
作者: mq110    时间: 2007-03-27 15:29
原帖由 中国大表哥 于 2007-3-27 15:27 发表

你没有明白我的意思。我知道*.bin在所有的平台下都是无所谓的。不错,但是如果我不用软盘启动,(把*.bin的影像文件)改用硬盘启动系统,就存在一个问题。他会覆盖我的硬盘中的数据?是不是???


恩,如果你坚持这么做的话,当然会覆盖掉.
你不用VMWARE吗? 重新建立一个虚拟机 就解决了嘛.
作者: 中国大表哥    时间: 2007-03-27 15:32
原帖由 mq110 于 2007-3-27 15:29 发表


恩,如果你坚持这么做的话,当然会覆盖掉.
你不用VMWARE吗? 重新建立一个虚拟机 就解决了嘛.

重新建立一个新的虚拟机又有一个问题!!!!

就是里面只有引导程序!那么我怎么用GCC+NASM。它书上直接就跳过讲保护模式了。。。。。赵博的书也没有讲,而且我觉得赵博的书试验章节写的过于简单。当然,前面的本好书
作者: mq110    时间: 2007-03-27 15:34
原帖由 中国大表哥 于 2007-3-27 15:32 发表

重新建立一个新的虚拟机又有一个问题!!!!

就是里面只有引导程序!那么我怎么用GCC+NASM。它书上直接就跳过讲保护模式了。。。。。赵博的书也没有讲,而且我觉得赵博的书试验章节写的过于简单。当然,前面 ...


>>就是里面只有引导程序!那么我怎么用GCC+NASM

继续用你以前的虚拟机 或者 环境来开发嘛..
作者: 中国大表哥    时间: 2007-03-27 15:34
原帖由 mq110 于 2007-3-27 15:29 发表


恩,如果你坚持这么做的话,当然会覆盖掉.
你不用VMWARE吗? 重新建立一个虚拟机 就解决了嘛.

我用的是VPC。安装了RDHAT的一个版本。如果再作个虚拟机就存在这样的一个问题我的RDHAT的虚拟机不能装载新的虚拟机,因为不识别里面的文件结构。新的虚拟机不能写,因为没有GCC,VI,EMACS和NASM等等
作者: mq110    时间: 2007-03-27 15:38
>>新的虚拟机不能写,因为没有GCC,VI,EMACS和NASM等

新的虚拟机不能写 是什么意思?
作者: flw    时间: 2007-03-27 15:39
原帖由 mq110 于 2007-3-27 15:38 发表
>>新的虚拟机不能写,因为没有GCC,VI,EMACS和NASM等

新的虚拟机不能写 是什么意思?

就是新的虚拟机里不能写程序嘛!因为新的虚拟机里没有 gcc vi emacs(没想到会的还挺多)还有 nasm 等等。
作者: mq110    时间: 2007-03-27 15:40
原帖由 flw 于 2007-3-27 15:39 发表

就是新的虚拟机里不能写程序嘛!因为新的虚拟机里没有 gcc vi emacs(没想到会的还挺多)还有 nasm 等等。


这个 ...要达到这种程度,就要把操作系统写的相当好了..
相信楼主还没有这个实力,达到能够整合众多GNU软件的地步,到你自己写的操作系统.

[ 本帖最后由 mq110 于 2007-3-27 15:42 编辑 ]
作者: flw    时间: 2007-03-27 15:41
原帖由 mq110 于 2007-3-27 15:40 发表

这个 ...要达到这种程度,就要把操作系统写的相当好了..
相信楼主还没有这个实力,达到能够整合众多GNU软件的地步.到你的操作系统.

所以说这个事情就没法弄了嘛!
都没法开始学习,怎么进步?
你不会就靠边站,别妨碍人家问问题。
作者: 中国大表哥    时间: 2007-03-27 15:43
原帖由 mq110 于 2007-3-27 15:40 发表


这个 ...要达到这种程度,就要把操作系统写的相当好了..
相信楼主还没有这个实力,达到能够整合众多GNU软件的地步,到你自己写的操作系统.

说了半天又回来了。呵呵!!!
作者: net_robber    时间: 2007-03-27 15:44
原帖由 flw 于 2007-3-27 15:41 发表

所以说这个事情就没法弄了嘛!
都没法开始学习,怎么进步?
你不会就靠边站,别妨碍人家问问题。

狂晕,呵呵

能回答楼主问题的#,确实不多了
作者: mq110    时间: 2007-03-27 15:44
不知道 楼主到底想 要什么了...
作者: ayw215    时间: 2007-03-27 15:48
要是你只想测试hello os的那么一个小的引导
可以先把硬盘引导扇区复制到一个隐藏扇区,再写入你的小引导,最后跳回去

这个就更麻烦了,呵呵~~
作者: 中国大表哥    时间: 2007-03-27 15:49
原帖由 mq110 于 2007-3-27 15:44 发表
不知道 楼主到底想 要什么了...

写个能运行的OS。GCC+NASM编写的菜鸟系统,现在GCC+NASM无法使用了!
作者: mq110    时间: 2007-03-27 15:49
楼主只是想测试一下写好的 bootloader?
作者: 中国大表哥    时间: 2007-03-27 15:50
原帖由 mq110 于 2007-3-27 15:49 发表
楼主只是想测试一下写好的 bootloader?

不仅仅这样,还要继续往下写。
作者: snow888    时间: 2007-03-27 15:52
原帖由 中国大表哥 于 2007-3-27 15:49 发表

写个能运行的OS。GCC+NASM编写的菜鸟系统,现在GCC+NASM无法使用了!


如果你真的要做到这一点,那最好是看 Linux 或者是 FreeBSD 的源码。

我明白你的意思,你希望做成一个基本的系统,同时在这个系统上提供一个可供软件开发的环境,然后你就准备直接在这个你自己构建的系统上开发软件,并最终形成自己的系统软件包,达到可实用化的程度。


我想说的是,这条路很长,而且不仅仅是 gcc 、nasm ,你还需要编辑器,如: vim ,等,当然,没有想到的可能还有很多。
作者: mq110    时间: 2007-03-27 15:53
原帖由 中国大表哥 于 2007-3-27 15:50 发表

不仅仅这样,还要继续往下写。


那就继续吧.
作者: 中国大表哥    时间: 2007-03-27 15:54
原帖由 mq110 于 2007-3-27 15:53 发表


那就继续吧.

第一步,最难走!!!我钢材说了,如果在新硬盘下写,那么就没有编程的工具了,如果在老硬盘上写就没有系统了。麻烦!!!!!

[ 本帖最后由 中国大表哥 于 2007-3-27 15:57 编辑 ]
作者: mq110    时间: 2007-03-27 15:57
原帖由 中国大表哥 于 2007-3-27 15:54 发表

第一步,最难走!!!


实模式->保护模式 这步还没成功呢吧? 调度还没写呢,内存管理还没写呢,系统调用还没有呢,文件系统还没写呢 等等等.
还谈不上整合别人的gcc,vim.一步一步来吧.

如果你第一步还没迈出去? 是那个bootloader还没运行成功吧?
作者: net_robber    时间: 2007-03-27 15:58
原帖由 中国大表哥 于 2007-3-27 15:54 发表

第一步,最难走!!!我钢材说了,如果在新硬盘下写,那么就没有编程的工具了,如果在老硬盘上写就没有系统了。麻烦!!!!!

支持一下楼主。

虽然暂时还没有实力研究这个
作者: mq110    时间: 2007-03-27 16:04
原帖由 中国大表哥 于 2007-3-27 15:54 发表

第一步,最难走!!!我钢材说了,如果在新硬盘下写,那么就没有编程的工具了,如果在老硬盘上写就没有系统了。麻烦!!!!!


写在你所所的新硬盘上嘛. 老硬盘不是还在嘛? 用你所说的老硬盘继续开发嘛..


我发现我从一开始就没理解楼主的意思.
作者: 中国大表哥    时间: 2007-03-27 16:07
原帖由 mq110 于 2007-3-27 16:04 发表


写在你所所的新硬盘上嘛. 老硬盘不是还在嘛? 用你所说的老硬盘继续开发嘛..


我发现我从一开始就没理解楼主的意思.

不错,你现在理解的还是不对

我没有要整合GCC,EMACS和VI等等。

我所说的是,我在新的硬盘上开发内存保护模式,进程等等。怎么开始????没有编程工具

不会还没理解吧。。。。。

[ 本帖最后由 中国大表哥 于 2007-3-27 16:08 编辑 ]
作者: mq110    时间: 2007-03-27 16:09
原帖由 中国大表哥 于 2007-3-27 16:07 发表

不错,你现在理解的还是不对

我没有要整合GCC,EMACS和VI等等。

我所说的是,我在新的硬盘上开发内存保护模式,进程等等。怎么开始????没有编程工具

不会还没理解吧。。。。。


你的新硬盘上啥也没有啊,用老硬盘开发嘛.难道你要直接手写2进制?
作者: 中国大表哥    时间: 2007-03-27 16:11
原帖由 mq110 于 2007-3-27 16:09 发表


你的新硬盘上啥也没有啊,用老硬盘开发嘛.难道你要直接手写2进制?

我问你怎么开发呢。大哥!!!!
老硬盘写的话不是要把硬盘上的内容覆盖掉了吗????
作者: mq110    时间: 2007-03-27 16:12
原帖由 中国大表哥 于 2007-3-27 16:11 发表

我问你怎么开发呢。大哥!!!!
老硬盘写的话不是要把硬盘上的内容覆盖掉了吗????


你没新建虚拟机嘛???

两个虚拟机嘛..
作者: 中国大表哥    时间: 2007-03-27 16:13
原帖由 mq110 于 2007-3-27 16:12 发表


你没新建虚拟机嘛???

两个虚拟机嘛..

再新建个虚拟机,老的不能访问他啊。没有文件系统
作者: 中国大表哥    时间: 2007-03-27 16:14
VPC好像只能挂软盘和硬盘
作者: mq110    时间: 2007-03-27 16:14
原帖由 中国大表哥 于 2007-3-27 16:13 发表

再新建个虚拟机,老的不能访问他啊。没有文件系统


为啥要访问他啊??

一切东西都在老的虚拟机里来写嘛.
作者: 中国大表哥    时间: 2007-03-27 16:15
原帖由 mq110 于 2007-3-27 16:14 发表


为啥要访问他啊??

一切东西都在老的虚拟机里来写嘛.

今天网卡用光了。上了几小时了,学校啊。抢钱啊!!!!
作者: zllfdd    时间: 2007-03-27 18:42
在机子上写好,放到虚拟机上运行,
怎么放上去,自己想办法吧

我很不明白楼主的想法,你写个操作系统,想要运行当然不会把它放在现在的机子上运行,
找个新的机子运行一下就行了。
开发还在原来的机子上。
一个专门开发,一个专门做实验。

这和文件系统有什么关系?你想要什么文件系统,分个区格式化一下不就行了?
你要是什么专用的文件系统,那你最好自己写好格式化的工具。

[ 本帖最后由 zllfdd 于 2007-3-27 18:46 编辑 ]
作者: langue    时间: 2007-03-27 18:56
http://www.beanos.org/
作者: 中国大表哥    时间: 2007-03-27 20:31
原帖由 langue 于 2007-3-27 18:56 发表
http://www.beanos.org/

实际上我是知道怎么写上去的。但是如果那样写的话工作量太大了。我晕倒。不过还是谢谢了!
作者: jameszxj    时间: 2007-03-27 20:44
楼主钻死胡同里了
仔细考虑一下mq110的回复吧
作者: 中国大表哥    时间: 2007-03-27 20:46
原帖由 jameszxj 于 2007-3-27 20:44 发表
楼主钻死胡同里了
仔细考虑一下mq110的回复吧

我就是不理解。。。。。。
作者: MMMIX    时间: 2007-03-27 22:20
这个帖子也锁了吧, 再下去也没什么意思了...
作者: zyxxyz0001    时间: 2007-03-27 23:14
原帖由 中国大表哥 于 2007-3-27 20:46 发表

我就是不理解。。。。。。

哎,还不明白吗?在老系统上开发,在新系统上测试。。。
刚开始的一切都要在老系统上开发的,
新系统仅供测试。懂了吧
--楼主一开始就想跑,先要学会爬 :)
-------------------------------------------------------
今天看到了楼主的其它帖子,算了,当我没说。。。

[ 本帖最后由 zyxxyz0001 于 2007-3-28 09:30 编辑 ]




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2