下载 >  操作系统 >  Linux > windows下可编译linux 用insight+bochs源码级调试

windows下可编译linux 用insight+bochs源码级调试 评分:

编译过程: 1). 解压后默认的文件夹位置是在D:\Linux-0.11,如果你不是将文件解压到该目录下, 你要修改MinGW32目录下的MinGW32.bat文件,将里面的PATH指向MinGW32的bin目录. 2). 打开Linux-0.11目录,双击MinGW32.bat快捷方式,打开控制台. 3). make 一下,生成1.44M的Boot.img软盘镜像,要清除编译结果请"make clean" 4). 如果安装了bochs,直接双击bochsrc.bxrc即可运行Linux-0.11了. 5). 也可用其它虚拟机加载Boot.img后运行,如果出现Kernel panic,请把虚拟机里的硬盘删了 6). 在出现Insert root floppy and press ENTER以后,将rootimage-0.11.img载入虚拟软驱,回车 这就是能在windows环境下编译的Linux 0.11了,不是在Cygwin,也不是在虚拟机里,而是使用MinGW. 下面是在Windows下编译Linux 0.11会遇到的问题和对原文件作的修改: 1.赵炯博士已经将汇编程序中引用的C变量(包括嵌入汇编的C变量)的下划线去掉了,但MinGW的gcc可能是为了与其它Windows下的编译器保持兼容,并不能识别这些不带下划线的C变量,因而还得把原先已经在汇编程序中去掉下划线的C变量加上下划线,同时也要把被C程序引用的汇编程序中的变量加上下划线. 2.MinGW中不带as86编译器,因而把boot目录下原先用as86编译的bootsect.s和setup.s两个程序修改成能用nasm编译的程序.并且更名为bootsect.asm和setup.asm. 3.在Makefile作的主要修改: 在LDFLAGS中加了--image-base 0x0000 将elf_i386改成i386pe 将cd 与 make 之间的;改成&,如cd kernel ; make 改成cd kernel & make MinGW中没有sync这个程序,可以把它注释掉,更简单的办法是写一个sync.c,这个sync.c只包含一个空的main函数,编译成sync.exe 因为类似的原因,make dep会出错 4.生成的system文件是PE格式的(PE是Portable Executable的简称),这是windows下的可执行文件的格式,显然是不能直接执行的,必须加以转化.我实现了通过两种方式加以转化. 1)写一个程序Trans.cpp将system.exe里的代码和数据从PE文件里解析出来,生成一个system.bin文件,这个文件是能被setup模块直接加载的.我已经将这个程序放在了Linux-0.11的tools目录下,要微软的编译器编译. 2)自己写一个PE Loader,这种方式比较麻烦,但是想想自己也能做一个PE Loader,还是满有成就感的,尽管这是一个最简单的Loader.代码是加在Linux-0.11-With-PE-Loader\boot目录下的setup.asm文件里,里面有详细的注释. 5.对tools下的build.c作了修改,使其能生成可引导的1.44M的软盘镜像文件Boot.img 6.在Link的过程中,init目录下的main.c会出现以下错误: boot/head.o(.text+0x540c):fake: undefined reference to `_main' init/main.o(.text+0x16f):main.c: undefined reference to `_alloca' init/main.o(.text+0x174):main.c: undefined reference to `__main' make: *** [tools/system.exe] Error 1 第一个和最后一个错误还好理解,但中间那个错误那就莫明其妙了,因为Linux 0.11根本没有这个函数,在gcc的编译选项里也有-nostdinc .有一个解释是main函数不是一个普通的函数,MinGW gcc会对它作特殊的处理.解决的办法其实也很简单,把main.c下面的main函数改名为_main,或者是干脆把它改成另外一个函数,就改成start吧.记得把head.s里的_main也改了. 在最后,要感谢《自己动手写操作系统》的作者于渊,其实我也是先将原先只能在Linux下编译的书里源代码用MinGW移植到Windows下编译的过程中才试着在Windows下编译Linux 0.11源代码的,有了在Windows下编译Linux 0.11源代码的经验,移植高版本的源代码,像0.12,0.95,0.96等等版本应该不会有太大的麻烦了。 也要感谢Linux内核完全注释的作者赵炯博士,是他拉接了操作系统与操作系统爱好者的距离. 最后,我也非常想和操作系统爱好者们共同交流心得体会,也希望能多认识一些朋友. 我的网名:flyfish 我的QQ:785606288 E-mail:I2CBus@126.com 另外,要转载请保持本文件的完整性,请尊重别人的劳动果实. 修改日志: 08/3/29 修改了一下Makefile,旧的Makefile在某些文件更新后还会重新编译。 修改了Trans.cpp中的一个dug,该dug在translate MinGW gcc编译的程序时可能会出错。用MinGW gcc 编译的程序的VirtualAddress的形式可能是0xFFC1000这样的形式,其实0x1000才是它的VirtualAddress 08/4/2 修改了下MinGW32.bat,现在已经不用重设路径了。 08/4/4 Trans.cpp还是有错,如果VirtualAddress>0xffff,那么生成的system.bin就错了,bochs调试时会一直重启。 权宜之计,把0xffff再改成0x3ffff,这样VirtualAddress就不能大于0x3ffff,不知谁有更好的解决方法, 08/4/4 实现了gdb+bochs源码级调试linux 0.11 08/4/6 添加了insight,可以在GUI界面里源码调试内核了
...展开详情收缩
2013-11-13 上传大小:10.9MB
分享
收藏 (2) 举报

