Chinaunix首页 | 论坛 | 博客
  • 博客访问: 71829
  • 博文数量: 10
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 151
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-15 16:45
个人简介

多动脑,少走路。

文章分类
文章存档

2015年(4)

2014年(2)

2013年(4)

分类: LINUX

2014-11-26 10:04:38

在X86上开发系统有着很多工具可以使用。在Ubuntu环境下安装qemu虚拟机,可以虚拟一个硬件环境。使用qemu -fda floppy.img指令使虚拟的x86上电从软盘 floppy.img启动。如果启动盘里面安装有系统,接下来就会进入系统。所以说为我们去寻找硬件平台省去了很大的麻烦,接下来就可以直接进入内核镜像的制作装入软盘的工作
grub是一个开源的bootloader,可以实现把操作系统内核装进内存并跳转到内核。它的工作流程如下:

(1) BIOS执行INT 0x19,加载MBR至0x7c00并跳转执行。如果你安装GRUB到MBR, GRUB的安装程序会把Stage1(512B)拷贝到MBR。 

(2) Stage1开始执行,它在进行直接加载Stage1_5或者Stage2并跳转执行。不论是 哪种情况,这一步的结果都是Stage2开始运行了。 

(3) Stage2这个小型的操作系统终于开始正式运行了!它会把系统切入保护模式, 设置好C运行环境(主要是BSS)。他会先找Config文件(就是我们的 Menulist),如果没有的话就执行一个Shell,等待我们输入命令。然后Grub的工 作就是输入命令-解析命令-执行命令的循环,当然 Stage2本身是为加载其他操作系统而存在的,所以如果情况允许,在他执行Boot命令以后就会把控制权转交出去。 

把grub写入软盘,然后接下来的工作就是加载操作系统了。这里可以省去bootloader的过程,为内核开发带来极大的便利。
但是你的内核镜像要想被grub认识并加载(加载地址由内核镜像elf决定),还需要遵守一个标准:Grub Multiboot规范
下面两条指令是挂载软盘并把内核banana复制到软盘。
sudo mount -o loop floppy.img /mnt/kernel
sudo cp banana /mnt/kernel/banana


阅读(2681) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~