打印

bochs在我的ubuntu上运行起来了。哈哈,可以玩X86下的裸奔了。

[复制链接]
楼主: keer_zu
手机看帖
扫描二维码
随时随地手机跟帖
21
sivolin| | 2015-2-13 16:04 | 只看该作者 回帖奖励 |倒序浏览
最近一直在看这个,想要仿照 linux 0.12 写一个内核,但是看了一些发现真的是挺困难的,刚好看到lz的帖子,过来水一下哈哈

使用特权

评论回复
22
keer_zu|  楼主 | 2015-2-13 16:13 | 只看该作者
sivolin 发表于 2015-2-13 16:04
最近一直在看这个,想要仿照 linux 0.12 写一个内核,但是看了一些发现真的是挺困难的,刚好看到lz的帖子, ...

bochs是个好工具。我一直想尝试能否用来运行更高版本linux内核,比如最新的。它的调试工具蛮好的。

使用特权

评论回复
23
sivolin| | 2015-2-13 16:56 | 只看该作者
keer_zu 发表于 2015-2-13 16:13
bochs是个好工具。我一直想尝试能否用来运行更高版本linux内核,比如最新的。它的调试工具蛮好的。 ...

确实,看了基本 有关写操作系统这方面的书,都是使用的bochs。 你是做什么的? 工作了么?

使用特权

评论回复
24
keer_zu|  楼主 | 2015-2-13 18:01 | 只看该作者
sivolin 发表于 2015-2-13 16:56
确实,看了基本 有关写操作系统这方面的书,都是使用的bochs。 你是做什么的? 工作了么? ...

现在做服务器开发,以前做过单片机,后来linux应用和驱动。工作十年有余了。哈哈

使用特权

评论回复
25
sivolin| | 2015-2-13 18:18 | 只看该作者
keer_zu 发表于 2015-2-13 18:01
现在做服务器开发,以前做过单片机,后来linux应用和驱动。工作十年有余了。哈哈 ...

喔喔,好厉害,我还在上学, 我有个问题,linux 0.11 内核中  head.s  这个文件是要被链接到system 镜像的头部的,但是如何才能保证它被链接到头部呢??如果只是  gcc head.o main.c  -o system    的话,应该不能保证它一定位于程序的头部吧??  另外,经过上述编译以后的system镜像,应该不是单纯的二进制文件,而是包含有文件头部的, 但是按照内核的要求,setup程序执行之后,会条转到 head.s的头部开始执行,如果在最终的system中额外含有一个文件头部的话,一旦setup执行完之后,就会去执行文件头部啊!!! 这明显有问题啊??

使用特权

评论回复
26
keer_zu|  楼主 | 2015-2-13 18:31 | 只看该作者
sivolin 发表于 2015-2-13 18:18
喔喔,好厉害,我还在上学, 我有个问题,linux 0.11 内核中  head.s  这个文件是要被链接到system 镜像 ...

很多细节我已经记不清楚了,你看过赵炯的那边书吗?镜像文件一定是二进制的,里面没有所谓头文件,一定是可执行的机器码指令和一些文本,如果感兴趣可以专门了解一下镜像文件的构成,或者自己用二进制工具(像Uedit查看一下)。从setup到head.s的跳转赵炯的书上应该有,因为二进制的镜像文件里面没有head.s文件了,也谈不上跳转到它的头部,这部分已经记不清楚了,很可能是个指针的跳转,像call指令或者jmp指令。

我的理解是:
1. 所生成的二进制lib文件里面的地址都是相对地址。
2. 连接生成的可执行文件里面的跳转就是绝对地址了。
3. 而镜像文件是针对特定介质的可执行文件,和存储方式和存储地址联系起来。


上面也是我的理解,不知道对不对。但是赵炯的书和他的讨论组里面这些问题应该都是他们考虑过的。

使用特权

评论回复
27
sivolin| | 2015-2-13 18:52 | 只看该作者
keer_zu 发表于 2015-2-13 18:31
很多细节我已经记不清楚了,你看过赵炯的那边书吗?镜像文件一定是二进制的,里面没有所谓头文件,一定是 ...

恩,我就在看这本书,刚才发现 其实 参考linux 0.12 内核 的 makefile 文件以及tools/build文件就能解决这个问题了,是我看书不够细致, 哈哈 。   还是要谢谢你了

