【操作系统真象还原一】实验环境配置
实验环境配置
时间:2023-12-12
编译器
现在操作系统基本上是C语言再结合汇编语言开发的,所以C语言编译器选择GCC,汇编语言编译器选择nasm。
环境
vmware+centos
安装Bochs
-
安装其他需要的软件
yum install build-essential yum install libghc-x11-dev yum install xorg-dev
-
下载和安装Bochs
-
地址:https://udomain.dl.sourceforge.net/project/bochs/bochs/2.6.8/bochs-2.6.8.tar.gz
-
将下载下来的tar包移动到虚拟机中相应的位置,解压:
tar -zxvf bochs-2.6.8.tar.gz
-
创建bochs空目录:
mkdir bochs
-
配置bochs的config文件,
./configure --prefix=/home/kanshan/Desktop/bochs(安装bochs的空目录) --enable-debugger --enable-disasm --enable-iodebug --enable-x86-debugger --with-x --with-x11 LDFLAGS='-pthread'
参数说明:
--enable-debugger 打开bochs自己的调试器 --enable-disasm 使bochs支持反汇编 -enable-iodebug 启用io接口调试器 --enable-x86-debugger 支持x86调试器 --with-x 使用x windows --with-x11 使用x11图形用户接口
-
编译和安装,
make && make install
-
配置bochs
bochs在启动的时候,会寻找bochsrc.disk文件,根据文件内容创建自己。
进入bochs目录,创建bochsrc.disk,命令: touch bochsrc.disk
,在其中写下配置信息(修改romimage:
、romimage:
、 keyboard:
后面路径信息的前部分为自己的bochs安装路径)
megs: 32 #设置Bochs在运行过程中能够使用的内存,本例中为32MB
romimage: file=/home/kuangdi/bochs-2.6.8/share/bochs/BIOS-bochs-latest #设置对应真实机器的BIOS
vgaromimage: file=/home/kuangdi/bochs-2.6.8/share/bochs/VGABIOS-lgpl-latest #设置对应真实机器的VGA BIOS
#选择启动盘符
boot: disk #从硬盘启动。
#设置日志文件的输出
log: bochs.out
#开启或关闭某些功能
mouse: enabled=0 #关闭鼠标
keyboard:keymap=/home/kuangdi/bochs-2.6.8/share/bochs/keymaps/x11-pc-us.map #开启键盘
#硬盘设置
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path="/home/kuangdi/bochs-2.6.8/bin/hd60M.img", mode=flat, cylinders=121, heads=16, spt=63
#gdbstub: enabled=1, port=1234, text_base=0, data_base=0, bss_base=0
创建启动磁盘
Bochs提供了创建虚拟硬盘的工具bin/bximage。
1
hd
flat
60
hd60M.img
或者使用命令行创建:
bin/bximage -hd -mode="flat" -size=60 -q hd60M.img
hd60M.img是创建的虚拟硬盘的名称。
测试
touch mbr.s
SECTION MBR vstart=0x7c00
mov ax,0x0000 ;设置栈指应该是程序一开始就应该做的事情,这个值是参照1m内存空间布局图选择的,以后会刻意避开
mov ss,ax
mov ax,0x7c00
mov sp,ax
mov ax,0x0600
mov bx,0x0700 ;BH是设置缺省属性,属性是指背景色,前景色,是否闪烁等,例如07H表示黑底白字,70H表示灰底黑字等等。
mov cx,0x0000
mov dx,0x184f ;这个看书p61,同时看其中关于页的知识
int 0x10
mov ax,0x0300
mov bx,0x0000
int 0x10
mov ax,0x0000
mov es,ax
mov ax,message
mov bp,ax
mov ax,0x1301
mov bx,0x0007 ;设置字体属性,02是黑底绿字,07是黑底白字
mov cx,0x000c
int 0x10
jmp $
message db "Hello World!"
times 510-($-$$) db 0
db 0x55,0xaa
安装nasm
yum install nasm
编译: nasm -o test mbr.s
写入虚拟机启动磁盘
[root@192 ~]# dd if=/home/kuangdi/bochs-2.6.8/test of=/home/kuangdi/bochs-2.6.8/bin/hd60M.img bs=512 count=1 conv=notrunc
查看启动效果
命令: bin/bochs -f bochsrc.disk
然后输入c
效果:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!