《ORANGE‘s 一个操作系统的实现》-- ubuntu14.04下bochs2.3.5的配置与使用

ubuntu14.04下bochs2.3.5的配置与使用

云平台:阿里云

操作系统:ubuntu14.04

bochs:2.3.5

本篇博客来源于本人在按照《ORANGE'S 一个操作系统的实现》配置环境时遇到的问题,遂发出来分享

安装过程中如果遇到权限问题,请使用sudo

安装图形化界面

安装ubuntu图形化界面

bash 复制代码
apt-get update
apt-get install vnc4server
apt-get install xfce4
apt-get install ubuntu-desktop
sudo apt-get install xrdp

允许图形化界面root登录

如果发现图形化界面登录只可以使用guest登录,则使用如下方法

打开50-unity-greeter.conf

bash 复制代码
cd /usr/share/lightdm/lightdm.conf.d/
vim ./50-unity-greeter.conf

修改配置文件,在文件中添加下面三行语句

bash 复制代码
user-session=ubuntu
greeter-show-manual-login=true
all-guest=false

打开.profile文件

bash 复制代码
vim /root/.profile

.profile文件最后一行修改为

bash 复制代码
tty -s && mesg n  || true

重启

bash 复制代码
reboot

随后便可以使用VNC登录的方式进入服务器

安装bochs

下载bochs

点击链接,下载bochs-2.3.5.tar.gz

如果无法下载,可以使用如下的百度网盘链接(提取码:groy)

安装依赖环境

bash 复制代码
sudo apt-get install build-essential
sudo apt-get install xorg-dev
sudo apt-get install bison
sudo apt-get install libgtk2.0-dev
sudo apt-get install g++

解压

bash 复制代码
tar vxzf bochs-2.3.5
cd bochs-2.3.5

配置

bash 复制代码
./configure --enable-debugger --enable-disasm
配置过程出错

配置过程如果报错

bash 复制代码
ERROR: X windows gui was selected, but X windows libraries were not found.

编辑configure配置文件

bash 复制代码
vim configure

在配置文件内寻找

bash 复制代码
echo ERROR: X windows gui was selected, but X windows libraries were not found.
exit 1

exit 1注释掉

bash 复制代码
echo ERROR: X windows gui was selected, but X windows libraries were not found.
#exit 1

make

make前需要修改bx_debug/symbol.cc的代码

打开symbol.cc
bash 复制代码
vim bx_debug/symbol.cc
编辑symbol.cc

在97行左右添加如下代码

c++ 复制代码
using namespace std;

#ifdef __GNUC__ //修改
using namespace __gnu_cxx; //修改
#endif //修改

struct symbol_entry_t
安装
bash 复制代码
make install

安装nasm

bash 复制代码
apt-get install nasm

测试

asm源码及编译

在你的项目文件下建立boot.asm文件

asm 复制代码
org	07c00h			; 告诉编译器程序加载到7c00处
	mov	ax, cs
	mov	ds, ax
	mov	es, ax
	call	DispStr			; 调用显示字符串例程
	jmp	$			; 无限循环
DispStr:
	mov	ax, BootMessage
	mov	bp, ax			; ES:BP = 串地址
	mov	cx, 16			; CX = 串长度
	mov	ax, 01301h		; AH = 13,  AL = 01h
	mov	bx, 000ch		; 页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮)
	mov	dl, 0
	int	10h			; 10h 号中断
	ret
BootMessage:		db	"Hello, OS world!"
times 	510-($-$$)	db	0	; 填充剩下的空间,使生成的二进制代码恰好为512字节
dw 	0xaa55				; 结束标志

编译

bash 复制代码
nasm boot.asm -o boot.bin

制作镜像

生成镜像文件
bash 复制代码
bximage

第一步选fd,其余默认即可

会在你的项目文件下方生成a.img软盘镜像

写入引导区
bash 复制代码
dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
生成bochsrc

在本项目文件的目录下生成bochsrc,作为配置文件

ini 复制代码
#how much memory the emulated machine will have
megs: 32

#filename of ROM images
romimage: file=/usr/local/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest

#what disk images will be used
floppya: 1_44=a.img, status=inserted

#choose the boot disk
boot: floppy

#where do we send log messages?
log: bochsout.txt

#disable the mouse
mouse: enabled=0

#enable key mapping, using US layout as default.
keyboard_mapping: enabled=1, map=/usr/local/share/bochs/keymaps/x11-pc-us.map

注意romimage vgaromimage keyboard_mapping要依照你的服务器中对应文件的路径填写,需要自己去找具体文件地址

运行

此步需要用图形化界面登录

bash 复制代码
bochs -f bochsrc

输入回车

调试界面按c回车,若虚拟机上显示Hello, OS world!则配置成功

相关推荐
寒水馨1 小时前
Linux下载、安装 Codex CLI(附安装包codex-x86_64-unknown-linux-musl.tar.gz)
linux·openai·终端·ai编程·codex·智能体·codex cli
冰封之寂10 小时前
Docker 资源管理终极指南:CPU、内存与 IO 的精细化控制
linux·运维·服务器·docker·云计算
xiaoye-duck10 小时前
《Linux系统编程》Linux 系统多线程(五):<线程同步与互斥>线程互斥(上):从条件变量到生产者消费者模型详解
linux·线程
一叶龙洲12 小时前
向日葵远程Ubuntu,支持隐私屏
linux·运维·ubuntu
酷可达拉斯12 小时前
Linux操作系统-shell编程之Grep与正则表达式
linux·运维·服务器·正则表达式·centos
寒水馨13 小时前
Linux下载、安装llama.cpp-b10068(附安装包llama-b10068-bin-ubuntu-vulkan-x64.tar.gz)
linux·ubuntu·llm·llama·本地部署·llama.cpp·推理引擎
我星期八休息15 小时前
网络编程—UDP与TCP
linux·运维·网络·数据库·网络协议·tcp/ip·udp
ziguo112216 小时前
C/C++ 错误处理全解:从 errno 到 C++ 异常
linux·c语言·c++·windows·visual studio
三84417 小时前
使用Samba/NFS实现文件共享/自动挂载共享目录/autofs自动挂载服务
linux·服务器·网络
高铭杰17 小时前
万物皆可KV(2)SurrealDB 存储布局分析
linux·服务器