使用特权

评论回复
28
keer_zu|  楼主 | 2015-2-13 20:53 | 只看该作者
sivolin 发表于 2015-2-13 18:52
恩,我就在看这本书,刚才发现 其实 参考linux 0.12 内核 的 makefile 文件以及tools/build文件就能解决 ...

现在的学生真幸福,我上学那会儿还不会C语言呢

使用特权

评论回复
29
keer_zu|  楼主 | 2015-2-13 21:10 | 只看该作者
@dirtwillfly @ayb_ice @dong_abc 玩儿过bochs没有?

使用特权

评论回复
30
dirtwillfly| | 2015-2-13 21:41 | 只看该作者
keer_zu 发表于 2015-2-13 21:10
@dirtwillfly @ayb_ice @dong_abc 玩儿过bochs没有?

没玩过。我对linux系统还在使用阶段:L

使用特权

评论回复
31
dong_abc| | 2015-2-13 22:11 | 只看该作者
本帖最后由 dong_abc 于 2015-2-13 22:12 编辑

bochs没玩过, 前年王会计就在嚷嚷嵌入式CPU上发行版的linux,但是底层IC厂商支持不给力呀,目前就树莓派,香蕉派几个平台可供选择。
其实现在的嵌入式处理器跑个发行版的ubuntu之类的完全没问题,交叉编译真是多此一举,只可惜linux被遗忘了,都去追android了,没劲~

使用特权

评论回复
32
sivolin| | 2015-2-14 09:11 | 只看该作者
keer_zu 发表于 2015-2-13 20:53
现在的学生真幸福,我上学那会儿还不会C语言呢

我也是上大学才开始接触c,现在有的初中生都开始学习编程了,等到他们上大学,估计一个个都是大神了

使用特权

评论回复
33
keer_zu|  楼主 | 2015-2-14 09:14 | 只看该作者
sivolin 发表于 2015-2-14 09:11
我也是上大学才开始接触c,现在有的初中生都开始学习编程了,等到他们上大学,估计一个个都是大神了 ...

我也听说了。

使用特权

评论回复
34
keer_zu|  楼主 | 2015-2-14 09:16 | 只看该作者
dong_abc 发表于 2015-2-13 22:11
bochs没玩过, 前年王会计就在嚷嚷嵌入式CPU上发行版的linux,但是底层IC厂商支持不给力呀,目前就树莓派 ...

其实android也是linux内核的

不是真正的实时系统也限制了linux的应用。

但就工程师而言,都是想通的

使用特权

评论回复
35
keer_zu|  楼主 | 2015-2-14 09:17 | 只看该作者
dirtwillfly 发表于 2015-2-13 21:41
没玩过。我对linux系统还在使用阶段

其实这个也局限于x86平台

是学习操作系统的好工具

我接触linux是从socket编程这样的应用程序开始的

使用特权

评论回复
36
ayb_ice| | 2015-3-2 11:39 | 只看该作者
keer_zu 发表于 2015-2-13 21:10
@dirtwillfly @ayb_ice @dong_abc 玩儿过bochs没有?

没有,以前还了解一下RTOS,现只玩MCU裸奔,

使用特权

评论回复
37
keer_zu|  楼主 | 2015-3-2 12:05 | 只看该作者
ayb_ice 发表于 2015-3-2 11:39
没有,以前还了解一下RTOS,现只玩MCU裸奔,

当初学ucos的时候,可是得到过你不少帮助啊。

使用特权

评论回复
38
ayb_ice| | 2015-3-2 13:31 | 只看该作者
keer_zu 发表于 2015-3-2 12:05
当初学ucos的时候,可是得到过你不少帮助啊。

是吗

你是不是以前在时机厂做过的,

使用特权

评论回复
39
keer_zu|  楼主 | 2015-3-2 13:50 | 只看该作者
ayb_ice 发表于 2015-3-2 13:31
是吗

你是不是以前在时机厂做过的,

什么是时机厂?

使用特权

评论回复
40
ayb_ice| | 2015-3-2 15:31 | 只看该作者
keer_zu 发表于 2015-3-2 13:50
什么是时机厂?

可能不是你吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则