《自己动手写操作系统》是刚看到的一本书,(虽然已经出版很久了。。。。仅作为操作系统的实现练习和加强对操作系统的理解)。我会把每次遇到的问题和解决方法都一一记录下来,给以后学习的人提供一点点帮助,这就是一件很开心的事了。
这本书由于比较久远了,而且现在很多的软件更新的很快,所以需要很多新的软件代替。
Capter1
问题:
第一,书中的软盘问题:
软盘是一个已经落时的东东了,所以刚刚开始准备用一个U盘来做启动盘,后来觉着比较麻烦就使用虚拟软盘.img文件(就是和磁盘具有一样的结构,有MBR,boot Sector,但是虚拟的)来模拟。
第二,虚拟机的问题
我使用的是最新的VMware12.0来加载虚拟软盘模拟出自己制作的OS。
第三,书本的软件nasm,floppywriter(可能的话我会将这些软件上传)
具体操作:
接下来就开始写第一个程序了。保存文件名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 ; 结束标志
打开floppywriter/Release/FloppyWriter.exe选择write file to image 第一次选择到boot.bin这个文件然后打开,第二次选择Tinux.img(自己制作的.img也是可以的)然后打开,不出意外的话应该会成功的。
接下来使用虚拟机加载这个虚拟软盘(Tinux.img文件)。
打开VMware创建新的虚拟机,这里使用的是典型的安装(因为主要是用来加载虚拟软盘的,无需更多的配置)。单击下一步。先选择安装,单击下一步
再然后一定要这样,(在选择iso游览时,选择到Tinux.img所在的文件夹,文件类型选择所有文件),最后点击 稍后安装。
单击下一步,选择其他
虚拟机的名称和位置自己定义,单击 下一步,接下来选择 默认的选项,最后点击完成。
点击编辑虚拟机设置
接下来重点来了(一定要点击下面的添加),再选择软盘驱动器(当时不知道这个,弄了好长时间都不对),单击 下一步 , 选择使用 软盘映像
软盘映像选择 刚开始制作的Tinux.img文件,然后单击 完成。 最后点击 确定。
点击 开启此虚拟机。 最后会出现 Hello,OS world 。 你就成功了第一步了。哈哈
希望看到的人能够给我点支持,让我完成所有的OS实践。谢谢大家