评论 共2条

suhetao 非常不错,感谢楼主分享。
2014-04-07
回复
stormier 很好,就是不知道,Kernel panic怎么解决
2013-12-22
回复
windows下用insight+bochs源码调试linux内核第二部分(共二部分)

在windows下用insight+bochs源码级调试linux内核第二部分(共二部分),不需再下载其它软件,压缩包里提供全部调试所需的程序,总共仅10兆

立即下载
windows下用insight+bochs源码调试linux内核第一部分(共两部分)

在windows下用insight+bochs源码级调试linux内核,不需再下载其它软件,压缩包里提供全部调试所需的程序,总共仅10兆

立即下载
用Source Insight打开linux内核源代码

用Source Insight打开linux内核源代码.

立即下载
insight-6.8-1 gdb windows 可视化 调试

insight-6.8-1 gdb windows 可视化 调试,可以用来远程调试 linux 程序,使用起来非常方便

立即下载
Linux Insight配置GDB调试U-BOOT.doc

Linux下使用开源工具Openodc Insight及使用JTAG仿真器来源码级调试u-boot!

立即下载
WRK1.2源码编译、加载

WRK 是微软于 2006 年针对教育和学术界开放的 Windows 内核的部分源码, WRK(Windows Research Kernel)也就是 Windows 研究内核。 压缩包中包含了相关的文档,详细介绍了 WRK 的编译并加载该内核模块的过程。

立即下载
OpenCPN编译方法与步骤

我在这里只给大家一个外网链接,看懂英语是搞技术的基本,其他我就不多说了,我也是网上找了半天才找到,3分页对得起我的劳动,呵呵。

立即下载
Win7下编译openjdk8源代码 完整版本 原创

Win7下编译openjdk8源代码 完整版本 原创,希望对于想了解jvm底层的同仁有帮助。好的话,请点个赞。哈哈。

立即下载
windows下hadoop本地测试需要修改的源码

将两个类org.apache.hadoop.io.nativeio.NativeIO.java,org.apache.hadoop.mapred.YARNRunner.java 放到工程的src下,两个类的package不修改,否则覆盖不掉原来的hadoop的那两个类

立即下载
Windows高级调试[书+源码+符号文件]完整版

Windows高级调试[书+源码+符号文件]完整版

立即下载
使用qemu进行内核源码调试

使用qemu虚拟机环境实现linux内核源码级的调试

立即下载
\ucos源码windows调试方法

\ucos源码windows下调试方法。 \ucos源码windows下调试方法

立即下载
webrtc+VS2017完整工程及编译结果

webrtc源码及编译结果(百度云连接),可直接使用,亦可自行编译调试,具体过程可参考https://blog.csdn.net/qq_38303267/article/details/88664506,(ps:博客末尾同样有百度云链接(与此相同))

立即下载
ffmpeg源码windows编译的工具打包

ffmpeg源码windows上编译的工具打包,有些工具比较难找,因此在此打包处理

立即下载
Snort2.9源码在win7下编译调试配置

本文档包含Snort2.9源码在win7环境下编译调试全过程,主要是对网上一些资料的总结

立即下载
蓝牙调试助手

蓝牙调试助手 通信 PC电脑端 串口调试 bluetooth socket

立即下载
windows下的redis源码,vs2010版

https://github.com/MSOpenTech/redis就是这个的,不过这里下下来的不能用,我自己搞了好久才搞了一个可以用的,主要是用里面的hiredis; 你也可以自己做一个:http://www.cnblogs.com/sixbeauty/p/3954199.html

立即下载
vscode 远程调试linux c++

在windows 上用vscode(v1.12.2)远程调试linux c++ 程序

立即下载
VS2010的openssl源码编译方法

相信很多人在使用到openssl的编译时会遇到各种各样的问题,本文是本人亲身经历的openssl的编译过程,其中遇到的问题在网络上找了很久才找到解决方案。现将其记录下来进行分享,希望对需要编译openssl的朋友有所帮助,少走一些弯路。

立即下载
virtualKD源码

virtualKD源码,实现快速调试windows系统内核

立即下载

热点文章

img

spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
点击完成任务获取下载码
输入下载码
为了良好体验,不建议使用迅雷下载
img

windows下可编译linux 用insight+bochs源码级调试

会员到期时间: 剩余下载个数: 剩余C币: 剩余积分:0
为了良好体验,不建议使用迅雷下载
VIP下载
您今日下载次数已达上限(为了良好下载体验及使用,每位用户24小时之内最多可下载20个资源)

积分不足!

资源所需积分/C币 当前拥有积分
您可以选择
开通VIP
4000万
程序员的必选
600万
绿色安全资源
现在开通
立省522元
或者
购买C币兑换积分 C币抽奖
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
为了良好体验,不建议使用迅雷下载
确认下载
img

资源所需积分/C币 当前拥有积分 当前拥有C币
3 0 0
为了良好体验,不建议使用迅雷下载
VIP和C币套餐优惠
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
确认下载
下载
您还未下载过该资源
无法举报自己的资源

兑换成功

你当前的下载分为234开始下载资源
你还不是VIP会员
开通VIP会员权限,免积分下载
立即开通

你下载资源过于频繁,请输入验证码

您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:webmaster@csdn.net!

举报

  • 举报人:
  • 被举报人:
  • *类型:
    • *投诉人姓名:
    • *投诉人联系方式:
    • *版权证明:
  • *详细原因: