《操作系统真象还原》第一章 部署工作环境(Centos7下bochs)

本机环境

vmware + Centos7+linux内核版本3.10.0-1160.el7.x86_64+bochs-2.6.8

依赖环境的安装

需要在root用户下,不是在root用户下加入sudo

sudo yum -y install gtk2 gtk2-devel
sudo yum -y install libXt libXt-devel
sudo yum -y install l libXpm libXpm-devel
sudo yum -y install SDL SDL-devel
sudo yum -y install l libXrandr-devel.x86_64
sudo yum -y install xorg-x11-server-devel
sudo yum -y install gcc
sudo yum -y install l gcc-c++

Bochs 安装

我的必须在虚拟机中重新下载bochs压缩包或者本机与虚拟机共享文件,copy到虚拟机中尝试几次均不成功,文件损坏。
下载地址 (https://udomain.dl.sourceforge.net/project/bochs/bochs/2.6.8/bochs-2.6.8.tar.gz)

解压安装包

sudo tar -zxvf bochs-2.6.8.tar.gz

创建新的目录去安装

bochs  mkdir bochs

进入解压后的文件夹

cd bochs-2.6.8

安装配置环境

./configure --prefix=/root/Ytest/bochs --enable-debugger --enable-disasm --enable-iodebug --enable-x86-debugger --with-x --with-x11 LDFLAGS='-pthread'/root/Ytest/替换为自己的路径)

编译

make 

安装

make install

进入新创建的bochs文件夹 cd bochs
创建touch bochsrc.disk ,进入配置文件 vim bochsrc.disk 填入配置信息

megs : 32

romimage: file=/root/Ytest/bochs/share/bochs/BIOS-bochs-latest(路径替换)
vgaromimage: file=/root/Ytest/bochs/share/bochs/VGABIOS-lgpl-latest(路径替换)

boot: disk

log: bochs.out

mouse:enabled=0
keyboard:keymap=/root/Ytest/bochs/share/bochs/keymaps/x11-pc-us.map(路径替换)

ata0:enabled=1,ioaddr1=0x1f0,ioaddr2=0x3f0,irq=14
ata0-master: type=disk, path="hd60M.img", mode=flat,cylinders=121,heads=16,spt=63

#gdbstub:enabled=1,port=1234,text_base=0,data_base=0,bss_base=0

ESC键输入:wq退出

创建磁盘

bin/bximage

输入参数

1
hd
flat
60
hd60M.img

编写测试代码 cd ..(上一级目录)
创建mbr.s文件

touch mbr.s

进入

vim mbr.s

填入测试代码

SECTION MBR vstart=0x7c00
	mov ax,0x0000	
	mov ss,ax
	mov ax,0x7c00
	mov sp,ax	
 
	mov ax,0x0600
	mov bx,0x0700	
	mov cx,0x0000
	mov dx,0x184f	
	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	
	mov cx,0x000c
	int 0x10
	
	jmp $
	message db "Hello World!"
	times 510-($-$$) db 0
	db 0x55,0xaa

安装编译器

sudo yum -y install nasm

进行编译

nasm – o ytest mbr.s

写入磁盘(替换路径)

dd if=/root/Ytest/ytest of=/root/Ytest/bochs/hd60M.img bs=512 count=1 conv=notrunc

进入bochs

cd bochs

运行

bin/bochs -f bochsrc.disk

回车后输入字符c 就可以看见Hello world!(出现黑屏大概率没有输入字符c)

记录实验过程中所遇问题

1、依赖环境安装时候出现‘

Another app is currently holding the yum lock; waiting for it to exit...
  另一个应用程序是:PackageKit
    内存: 27 M RSS (1.4 GB VSZ)
    已启动: Fri Oct 22 15:27:32 2021 - 00:28之前
    状态  :睡眠中,进程ID:13482

这是因为已经有一个yum进程已经在运行了,所以无法执行现在的操作,要结束这个进程

解决方案输入 rm -f /var/run/yum.pid 即可

2、make编译时出现无法获取“./bochsdbg”的文件状态(stat):没有改文件或者目录

解决方案:make编译之后,将bochs-2.6.8文件夹 copy一份,命名为bochsdbg即可。

3、启动bochs时出现No bootable device 错误

解决方案:大多数是由于硬盘问题。
1.查看是否忘记忘记创建硬盘了
2.查看创建硬盘时候路径是否写错(我的是这种情况)

Logo

鸿蒙生态一站式服务平台。

更多推荐