Fallower博客

生如逆旅,一苇以航

0%

工具下载及配置

工具下载及配置

本文所使用环境为Linux操作系统(Ubuntu Server 24.04 LTS 64bit)

Nasm下载安装

下载编译源码的依赖

  1. 下载build-essential

    1
    2
    sudo apt update
    sudo apt install build-essential
  2. 下载yasm

    1
    sudo apt install yasm

下载源码

如果是没有配置网络的虚拟机可以在本地下载源码后上传至要放置的源码文件夹

nasm源码下载地址

如果是可以科学上网的虚拟机或服务器可以通过命令进行下载

1
2
3
mkdir your_directory_of_nasm
cd your_directory_of_nasm
wget https://www.nasm.us/pub/nasm/releasebuilds/2.16.03/nasm-2.16.03.tar.gz #可以选择需要的版本

编译安装Nasm

将下载好的源码压缩包进行解压缩

1
2
cd your_directory_of_nasm
tar -xzvf file_name.tar.gz #file_name为压缩包名

进入解压缩后的文件夹

1
2
3
4
5
6
7
cd file_name
./configure #可以添加需要的配置以及具体的安装路径
sudo make #编译源码
sudo make install #安装,如果有指定路径则安装至指定路径下,没有则安装至默认路径/usr/local下,指定路径可能需要添加全局变量
export PATH=your_path/bin:$PATH #如果修改安装路径,则需要在全局变量配置文件中添加,将bin添加至全局变量
source ~/.bashrc #使修改生效 对bash用户,其他用户需要替换为具体修改文件
nasm -v #在任一路径下执行可以看到版本号及构建时间则成功

Bochs安装及配置

下载Bochs所需要的依赖

1
2
3
4
5
6
7
sudo apt install build-essential #基本开发工具
sudo apt install libsdl2-dev #用于图形界面的SDL2库
sudo apt install libgtk2.0-dev #用于GTK+图形界面(可选)
sudo apt install libasound2-dev #用于音频的音频支持库(可选)
sudo apt install libx11-dev #X11图形支持(推荐)
sudo apt install gdb #GDB调试工具(可选)
sudo apt install libpng-dev #图像支持库(可选)

下载Bochs源码

如果可以上网则可以通过一下命令下载,如果不可以上网,通过Bochs源码下载地址选择需要的版本下载,将源码上传至你需要放置的文件夹

1
2
3
mkdir your_directory_of_bochs
cd your_directory_of_bochs
wget https://sourceforge.net/projects/bochs/files/bochs/2.8/bochs-2.8.tar.gz #可以在下载地址中选择你需要的版本

编译安装Bochs

将下载好的源码压缩包解压缩

1
2
cd your_directory_of_bochs
tar -xzvf file_name.tar.gz

进入解压缩文件夹,编译bochs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
cd file_name #进入文件夹
#以下为配置选泽,可以自行选择安装路径,每次输入\后回车即可输入连续输入,每个\前有空格 选择配置时如果选择--with-x11则需安装X11图形支持
./configure \
> --with-x11 \
> --with-wx \
> --enable-debugger \
> --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
#选择完配置即可进行编译
sudo make
#编译时可能遇到某些文件.cc不存在的情况,需要将其对应的.cpp拷贝一份为.cc,以下为博主个人编译时遇到的文件不存在的解决方案
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.cpp iodev/hdimage/vpc.cc
cp iodev/hdimage/vbox.cpp iodev/hdimage/vbox.cc
#拷贝完成后再次执行
sudo make #编译
sudo make install #安装
#自定义安装路径需要手动配置环境变量
#可以通过一下命令测试是否安装成功
#任一路径下
bochs
#弹出选择选择6
6
#查看是否有弹窗

Bochs配置

个人建议不要修改bochs默认配置,可以在个人项目下新建项目对应的bochs配置

1
2
3
4
your_config_file_name.bochsrc 
your_config_file_name.cfg
your_config_file_name.conf
your_config_file_name.txt

对于自定义的配置文件,bochs启动时需要通过-f指定配置文件

1
bochs -f your_config_file

个人配置文件,仅供参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#创建个人配置文件及编辑
touch my_bochs.config
vim my_bochs.config

#bochs具体配置如下 注意将其中提到的路径换为自己的路径

# 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" #自定义安装路径或无法运行的需要找到你的安装路径下的latest
vgaromimage: file="/usr/local/share/bochs/VGABIOS-lgpl-latest" #自定义安装路径或无法运行的需要找到你的安装路径下的VGABIOS-lgpl-latest
boot: floppy #boot的类型,软盘还是硬盘
floppy_bootsig_check: disabled=0
floppya: type=1_44, 1_44="path/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

安装nasm、bochs结束