如何写一个boot loader?

akyca 2004-10-11 04:48:13
想写一个boot loader,能引导Linux和Windows就可以了。
lilo和grub的代码太多太多,看起来没有头绪。
又很多问题没有解决,。

1、对loader的位置有些模糊
loader的代码位置应该在0磁道,0磁头,1扇区,但在安装loader之前,这里存放的是内核的代码,对于Linux系统是bootsect.S。安装loader之后,这里是loader的代码,那么loader把bootsect.S的代码转移到哪里去了呢?
在loader中选中linux系统后,是否还是按照linux正常的启动顺序呢?(bootsect.S-->setup.S-->head.S)

2、loader需要加载并识别内核的能力。
这是否意味着loader需要从FAT32和ext2文件系统中读取内核代码。个人觉得一个简单的loader是不需要的,只要把指令从磁盘上读到内存的指定位置就可以了,而不用关心文件系统,这种想法正确吗?

谢谢大家,欢迎讨论
...全文
131 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yangl2000 2004-10-11
你说的问题,我前几天和一个朋友探论过。要说明白可能有点难。

第一,你说的bootsect.S,你可以放到硬盘的CHS 00*里。因为对于操作系统来说,能看到的是CHS 101
你可以自己写完boot如果确认后,再从CHS00* 读入老的bootsect.S再来执行。你可以读bootsect.S来执行也可不用,看你自己要求。
第二:如果内核是通过文件系统存放的,那一定要通过文件系统来读,而不能只接用INT来读。
回复
tukey 2004-10-11
up
回复
发动态
发帖子
Linux_Kernel
创建于2007-08-27

4006

社区成员

Linux/Unix社区 内核源代码研究区
申请成为版主
社区公告
暂无公告