谁知道在windows版本的bochs 下载下调试linux0.0.1的具体...

 |  |  | 
您所在的位置: &
> Bochs模拟运行Windows系统的方式
Bochs模拟运行Windows系统的方式
09:17:12  来源:互联网   次阅读
Bochs开源项目近日推出了Android平台的APK客户端,它能够让手机轻松运行Windows 95/98/XP,甚至是Linux系统。 用户安装过该APK后,继续下载SDL.zip文件,将其放入放到SD卡根目录,路径sdcard/SDL/*.*,然后将一个操作系统磁盘映像.img/.iso(win 95/98/XP)放到SDL文件夹中,并将它更名为"c.img",并从appdrawer运行Bochs,加载一段时间即可。
Bochs是一个x86硬件平台的开源模拟器。它可以模拟各种硬件的配置。Bochs模拟的是整个PC平台,包括I/O设备…
更新时间:  运行环境:Vista/winXP/win7/win8
共有2人发表了观点,请选择你的观点:
大家都在看
网友在8分钟点赞了
网友在22分钟点赞了
网友在36分钟点赞了
网友在3小时点赞了
网友在4小时点赞了汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(2024)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'Ubuntu 12.04安装Bochs 2.6.2, 调试linux 0.11 内核',
blogAbstract:'要下载的软件包:bochs-2.6.2linux-0.11-081030.tar.gz&linux-0.11-devel-060625.zip(hdc-0.11-new.img 文件系统)(hdc-0.11-new.img 只用这一个文件也可以时入linux 0.11系统,只需在配置bochs时稍做修改就可以,但是要调试源码的话,还是自己编译来得爽)安装bochs之前做一些准备工作sudo apt-get install build-essentialsudo apt-get install xorg-dev',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:6,
publishTime:7,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}2107人阅读
Linux(ubuntu)安装bochs
ubuntu下安装bochs
Ubuntu 10.04安装Bochs 2.4.5笔记
bochs的安装与使用
linux bochs的启动
本文介绍在SUSE Linux Enterprise Desktop系统下如何使用bochs调试内核linux-0.11版本
linux-0.11虽然是早期内核代码,代码不超过2万行,但却基本是现今内核代码的精简版本,麻雀虽小,五脏俱全.
阅读理解完整代码,可以对整个系统的运作过程有深刻理解.
一. 准备工作(以root用户执行):
下载调试工具bochs:
在下载.tar.gz的安装包,注意,不要下载rpm包,因为安装时需要加入gdb-stub功能,rpm包不带有这个功能,下载后执行:
tar&&zxvf&&bochs-2.3.5.tar.gz
cd&&bochs-2.3.5
./configure&&--enable-gdb-stub
如果出现X windows libraries were not found错,可以用SUSE YaST的 软件管理 搜索xorg,将xorg的基本安装包安装即可,如下图所示:
如果出现error: X11/extensions/Xrandr.h: No such file or directory就
sudo apt-get install xorg-dev
另外可能要安装g++,用SUSE YaST的 软件管理 搜索gcc安装即可
继续安装bochs
make&&install
好了,下载linux-0.11内核源码包,将源码包放在/root/kernel/:
mkdir&&/root/kernel
cd&&/root/kernel
wget&&http://www.kernel.org/pub/linux/kernel/Historic/old-versions/linux-0.11.tar.gz
tar& &zxvf& &linux-0.11.tar.gz
这个源码包最终要放到bochs仿真的系统里去编译,因为调试环镜是以bochs仿真的Intel x86软件,所以不要在SUSE系统编译这个内核,
而且在bochs仿真系统里编译这个内核还要更改一些配置文件,操作如下:
cd linux-0.11
vi Makefile
更改 RAMDISK = #-DRAMDISK=512为 RAMDISK = -DRAMDISK=2048
更改 ROOT_DEV=/dev/hd6 为ROOT_DEV=FLOPPY
在源码目录下所有的Makefile中
LDFLAGS = -M -x& && && && && && &//去掉-s标志
CFLAGS = Wall -O -g -fstrength-reduce -fomit-frame-pointer&&-fcombine-regs //添加-g标志,去掉-mstring-insns
将boot/bootsect.s和tools/build.c中的SYSSIZE的值改为0x8000
由于Makefile文件较多,这里我写了一个脚本程序adjust_make_for_gdb直接完成上述工作
sed -i '5 s/#//' Makefile
sed -i '5 s/512/2048/' Makefile
sed -i '23 s/\/dev\/hd6/FLOPPY/' Makefile
sed -i '6 s/3/8/' boot/bootsect.s
sed -i '35 s/2/8/' tools/build.c
find . -name 'Makefile' |do
all_lines=$(grep LDFLAGS $filename -nH | awk -F: '{print $2}')
first_line=$(echo $all_lines|awk '{print $1}')
echo $first_line
sed -i &$first_line s/-s//g& $filename
all_lines=$(grep CFLAGS $filename -nH | awk -F: '{print $2}')
first_line=$(echo $all_lines|awk '{print $1}')
echo $first_line
sed -i &$first_line s/-O -fs/-O -g -fs/g& $filename
sed -i '1,$ s/-mstring-insns//g' $filename
将此脚本放在linux-0.11目录下,执行一遍即可.
cd linux-0.11
./adjust_make_for_gdb
执行完,打包此源码.
tar&&cvf&&gdb-linux-0.11.tar& &linux-0.11
这里附上我的gdb-linux-0.11.tar文件
二. 使用bochs
这里需要到http://oldlinux.org/Linux.old/bochs/下载两个包
wget&&http://oldlinux.org/Linux.old/bochs/linux-0.11-devel-050518.zip
wget&&http://oldlinux.org/Linux.old/bochs/linux-0.11-gdb-rh9-050619.tar.gz
将这两个包放到/root/kernel/,并解压
tar zxvf& &linux-0.11-050518-rh9.tar.gz(原文为&linux-0.11-040923-rh9.tar.gz,我在解压出来的文件中找不到bochsrc-hdboot.bxrc文件,改成linux-0.11-050518-rh9.tar.gz就有了)
unzip& &linux-0.11-devel-050518.zip&&-d&&./
cd&&linux-0.11-devel-050518/
这里我们只用到bochsrc-hdboot.bxrc文件
vim & bochsrc-hdboot.bxrc
里面两处做改动:
1、vgaromimage: $BXSHARE\VGABIOS-lgpl-latest反斜杠更改得到
&&&&& vgaromimage: $BXSHARE/VGABIOS-lgpl-latest
2、romimage: file=$BXSHARE\BIOS-bochs-latest, address=0xf0000 更改得到
&&&&& romimage: file=$BXSHARE/BIOS-bochs-latest
这时候就可以运行bochs了.
#bochs& &-q&&-f&&bochsrc-hdboot.bxrc
----- 发生错误以及解决办法 -----
如果运行正常,会得到如下图所示:
(1) &&PANIC&& bochsrc-hd.bxrc:37: vgaromimage directive malformed.
A. 注释掉相应行
B. 改成:vgaromimage: file=/usr/share/bochs/VGABIOS-lgpl-latest
(2) &&PANIC&& bochsrc-hd.bxrc:284: directive 'floppy_command_delay' not understood
A. 注释掉相应行
(3) bochsrc-hd.bxrc:194: unknown parameter for parport1 ignored.
4 Event type: PANIC
&&&&&&&& Device: [MEM0 ]
&&&&&&&& Message: ROM: couldn't open ROM image file '/usr/share/bochs/VGABIOS-lgpl-latest'.
&&&&&&& 进入到目录查看,发现/usr/share/bochs/目录下面并没有VGABIOS-lgpl-latest文件
&&& find / -name VGABIOS-lgpl-latest
/usr/local/share/bochs/VGABIOS-lgpl-latest
&&&&&&& 解决方案:将vgaromimage: $BXSHARE/VGABIOS-lgpl-latest 改为
&&&&&&&& vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest
上图显示了虚拟硬盘的4个分区,第一个分区放着可启动的Linux 0.11系统,按数字1键运行Linux 0.11系统,我最终会在这个系统编译Linux 0.11内核代码:
在linux-0.11-devel-050518 目录还有其它的.bxrc文件:
bochsrc-fda.bxrc&&bochsrc-fdb.bxrc&&bochsrc-hd.bxrc
这里不再使用,感兴趣的可以自己试试,关于bochs使用方法,可以去
http://bochs.sourceforge.net查询
三. 向bochs的仿真系统复制源码文件
能运行了上面的bochsrc-hdboot.bxrc,现在就要把准备工作时的gdb-linux-0.11.tar放到这个系统里了.
原理就是通过虚拟软盘(1.44M)相互拷贝文件.
在linux-0.11-devel-050518 目录,可以看到diska.img和diskb.img,复制一个.img文件:
#cd linux-0.11-devel-050518
#cp diska.img&&tmp.img
#mkdir ../mount_img
# mount -o&&loop tmp.img&&../mount_img/
# cd&&../mount_img/
将里面的文件全部删除
# rm& &-rf& &*
将gdb-linux-0.11.tar复制进虚拟软盘
# cp&&../gdb-linux-0.11.tar&&./
# cd ../linux-0.11-devel-050518
# umount& &tmp.img
运行 bochs
#&&bochs -q -f bochsrc-hdboot.bxrc
按数字1键进入系统,点击bochs工具栏的CONFIG,如图红圈位置:
然后切换回终端,可以看到如图所示:
选择1,更改第一个软驱,设置为刚才的tmp.img:
其余按默认设置即可.
然后且换回bochs虚拟机,这时系统的a:/软驱就是tmp.img,将gdb-linux-0.11.tar复制到用户目录,解压编译:
# mcopy a:/gdb*& &./
# tar&&xvf& &gdb*.tar
# cd linux-0.11
成功后如图所示生成Image System.map文件
四.将 bochs编译好的文件和源码打包,放回软驱
由于软驱大小是1.44M,而编译后的代码会很大,所以我是分批次将文件传输的.
# cp& &-r&&kernel&&../
# cp& &-r&&tools& &../
# rm -rf&&kernel&&tools
# tar cvf&&kernel.tar&&kernel
# tar cvf&&tools.tar&&tools
# tar cvf&&linux.tar& &linux-0.11
将软盘中原来的文件删除,把kernel.tar&&分放进软盘( tools.tar&&linux.tar分别下次复制):
# mdel&&a:/gdb*
# mcopy&&kernel.tar&&a:/
然后在SUSE新开一个终端,在 linux-0.11-devel-050518目录挂载软盘:
# cd&&kernel/linux-0.11-devel-050518/
# mount -o loop tmp.img ../mount_img
# cd&&../mount_img/
# mv& &kernel.tar&&../linux-gdb-rh9/
回到bochs重新挂载软盘,方法在第二步已介绍(点击CONFIG...),然后用同样方法将 tools.tar&&linux.tar&&复制到SUSE 的linux-gdb-rh9目录
这里不再衍述.
复制完毕后即可关闭bochs,在linux-gdb-rh9目录下,删除原来的linux目录,将kernel.tar&&tools.tar&&linux.tar 解压到linux目录:
# rm -rf linux
# tar xvf linux.tar
# tar&&xvf&&tools.tar
# tar&&xvf&&kernel.tar
# mv& &-f&&kernel&&linux-0.11
# mv& &-f&&tools& & linux-0.11
# mv -f& &linux-0.11 linux
将 linux-0.11-devel-050518目录的rootimage-0.11 复制本目录,在后面要用.
# cp ../linux-0.11-devel-050518/rootimage-0.11&&./
五. 开始调试linux-0.11源码
好了,在linux-gdb-rh9目录运行run文件:
这时bochs界面是黑屏,在运行终端是
Waiting for gdb connection on port 1234
新开一个终端,进入linux-gdb-rh9目录下的linux目录,运行gdb tools/system
# cd& &kernel/linux-gdb-rh9/linux/linux/
# gdb& &tools/system
在gdb 下运行target remote localhost:1234
(gdb) target&&remote&&localhost:1234
运行continue:
(gdb) continue
这时,bochs界面会显示如图:
继续运行continue(直接按回车键),bochs 会提示Insert root floppy and press ENTER,这时点击工具栏的CONFIG:
且换回bochs启动终端,选择1,然后输入 rootimage-0.11,其余按默认设置,:
然后回到bochs界面按回车键,再切换到gdb终端,不停运行 continue(不停回车),最终界面会显示如下图:
Ok,现在就可以跟踪每一步命令了:
这时总会提示 filename: No such file or directory.
只要把所有源文件移动到当前目录下即可,我用以下脚本mv_file实现
find . -name '*.*' |do
mv $filename .
然后在linux目录下执行
# ./mv_file
将所有源码文件移动到当前目录,然后再调试就正常了。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:61465次
排名:千里之外
原创:18篇
转载:75篇
(18)(6)(11)(8)(1)(3)(15)(8)(19)(4)使用bochs调试MBR
Author:CryinDate:
连接:一、环境配置:&&&& 操作系统:Microsoft Windows XP Professional Service Pack 3&&&& 调试工具:bochs 2.4.0.0&&&& 1、安装bochs:&&&& Bochs是一种十分轻便的使用c++编写的开源IA-32(x86)电脑模拟器,可以运行在最受欢迎的平台上。它仿真英特尔x86 CPU、常见的I/O设备、和定制的BIOS。目前,Bochs可以被编译仿真386、486、Pentium/PentiumII/PentiumIII/Pentium4或x86-64位的CPU,包括可选的MMX,SSEx和3DNow指令。在Bochs仿真环境里能够运行许多操作系统,比如Linux、DOS、Windows 95/98/NT/2000/XP或者Windows Vista。Bochs是由凯文?劳顿编写的,目前由“http://bochs.sourceforge.net”的Bochs项目组维护。&&&& 如果论性能的话bochs远不及VMware等其他虚拟机,但在调试方面,bochs却有其它虚拟机所不及的优越之处。本文主要介绍如何配置bochs调试环境以及如何用bochs调试MBR程序。重点介绍调试环境配置方法和简单的MBR实例调试。并不对调试MBR做详细分析。主要是做一个文档型的记录。因为本人在使用bochs调试这个过程中摸索了相当长时间,也走了不少弯路。所以如果这个文档能给一些人带来些许帮助,也算是助人为乐,再者,几乎每次重新搭建bochs时总是很乱,所以写此文以备将来再次配置调试环境做参考!&&&& Bochs的最新发布版本可以从bochs主页,也可以从该站点获取到bochs相关说明文档以及源代码。本例使用版本为bochs 2.4.0.0。&&&& 配置Bochs需要相关的文件有bochs.exe、bochsdbg.exe、bximage.exe、DEBUG32.EXE以及一些原本没有可能需要自己下载的文件niclist.exe和WinPcap_4_0_2.exe。既然bochs本身是那首先要装一个系统,本例使用win 2k系统。&&&& 1) 创建虚拟硬盘:&&&& 双击运行bximage.exe创建一个4G、flat模式的虚拟硬盘文件disk.这样就会在当前目录下生成大小为4G的disk.img文件。具体操作如图:
&&&&&&&&& 2) 安装系统:&&&& 用win 2k系统盘直接安装或者创建一个ISO镜像的文件,鉴于bochs虚拟机的速度,还是不推介自己安装系统,最好和别人直接拷贝一份已经安装好操作系统disk.img文件。&&&& 3)创建win2k.bxrc:主要内容:#win2k.bxrc配置信息#设置默认系统BIOS ROM模块romimage: file=$BXSHARE/BIOS-bochs-latest #设置CPU参数 cpu:count=1,ips=, reset_on_triple_fault=1, cpuid_limit_winnt=0, msrs="msrs.def"#设置内存,可以选择8、16、32、64、128或者512megs: 512#设置默认VGA ROM模块vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest#vga: extensionvga: extension=vbe#选择并设置软驱A,注意此处设置,在调试时将mbr文件改为a.img即可进行调试floppya: 1_44=a.img, status=inserted#ATA controller for hard disks and cdromsata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15ata2: enabled=0, ioaddr1=0x1e8, ioaddr2=0x3e0, irq=11ata3: enabled=0, ioaddr1=0x168, ioaddr2=0x360, irq=9#选择引导设备boot: floppy, disk# Enables or disables the 0xaa55 signature check on boot floppiesfloppy_bootsig_check: disabled=0#关闭日志log:nul# LOG CONTROLSpanic: action=askerror: action=reportinfo: action=reportdebug: action=ignore# DEBUGGER_LOG:debugger_log: -#设置建立串口通道,可以与windbg相连.本例中不需要可以注释掉com2: enabled=1, mode=pipe-server, dev=\.pipecom_2# VGA_UPDATE_INTERVALvga_update_interval: 300000# KEYBOARD_SERIAL_DELAYkeyboard_serial_delay: 250# KEYBOARD_PASTE_DELAYkeyboard_paste_delay: 100000# MOUSEmouse: enabled=0#private_colormapprivate_colormap: enabled=0#设置网卡信息ne2k:ioaddr=0x300,irq=10,mac=00:1B:77:59:AC:28,ethmod=win32,&&
ethdev=DeviceNPF_{5175FF64-AD7E-4B75-A4E0-540FA4AAF493}# pnic: Bochs/Etherboot pseudo-NICpnic: enabled=1, mac=00:26:55:36:ec:ae, ethmod=vnet# KEYBOARD_MAPPINGkeyboard_mapping: enabled=0, map=# #设置硬件设备显卡、网卡.i440fxsupport: enabled=1, slot1=pcivga, slot2=ne2k#设置PCI设备码、厂商码.貌似可以随便写pcidev: vendor=0x1234, device=0x5678#end of win2k.bxrc配置信息&&&& 上面关于win2k.bxrc配置信息的内容中有一处需要设置网卡信息,这个就可以使用我上面提到的niclist.exe这个程序了,而使用这个程序需要安装WinPcap,本例使用WinPcap_4_0_2.双击niclist.exe即可获得相关信息,本例使用本机的网卡信息,图上显示数条网卡信息因安装VMware缘故。如图:&&&&&&&&&& 4)创建运行bochs的批处理文件&&&& 创建运行bochs批处理文件"运行.bat",主要内容:set BXSHARE=F:ochs #此处为bochs调试器bochs.exe的路径%BXSHARE%ochsdbg.exe -q -f win2k.bxrc rem %BXSHARE%debug32.exe -q -f win2k.bxrc #win2k.bxrc为上一步创建的win2k.bxrc配置信息文件&&&& 5)使用bochs开始调试:&&&& 到这一步就可以使用bochs进行调试了,双击"运行.bat"批处理文件即可打开bochs调试器,如果有a.img文件,bochs会以光盘启动方式启动操作系统;如果没有a.img文件,bochs会以硬盘形式启动操作系统,当然a.img的名称可以在win2k.bxrc配置信息文件中按照个人喜好随意修改。&&&& 二、使用bochs调试MBR&&&& 1)编写MBR程序:&&&& 本例中使用我之前写过的一个MBR小程序"基于MBR的系统登录密码验证程序"进行演示使用bochs调试MBR的方法,具体可参见/justear/blog/item/3be1ec5430d2.html,首先将汇编代码用NASM编译生成的bin文件拷贝到bochs文件夹下并更名为a.img,这样bochs就会以a.img作为光盘启动操作。&&&& 2)Bochs调试命令:&&&& 鉴于文章主题,这里只简单介绍一些最常用的bochs调试命令,作为入门这些就足够了,更多的可以参考bochs相关的说明文档。网上也有很多bochs调试命令的资料。下面只介绍本例中用到的若干命令;命令 c 运行程序,相当于windbg的g以及OD的F9命令 s 即step,单步执行程序命令 p 单步执行,步过函数命令 q 退出bochs并关闭虚拟机命令 b 下断点命令,如本例中:b 0x7c00命令blist 显示断点状态命令 watch 显示当前所有读写断点命令 r 显示寄存器的值命令 u 反汇编代码,可设定起始和结束位置命令 info 根据参数不同显示相关信息&&&& 3)开始调试MBR&&&& 将第一步编写的MBR程序拷贝到bochs调试器文件夹下并更名为a.img,双击运行.bat开始调试,看到如下界面就说明一切工作正常,就可以开始调试了;&&&&&&&&&& 下面是具体的调试代码:F:ochs&set BXSHARE=F:ochsF:ochs&F:ochsochsdbg.exe -q -f win2k.bxrci[APIC0] local apic 0 initializing==================================================================&&&&&&&&&&&&&&&&&&&&&&&& Bochs x86 Emulator 2.4&&&&&&&&&&&&&&&& Build from CVS snapshot on May 3, 2009============================
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。

我要回帖

更多关于 bochs 的文章

 

随机推荐