操作系统实现(一)1.环境配置(工具与材料准备)详解

根据于渊老师的《Orange’s 一个操作系统的实现》我开始了操作系统的制作

首先进行了helloworld的编写,大体过程是:

1.了解什么语言编写操作系统  书中给出:汇编与c++,但是hello'world编写仅仅是汇编,我也看不懂 直接复制粘贴

稍后代码块给出demo

2.寻找一款工具运行操作系统(总不能裸机加载,每次运行都重启)  书中给出一款叫做Bochs的软件

个人觉得这款软件很老了 应该不是最新使用的工业软件,不过优点很明显,界面简洁。

如果我可以实现将.img或者.bin文件转化成.iso文件,那么我就可以在vm上运行我的操作系统了,但是我现在并没有进行这个工作

软件运行截图

3.汇编语言的安装 nasm直接下载,百度就有了

4然后进行操作系统的编写,这个就是刚才所说的helloworld   命名为boot.asm

    org		07c00h			;load os to 7c00
	mov		ax, cs
	mov 	ds, ax
	mov 	es, ax
	call 	DispStr
	jmp 	$
DispStr:
	mov 	ax, BootMessage
	mov 	bp, ax			;string address
	mov 	cx, 16			;cx string size
	mov 	ax, 01301h
	mov 	bx, 00ch
	mov 	dl, 0
	int 	10h				;No.10 interrupt
	ret
BootMessage:		db	"hello, OS World"
times	510-($-$$)	db	0					;stuff space making result is 512B
dw		0xaa55								;end	

	

然后进行编译

nasm boot.asm -o boot.bin

如果出现nasm不是外部命令提示,那么就是未将nasm放进环境变量里,加入就可以了

此时出现了boot.bin文件,至此汇编部分完成

5.下一步操作是不同于其他语言编写的步骤,将bin文件写入软盘(类比windows 在安装操作系统的时候需要一个光盘,这个写入的是软盘,不过是虚拟的软盘而已)

然后将虚拟软盘文件在Bochs上运行即可得到helloworld结果

首先我们需要一张虚拟软盘,在bochs安装之后,文件夹内会有一个bximage应用程序,作用就是制作虚拟软盘与硬盘

运行截图:

选择第一个 创建新的软盘(floppy disk)fd

第一个输入fd剩下的直接回车跳过

至此本文件夹下得到一个虚拟软盘 默认a.img(如有需要在创建命令行界面输入名字时,不选择默认 自行输入名字)

第二步将4中编译汇编语言得到的.bin文件写入软盘 再运行软盘即可成功

这一步涉及到安装一个linux中的dd指令 百度自行安装。

然后直接敲

dd if=boot.bin of=E:/file/os/a.img bs=512 count=1

of=后面接的是镜像所在的绝对地址,命令不能多打空格 会出现错误

整个过程如果没有任何问题,那么我们就可以得到一个内嵌有操作系统引导代码,通过虚拟运行就可以展现出红色字体的hello world操作系统

下面就是运行 同样需要几个步骤,

大体分为

1.编写虚拟机引导配置文件(自己起的名 我也不知道叫什么)

当启动bochs时,窗口选项configuration下load是加载配置文件,新建文件bosh.src,与软盘处于同一文件夹下

megs:32
 
romimage:file=$BXSHARE/BIOS-bochs-latest
 
vgaromimage:file=$BXSHARE/VGABIOS-lgpl-latest
 
floppya:1_44=a.img,status=inserted
#软盘映射 
boot:floppy
#硬盘
#boot:disk
#分配HD为60M,根据分配硬盘大小,cylinders, heads, spt会变化
#ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
#ata0-master: type=disk, mode=flat, path="boot.img", cylinders=121, heads=16, spt=63
 
log:bochsout.txt
 
mouse:enabled=0 
keyboard: keymap=$BXSHARE/keymaps/x11-pc-de.map

然后加载,运行该配置文件,得到hello world结果

至此,环境配置完成,下一篇记录一下自己所遇到的bug及解决办法

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值