当前位置: 技术问答>linux和unix
如何写一个boot loader?
来源: 互联网 发布时间:2015-08-03
本文导语: 想写一个boot loader,能引导Linux和Windows就可以了。 lilo和grub的代码太多太多,看起来没有头绪。 又很多问题没有解决,。 1、对loader的位置有些模糊 loader的代码位置应该在0磁道,0磁头,1扇区,但在安装loader之...
想写一个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是不需要的,只要把指令从磁盘上读到内存的指定位置就可以了,而不用关心文件系统,这种想法正确吗?
谢谢大家,欢迎讨论
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是不需要的,只要把指令从磁盘上读到内存的指定位置就可以了,而不用关心文件系统,这种想法正确吗?
谢谢大家,欢迎讨论
|
你说的问题,我前几天和一个朋友探论过。要说明白可能有点难。
第一,你说的bootsect.S,你可以放到硬盘的CHS 00*里。因为对于操作系统来说,能看到的是CHS 101
你可以自己写完boot如果确认后,再从CHS00* 读入老的bootsect.S再来执行。你可以读bootsect.S来执行也可不用,看你自己要求。
第二:如果内核是通过文件系统存放的,那一定要通过文件系统来读,而不能只接用INT来读。
第一,你说的bootsect.S,你可以放到硬盘的CHS 00*里。因为对于操作系统来说,能看到的是CHS 101
你可以自己写完boot如果确认后,再从CHS00* 读入老的bootsect.S再来执行。你可以读bootsect.S来执行也可不用,看你自己要求。
第二:如果内核是通过文件系统存放的,那一定要通过文件系统来读,而不能只接用INT来读。