本文是OS实验时本以为会用到发的帖子,结果实验环境已经配好,所以本文没有价值,仅作纪念。
1:首先在网上下载tar.gz的包,目前最新版是2.4.1
解压到自己到目录。2:我的机器之前装好了g++,没有装的话装一下:
sudo apt-get install g++到此先不要编译,还要装一个图形界面:
sudo apt-get install xorg-dev3: 现在编译后make还会出错,具体的错误提示忘了,这看起来好像是代码有问题还是其他什么问题,我也没有为了装一个软件去看那么长的代码,并且也看不懂~,最后我的解决办法是改两个文件:
一个是/bochs/cpu/proc_ctrl.cc 大约从650~683行结束,修改为:
//--------------------------------------------------------------------------------------------------//--------------------------------------------------------------------------------------------------#if BX_SUPPORT_VMX
VMexit_CR3_Write(i, val_32);if (BX_CPU_THIS_PTR cr0.get_PG() && BX_CPU_THIS_PTR cr4.get_PAE() &&
!long_mode()){if (! CheckPDPTR(val_32))
{BX_ERROR(("SetCR3(): PDPTR check failed !"));
exception(BX_GP_EXCEPTION, 0, 0);}}SetCR3(val_32);BX_INSTR_TLB_CNTRL(BX_CPU_ID, BX_INSTR_MOV_CR3, val_32);break;
#endif
#if BX_CPU_LEVEL > 3
case 4: // CR4#if BX_SUPPORT_VMX
val_32 = VMexit_CR4_Write(i, val_32);if (BX_CPU_THIS_PTR cr0.get_PG() && (val_32 & (1<<5)) != 0 /* PAE */&& !long_mode()){if (! CheckPDPTR(BX_CPU_THIS_PTR cr3))
{BX_ERROR(("SetCR4(): PDPTR check failed !"));
exception(BX_GP_EXCEPTION, 0, 0);}}// Protected mode: #GP(0) if attempt to write a 1 to
// any reserved bit of CR4
if (! SetCR4(val_32))
exception(BX_GP_EXCEPTION, 0, 0);break;
#endif
#endif
default:
BX_ERROR(("MOV_CdRd: #UD - control register %d index out of range",
i->nnn()));exception(BX_UD_EXCEPTION, 0, 0);}}
参考来源另一个文件是/bochs/gdbstub.cc,这个文件在make的时候出现错误提示是那个什么Bit32u不能转为Bit8u还是什么东西的,具体的也忘了。
google了半天还是没法解决,后来想到最新版本是2.4.1,网上基本都是2.3.7到教程,既然 2.3.7没遇到这个问题,那么把2.4.1里面的这个文件替换为2.3.7的gdbstub.cc应该就可以解决,果然奏效!
在这里可以找到这个文件2.3.7版本的源码。4:改完这些,可以编译安装了。
./configure --enable-gdb-stub #google找到好多,参数比这个还长。我配置时候就这些参数就够了。makesudo make install
然后就能装上了。装完 gcc-3.4后,试着编译下cms上面给的linux-0.11内核,然后就能在Bochs里面运行了。
配置bochs 2.4.1
最新推荐文章于 2022-12-05 17:16:50 发布