LiteOS-grup引导

梦想游戏人
目录:
汇编

上篇降到自己实现MBR的引导,但是要进入系统入口还需要做很多事情,利用grup来帮助我们引导系统,

grup 能引导多系统

http://blog.csdn.net/xiaoyi23000/article/details/50504527

MBOOT_MAGIC  equ 0x1BADB002;
MBOOT_FLAGS  equ 0x00;
MBOOT_CHECKSUM  equ -(MBOOT_MAGIC + MBOOT_FLAGS);

[BITS 32]

section .text
  dd  MBOOT_MAGIC
  dd  MBOOT_FLAGS
  dd  MBOOT_CHECKSUM
  dd  start

[GLOBAL start]
[EXTERN kernel_entry]
start:
  cli;禁止中断,保护模式下不能用bios提供的中断功能
  call kernel_entry; 调用内核入口函数
  jmp $

从这里开始就可以开始用C语言来写内核代码了。

由于windows 下的gcc还不支持elf_i386,只支持i386pe格式,因此要链接的话,只有在linux下的gcc来链接了。

kernel.c

const   char *VGA_BUFFER = (const char*)0x000b8000;// vga 显存开始地址

int kernel_entry()
{
	while (1);
	return 0;
}

编译引导:nasm -f elf boot.asm -o boot.o

编译内核代码:gcc -masm=intel -c -nostdlib kernel.c -o boot.o

链接引导和内核代码:ld  -T link.ld -m elf_i386 -nostdlib boot.o kernel.o -o kernel

mnt挂载后,然后把kernel放在grup的目录中,生成磁盘映像文件。卸载即可生成。如何制作映像文件在此不阐述。

生成的映像文件作为虚拟机的启动程序

引导成功

Scroll Up