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的目录中,生成磁盘映像文件。卸载即可生成。如何制作映像文件在此不阐述。

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

221600_Ij5j_1391394.png

引导成功

转载于:https://my.oschina.net/kkkkkkkkkkkkk/blog/899322

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值