admin管理员组文章数量:1567021
当你按下电源键之后,你的电脑做了哪些工作最后才启动你的操作系统的呢?
计算机上电启动之后,首先会经过BIOS上电自检,检测硬件设备是否存在问题。如果检测硬件没有问题的话,将根据BIOS的启动项配置选择引导设备,包括软盘、硬盘、U盘、网络启动。通常情况下会选择硬盘启动作为默认的启动项,但从简单和易用的角度来看,使用软盘启动最为简单。
本节参考书籍:
《一个64位操作系统的设计与实现》田宇 著
《操作系统 真象还原》郑钢 著
1.BIOS引导原理
当BIOS自检结束之后会根据启动选项的设置,去检测启动设备的0磁头0磁道1扇区(其实1扇区就是第一个扇区,命名规则和前面两个不同而已,在CHS方法中扇区的编号是从1开始的!)是否以数值0x55和0xaa两字节作为结尾。如果是,那么BOIOS就认为这个扇区是一个Boot Sector(引导扇区),然后把这个扇区的数据复制到物理内存地址0x7c00处,随后将处理器的执行权限交给这段程序(跳转到0x7c00处开始执行)。
那么在BIOS向引导程序移交执行权之前,BIOS对处理器做了什么呢?很简单,需要修改处理器的代码段寄存器CS和指令寄存器IP。因为当从BIOS跳转到引导程序时,CS和IP的值必须为0x0000和0x7c00。这样一来物理地址就是0x7c00了。
再者,因为一个1.44MB的软盘的一个扇区仅有512个字节,而其末端的0x55和0xaa已经占据了两个字节。因此引导程序的有效长度仅有510个字节。
2.写引导程序
引导程序采用Intel汇编语言格式编写,编译代码使用NASM编译器。
关于nasm编译器的安装教程看这里:NASM安装教程
首先简单的输入一个显示字符的引导程序试试水:
org 0x7c00
base_of_stack equ 0x7c00
label_start:
mov ax, cs
mov ds, ax
mov es, ax
mov ss, ax
mov sp, base_of_stack
;=====================clear screen
mov ax, 0600h
mov bx, 0700h
mov cx, 0
mov dx, 184fh
int 10h
;=====================set focus
mov ax, 0200h
mov bx, 0000h
mov dx, 0000h
int 10h
;=====================display on the screen
mov ax, 1301h
mov bx, 000fh
mov dx, 0000h
mov cx, 10
push ax,
mov ax, ds
mov es, ax
pop ax,
mov bp, start_boot_message
int 10h
;=====================reset floppy
xor ah, ah
xor dl, dl
int 13h
jmp $
start_boot_message: db "Howard Wonanut"
;=====================fill zero until whole sector
times 510 - ($- $$) db 0
dw 0xaa55
写好程序之后使用nasm工具编译,编译命令:nasm boot.asm -o boot.bin
3. 创建虚拟软盘镜像文件
在安装好的Bochs根目录下的bin文件夹内有一个bximage工具可以帮助我们创建虚拟软盘镜像文件。创建一个1.44M的软盘操作过程如下图:
注意:一定要使用sudo,要不然创建会失败,并提示错误“ERROR: flat file is not writable”
4. 将编译的内容写入到虚拟软盘镜像文件内。
这里使用的是dd命令:
dd if=boot.bin of=../../../Documents/bochs/boot.img bs=512 count=1 conv=notrunc
其中的if指定输入源文件名,of指定输出文件名。因此这条指令需要在编译好的引导程序文件夹执行。
5. 启动!
经过前面的一系列工作,现在我们的引导程序应该可以运行了。到bochs根目录输入下面的命令启动虚拟机:
bin/bochs -f ./bochsrc.disk
本文标签: 操作系统程序BootLoader
版权声明:本文标题:64位操作系统设计与实现1——BootLoader引导启动程序 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1727012671a1094196.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论