|
修改很简单的 setupldr.bin不能被syslinux直接启动
需要mkimage程序进行转换
同时还需要 ldntldr.bin文件做文件头
怎么都不翻旧帖子呢。。。
利用loadbin在不同的启动管理器中启动grub,grub2,grub4dos 和 ntldr
loadbin是grubutil里的一个新加工具,它可以把各种系统文件转化为Linux内核的格式,从而达到在多个启动管理器里启动的目的。
对于不同的启动文件,loadbin提供相应的头文件,
可以用三种方式启动系统文件,以ntldr为例:
1,直接使用头文件ldntldr.bin。以头文件作为内核,ntldr作为initrd:
kernel ldntldr.bin
initrd ntldr
boot
2,利用mkimage工具把头文件和系统文件结合起来,生成单一的启动文件:
mkimage ldntldr.bin ntldr ntldr.bin
mkimage ldntldr.bin grldr grldr.bin
然后把ntldr.bin作为内核就行了:
kernel ntldr.bin
boot
由于不少的启动管理器在启动Linux内核时不会传递正确的DL值,因此需要在头文件里进行设置,你可以使用-x参数在生成单一的启动文件时指定DL值,例如:
mkimage -x 0x80 ldntldr.bin ntldr ntldr.bin
有些系统,例如grub2,还支持分区参数,你可以用以下方式来指定:
mkimage -x 0x80,0 ldgrub2.bin core.img grub2.bin
这样启动后grub2会自动把根设备设为第一只硬盘第一个主分区(hd0,1)。
如果是在CDROM里启动,可以使用设备号0xe0,比如
mkimage -x 0xe0 ldgrub.bin stage2 grub.bin
这样,grub启动后就可以利用(cd)设备来访问文件了。
3,同2一样,先生成单一的启动文件ntldr.bin,然后可以利用grldr.mbr启动:
安装到mbr:
grubinst -b=ntldr.bin DEVICE
生成相应的ntldr.mbr,在boot.ini里启动:
grubinst -o -b=ntldr.bin ntldr.mbr
目前支持的启动文件格式:
1,GRUB Legacy
头文件ldgrub.bin,对应的系统文件是stage2
2,GRUB2
头文件是ldgrub2.bin,对应的系统文件是core.img
3,GRUB4DOS和NTLDR
头文件是ldntldr.bin,对应的系统文件是ntldr和grldr
至于启动管理器,只要它支持Linux内核格式,就可以使用loadbin,这其中包括grub legacy, grub2, grub4dos, syslinux/isolinux/pxelinux, lilo等等。
下载地址:
http://download.gna.org/grubutil/ |
|