hellos操作系统

开发环境搭建

在liunx上开发
VMware虚拟机
linux系统unbuntu16.04
bochs(x86模拟器)(用它来运行自己写的操作系统)(官网下载,版本2.6.11)
nasm编译器(把汇编文件编译为二进制文件)(安装再ubuntu中)(sudo apt-get install nasm)。

思路

0.搭建环境
1.编写汇编文件
2.nasm生成可执行文件
3.制作虚拟软盘映像文件
4.把执行文件写到映像文件
5.把操作系统在虚拟机或模拟器中运行起来。

搭建环境

首先先在Ubuntu中安装 bochs2.6.11

sudo apt-get update //先升级一下,以免后续的安装出错

然后安装一些bochs需要的依赖 避免报错出问题

sudo apt-get install build-essential nasm
sudo apt-get install libx11-dev		(否则会出现fatal error: X11/Xlib.h: No such file or directory)
sudo apt-get install xorg-dev		(否则会出现fatal error:X11/extensions/Xrandr.h: No such file or directory)
sudo apt-get install libgtk2.0-dev
sudo apt-get install bison

官网下载新版本的压缩包 放到linux中解压
https://sourceforge.net/projects/bochs/files/bochs/2.6.11/
打开终端 进入你想放置的目录
解压

tar zxvf bochs-2.6.9.tar.gz

进入目录

cd bochs-2.6.9

执行

 ./configure --enable-debugger --enable-disasm

打开bochs-2.6.9文件夹下Makefile文件, 在90行左右找到LIBS 在后面添加 -lX11
在进行编译:

sudo make
sudo make install 

按顺序操作应该是没有error的
安装完成输入 bochs 测试一下是否安装成功
在这里插入图片描述
跟上面一样说明bochs安装上了 但是没有配置正确
需要编写bochsrc配置文件。我们后面在开始写

编写汇编文件

boot.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				; 结束标志

编译成可执行文件

编译用到 Linux 下的 nasm 编译器

sudo apt-get install nasm

在boot.asm所在的目录编译源程序

nasm boot.asm -o boot.bin

制作虚拟软盘映像文件

在bochs的安装目录中,使用bximage生成镜像
在这里插入图片描述
如上过程生成hello.img镜像

把执行文件写到映像文件

dd if=boot.bin of=hello.img bs=512 count=1 conv=notrunc

编写bochs配置文件

命名为bochsrc.conf

  megs:32
   
   romimage:file=/usr/local/share/bochs/BIOS-bochs-latest
   
   vgaromimage:file=/usr/local/share/bochs/VGABIOS-lgpl-latest
   
   floppya:1_44=hello.IMG,status=inserted
   
   boot:floppy
  
   log:bochs.out

其中第2、3行中的路径是根据BIOS-bochs-latest和VGABIOS-lgpl-latest的真实路径,可以在文件管理器中查找到。

把操作系统在虚拟机或模拟器中运行起来

在bochs启动自己编写的MBR

把虚拟软盘映像文件hello.img 、配置文件bochsrc.conf 放至bochs2.6.11的安装目录里,然后执行命令

bochs -f bochsrc.conf

输入 -f 的目的是直接使用配置文件bochsrc.conf

在这里插入图片描述
默认回车 6操作
在这里插入图片描述
输入c运行
在这里插入图片描述
成功显示helloos

以上过程都要执行 某一步出错可能就会出现[BIOS] no bootable device.这样的错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值