操作系统开发系列—12.a.从Loader到内核 ●

Loader要做两项工作,我们先来做第一项,把内核加载到内存:

1.加载内核到内存。

2.跳入保护模式。

 首先编译无内核时:

nasm boot.asm -o boot.bin

nasm loader.asm -o loader.bin

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

sudo mount -o loop a.img /mnt/hgfs/

sudo cp loader.bin /mnt/hgfs/ -v

sudo umount /mnt/hgfs/

运行结果如下:

接下来编译内核并将其写入软盘映像:

nasm -f elf -o kernel.o kernel.asm

ld -m elf_i386 -s -o kernel.bin kernel.o

sudo mount -o loop a.img /mnt/hgfs/

sudo cp kernel.bin /mnt/hgfs/ -v

sudo umount /mnt/hgfs/

运行结果如下:

不再是“No KERNEL”了,我们看到,Loading后面出现一个圆点,说明Loader读了一个扇区。不过,由于目前我们除了把内核加载到内存之外没有做其他任何工作,所以除了能看到“Ready.”之外,并没有其他现象出现。

一个码农的日常 

源码

原文地址:https://www.cnblogs.com/joey-hua/p/5399712.html