|
没想到这么简单的一个问题我翻了三页,也没有找到一个完善的答案。更让我想不到的是,lianjiang写了grub4dos的入门教程,竟然也不完全了解grub.exe的作用。
lianjiang前面写了一些grldr和grub.exe的区别和联系,但不全面。而18楼则只是讲了grldr和grldr.mbr的区别和联系。
grldr和grub.exe都是grub4dos的主体文件,也就是说作为grub4dos的主体来说,二者是相同的,只不过相当于grub4dos穿了两件不同的衣服,也就是包装方式不同。之所以包装方式不同,是为了适应不同的启动环境的,grub4dos的设计中就尽可能考虑并照顾到了让其他启动管理软件方便的加载自己。其中grldr是为了方便被boot.ini(也就是ntldr)加载的,当然,grub4dos的mbr代码(也包括grldr.mbr)寻找的主体也是grldr,这一引导方式都是通过引导扇区的形式加载主体。而grub.exe最初是为了方便在dos环境下加载而设计的,实际上,grub4dos之所以叫grub for DOS,就是因为它最早由不点从linux下转移到了dos环境应用(我个人推测grub.exe的出现应该早于grldr,当然,仅是推测,因为我不了解grub4dos的初期发展情况),而grub.exe后来不断发展,可以经由dos命令行和win98的命令窗口直接启动(甚至还可以再返回dos或98),也可以通过config.sys以device形式加载。而且,再后来,grub.exe本身还兼容linux的内核格式,也就是说凡是支持linux内核加载的引导器都可以通过加载grub.exe来启动grub4dos,例如syslinux(pxelinux)及grub4dos自身的kernel命令,linux下的kexec,甚至dos下的loadlin,linux下的lilo等,都可以通过这种方式加载grub.exe并启动grub4dos。
既然grldr和grub.exe都是grub4dos的主体,为什么不将它们两个合成一个文件?这个问题只能用人力有时而穷来解答,也就是说,一个文件无法兼容所有的格式,只好分成多个,或许将来技术发展了,这个问题有可能得到解决。
另外,bootlace.com也是一个两栖程序,它既可以运行于dos环境,也可以运行于linux环境,也就是说,它同时是dos和linux下的可执行程序。 |
|