孤星1119 发表于 2021-8-7 16:54:55

自制了引导加载程序

本帖最后由 孤星1119 于 2021-10-10 20:27 编辑

啥是“引导加载程序”?问一问百度:
Boot Loader 是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
先看一看图片,我所自制的Boot Loader是什么?

首先启动电脑时,选U盘(USB棒)作为Boot Device:



然后你会看到"Hi"字样,就这么简单。




我是如何做到的?

参考了Redox OS的开源代码,我整理出这个Boot Loader.
format binary as 'img'
org 7C00h

      xor   ax,ax
      mov   ds,ax      
      mov   es,ax
      mov   ss,ax
      mov   sp,7C00h
      push    ax
      push    start
      retf

start:
      mov   al,72                ; "H"
      call      print
      mov   al,105                ; "i"
      call      print
      jmp   $

print:
            pusha
            mov   bx, 7                ; Foreground color
            mov   ah, 0eh                ; Write Character in Teletype (TTY) Mode
            int   10h
            popa
            ret

rb 7C00h+510-$
dw 0AA55h


上述汇编代码必须用Flat Assembler来编译成镜像文件(boot.asm --> boot.img)。

之后再刻录到U盘,或用虚拟机来测试。

如果你是用Linux, 只需键入以下命令行指令:
./fasm boot.asm
sudo dd if=boot.img of=/dev/sdb

如果你是用Windows,可以使用ISO刻录软件。

虽然我没有真正开发操作系统内核,不过很高兴能够用自己的小程序启动电脑。:lol







simonzhd 发表于 2021-8-7 19:43:38

不明觉厉,能开发底层语言程序的某种程度上都是大牛{:10_455:}

孤星1119 发表于 2021-8-7 21:09:26

simonzhd 发表于 2021-8-7 19:43
不明觉厉,能开发底层语言程序的某种程度上都是大牛

他们是,我不是,毕竟自己是精神病人。无论如何,十分感谢你的称赞。

一般上我的专注力不强,都是喜欢做些感兴趣的项目,不能赚钱,也对社会没有贡献。哈哈。

simonzhd 发表于 2021-8-8 09:36:17

孤星1119 发表于 2021-8-7 21:09
他们是,我不是,毕竟自己是精神病人。无论如何,十分感谢你的称赞。

一般上我的专注力不强,都是喜欢做 ...

嗯,自得其乐就好~

james007 发表于 2021-8-8 11:48:10

孤星,还是很棒的啊

蓝莓糖 发表于 2021-8-9 14:12:04

Hi!

孤星1119 发表于 2021-8-11 19:16:03

本帖最后由 孤星1119 于 2021-10-10 20:26 编辑





页: [1]
查看完整版本: 自制了引导加载程序