如何写一个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是不需要的,只要把指令从磁盘上读到内存的指定位置就可以了,而不用关心文件系统,这种想法正确吗?

谢谢大家,欢迎讨论
...全文
198 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangl2000 2004-10-11
  • 打赏
  • 举报
回复
你说的问题,我前几天和一个朋友探论过。要说明白可能有点难。

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

4,465

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