欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

《一个64位操作系统的设计与实现》纪要一:Bochs搭建

程序员文章站 2022-06-20 08:57:14
...

1. Bochs概述

Bochs是一个X86平台的模拟器,可以完全模拟X86的硬件环境。而且全平台、全系统通用。

2. Bochs下载

Bochs官网为:Bochs官网
各版本官方下载地址:各版本下载地址

3. Bochs安装

Bochs是全平台支持的。
但是对于版本选择,建议选择书中相同的版本2.6.8。因为其他版本可能会存在一些问题,导致编译不成功。而书中的版本已经被无数人趟过坑,遇到问题也容易找到解决方法。

3.1 Windows

上面下载地址中有对应的exe格式安装包。下载安装即可。

3.2 Linux

安装依赖软件

sudo apt-get install build-essential
sudo apt-get install xorg-dev
sudo apt-get install libgtk2.0-dev

3.2.1 RedHat/CentOS流

3.2.1.1 X86_64平台

上面下载地址中有对应的x86_64.rpm格式安装包。下载安装即可。

3.2.1.2 其他平台

上面下载地址中有对应的src.rpm格式源码包,可以下载后编译安装。
首先解包:

sudo rpm2cpio bochs-xxxx.src.rpm | cpio -div

解包以后得到源码就跟下面其他Linux编译安装方式相同。

3.2.2 其他Linux

上面下载地址中有对应的tar.xz格式的源码包,可以下载后编译安装。

  1. 首先解包:
sudo tar -xvf bochs-xxxx.tar.xz

解压后可以得到bochs-xxxx源码。
然后进入到源码根目录后执行:

  1. 配置:
./configure --with-x11 --with-wx --enable-debugger --enable-disasm --enable-all-optimizations --enable-readline --enable-long-phy-address --enable-ltdl-install --enable-idle-hack --enable-plugins --enable-a20-pin --enable-x86-64 --enable-smp --enable-cpu-level=6 --enable-large-ramfile --enable-repeat-speedups --enable-fast-function-calls  --enable-handlers-chaining  --enable-trace-linking --enable-configurable-msrs --enable-show-ips --enable-cpp --enable-debugger-gui --enable-iodebug --enable-logging --enable-assert-checks --enable-fpu --enable-vmx=2 --enable-svm --enable-3dnow --enable-alignment-check  --enable-monitor-mwait --enable-avx  --enable-evex --enable-x86-debugger --enable-pci --enable-usb --enable-voodoo

其实这里是把说有的编译选项都选上了,因为不直到操作系统都需要那些部件,所以保险起见,所有的配置选项都添加上了。

  1. 编译:
make

在编译是会遇到一些问题:(唉,Linux编译安装软件的通病)

  • 问题1:make: *** No rule to make target 'misc/bximage.cc', needed by 'misc/bximage.o'
    解决方法:
cp misc/bximage.cpp misc/bximage.cc
cp iodev/hdimage/hdimage.cpp iodev/hdimage/hdimage.cc
cp iodev/hdimage/vmware3.cpp iodev/hdimage/vmware3.cc
cp iodev/hdimage/vmware4.cpp  iodev/hdimage/vmware4.cc
cp iodev/hdimage/vpc-img.cpp iodev/hdimage/vpc-img.cc
cp iodev/hdimage/vbox.cpp iodev/hdimage/vbox.cc
  1. 安装:
sudo make install

4. Bochs配置

Bochs通过bochsrc配置文件来配置为软件。在安装目录中存在.bochsrs文件。
不过书中给出了一个配置文件:

# configuration file generated by Bochs
plugin_ctrl: unmapped=1, biosdev=1, speaker=1, extfpuirq=1, parallel=1, serial=1, iodebug=1
config_interface: textconfig
display_library: x
#memory: host=2048, guest=2048
romimage: file="/usr/local/share/bochs/BIOS-bochs-latest"
vgaromimage: file="/usr/local/share/bochs/VGABIOS-lgpl-latest"
boot: floppy
floppy_bootsig_check: disabled=0
floppya: type=1_44, 1_44="boot.img", status=inserted, write_protected=0
# no floppyb
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=none
ata0-slave: type=none
ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15
ata1-master: type=none
ata1-slave: type=none
ata2: enabled=0
ata3: enabled=0
pci: enabled=1, chipset=i440fx
vga: extension=vbe, update_freq=5
 
cpu: count=1:1:1, ips=4000000, quantum=16, model=corei7_haswell_4770, reset_on_triple_fault=1, cpuid_limit_winnt=0, ignore_bad_msrs=1, mwait_is_nop=0, msrs="msrs.def"
 
cpuid: x86_64=1,level=6, mmx=1, sep=1, simd=avx512, aes=1, movbe=1, xsave=1,apic=x2apic,sha=1,movbe=1,adx=1,xsaveopt=1,avx_f16c=1,avx_fma=1,bmi=bmi2,1g_pages=1,pcid=1,fsgsbase=1,smep=1,smap=1,mwait=1,vmx=1
cpuid: family=6, model=0x1a, stepping=5, vendor_string="GenuineIntel", brand_string="Intel(R) Core(TM) i7-4770 CPU (Haswell)"
 
print_timestamps: enabled=0
debugger_log: -
magic_break: enabled=0
port_e9_hack: enabled=0
private_colormap: enabled=0
clock: sync=none, time0=local, rtc_sync=0
# no cmosimage
# no loader
log: -
logprefix: %t%e%d
debug: action=ignore
info: action=report
error: action=report
panic: action=ask
keyboard: type=mf, serial_delay=250, paste_delay=100000, user_shortcut=none
mouse: type=ps2, enabled=0, toggle=ctrl+mbutton
speaker: enabled=1, mode=system
parport1: enabled=1, file=none
parport2: enabled=0
com1: enabled=1, mode=null
com2: enabled=0
com3: enabled=0
com4: enabled=0
 
megs: 2048
 

该配置文件是根据默认配置文件修改而来的。

可以将该保存到你愿意的目录中,也可以替换编译目录中默认的.bochsrc

5. Bochs使用

5.1 Bochs运行

指定配置文件:
···shell
bochs -f bochsrc
···
待续

相关标签: 读书笔记