无忧启动论坛

标题: 请问如何在BCD上添加grub2启动项 [打印本页]

作者: lbw2007    时间: 2015-12-21 20:11
标题: 请问如何在BCD上添加grub2启动项
本帖最后由 lbw2007 于 2016-8-7 09:02 编辑

最近安装了linux,本以为BIOS+MBR的启动方式能简单一些,万万没想到找不到grub2的启动内核文件(core.img之类的),而且将grub2从mbr复制到linux所在分区的pbr上也无法启动(不是很懂,难道是将分区表信息复制过来了?)
也尝试过用grub4dos引导,但是grub4dos提示无法挂载分区,也无法搜索到ext3分区内部的文件,不知道为什么。
从来没玩过linux引导,现在是一头雾水,正在用着linux安装过程中自动创建的grub2双启动菜单。
启动方式为Legacy Boot,linux为Fedora 19。最近有几个朋友在研究grub2,哪位大神能提供一点线索?
贴出linux的boot目录中所有文件

linux全部都安装在逻辑分区里面,用bootice查看EBR信息除了分区起始位置和55AA剩下的都为0。要不是mbr里面清清楚楚写着GRUB2我都怀疑它到底是什么引导了……
而且一旦用bootice重新配置GRUB2就会造成无法启动。说明至少主启动程序还在前62个扇区内,而且和bootice的grub2不一样。
作者: q8155128    时间: 2015-12-21 20:29
linux系统俺不懂。。。

给不了大师您什么帮助。。。

唯一的帮助就是人工置顶一次    。。。


作者: 寒风飘过    时间: 2015-12-22 02:40
本帖最后由 寒风飘过 于 2015-12-22 02:50 编辑





切换自如   你BPR没保存好。以前我做的时候 win的引导死活切换不到G2。  G4D SYSLINUX都成功。






作者: 寒风飘过    时间: 2015-12-22 02:58
不好意思哈  误导你了   我的是bootmgr加载不了syslinux      syslinux才是需要pbr的,你的引导代码有误,自己检查下。
作者: lbw2007    时间: 2015-12-22 08:16
寒风飘过 发表于 2015-12-22 02:58
不好意思哈  误导你了   我的是bootmgr加载不了syslinux      syslinux才是需要pbr的,你的引导代码有误, ...

你好,你的意思是即使是grub2也是要通过PBR进行启动的是吗,但是我通过xorboot直接加载PBR无效啊?通过grldr加载甚至连分区都无法挂载。
grub2以前我也用过,但是从来没有引导过linux。
感谢说明!根据你的思路回去研究一下PBR
作者: lbw2007    时间: 2015-12-22 11:53
2011kenfance 发表于 2015-12-22 11:16


你好,这个是我grub2里面的全部文件,请问加载哪一个?


作者: lbw2007    时间: 2015-12-22 12:10
暂时先不考虑UEFI启动。这是boot/grub2文件夹下的所有文件



请大家帮帮忙,也不一定非要grub2启动,
grub4dos、xorboot、bootmgr都可以接受。但是现在确实无从下手
作者: lbw2007    时间: 2015-12-22 12:31
这是grub2.conf的双启菜单:
  1. #
  2. # DO NOT EDIT THIS FILE
  3. #
  4. # It is automatically generated by grub2-mkconfig using templates
  5. # from /etc/grub.d and settings from /etc/default/grub
  6. #

  7. ### BEGIN /etc/grub.d/00_header ###
  8. if [ -s $prefix/grubenv ]; then
  9.   load_env
  10. fi
  11. if [ "${next_entry}" ] ; then
  12.    set default="${next_entry}"
  13.    set next_entry=
  14.    save_env next_entry
  15.    set boot_once=true
  16. else
  17.    set default="${saved_entry}"
  18. fi

  19. if [ x"${feature_menuentry_id}" = xy ]; then
  20.   menuentry_id_option="--id"
  21. else
  22.   menuentry_id_option=""
  23. fi

  24. export menuentry_id_option

  25. if [ "${prev_saved_entry}" ]; then
  26.   set saved_entry="${prev_saved_entry}"
  27.   save_env saved_entry
  28.   set prev_saved_entry=
  29.   save_env prev_saved_entry
  30.   set boot_once=true
  31. fi

  32. function savedefault {
  33.   if [ -z "${boot_once}" ]; then
  34.     saved_entry="${chosen}"
  35.     save_env saved_entry
  36.   fi
  37. }

  38. function load_video {
  39.   if [ x$feature_all_video_module = xy ]; then
  40.     insmod all_video
  41.   else
  42.     insmod efi_gop
  43.     insmod efi_uga
  44.     insmod ieee1275_fb
  45.     insmod vbe
  46.     insmod vga
  47.     insmod video_bochs
  48.     insmod video_cirrus
  49.   fi
  50. }

  51. terminal_output console
  52. set timeout=5
  53. ### END /etc/grub.d/00_header ###

  54. ### BEGIN /etc/grub.d/10_linux ###
  55. menuentry 'Fedora, with Linux 3.9.5-301.fc19.x86_64' --class fedora --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.9.5-301.fc19.x86_64-advanced-e8b9a034-22ef-4e21-b0b1-0902d59f9a9a' {
  56.     load_video
  57.     set gfxpayload=keep
  58.     insmod gzio
  59.     insmod part_msdos
  60.     insmod ext2
  61.     set root='hd0,msdos5'
  62.     if [ x$feature_platform_search_hint = xy ]; then
  63.       search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 --hint='hd0,msdos5'  cde6e1dd-3deb-4b52-bdea-94c6cbbff683
  64.     else
  65.       search --no-floppy --fs-uuid --set=root cde6e1dd-3deb-4b52-bdea-94c6cbbff683
  66.     fi
  67.     linux    /vmlinuz-3.9.5-301.fc19.x86_64 root=/dev/mapper/fedora_bogon-root ro rd.md=0 rd.dm=0 rd.lvm.lv=fedora_bogon/root vconsole.keymap=us  rd.luks=0 vconsole.font=latarcyrheb-sun16 rd.lvm.lv=fedora_bogon/swap rhgb quiet
  68.     initrd    /initramfs-3.9.5-301.fc19.x86_64.img
  69. }
  70. menuentry 'Fedora, with Linux 0-rescue-7725dfc225d14958a625ddaaaea5962b' --class fedora --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-0-rescue-7725dfc225d14958a625ddaaaea5962b-advanced-e8b9a034-22ef-4e21-b0b1-0902d59f9a9a' {
  71.     load_video
  72.     insmod gzio
  73.     insmod part_msdos
  74.     insmod ext2
  75.     set root='hd0,msdos5'
  76.     if [ x$feature_platform_search_hint = xy ]; then
  77.       search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 --hint='hd0,msdos5'  cde6e1dd-3deb-4b52-bdea-94c6cbbff683
  78.     else
  79.       search --no-floppy --fs-uuid --set=root cde6e1dd-3deb-4b52-bdea-94c6cbbff683
  80.     fi
  81.     linux    /vmlinuz-0-rescue-7725dfc225d14958a625ddaaaea5962b root=/dev/mapper/fedora_bogon-root ro rd.md=0 rd.dm=0 rd.lvm.lv=fedora_bogon/root vconsole.keymap=us  rd.luks=0 vconsole.font=latarcyrheb-sun16 rd.lvm.lv=fedora_bogon/swap rhgb quiet
  82.     initrd    /initramfs-0-rescue-7725dfc225d14958a625ddaaaea5962b.img
  83. }

  84. ### END /etc/grub.d/10_linux ###

  85. ### BEGIN /etc/grub.d/20_linux_xen ###

  86. ### END /etc/grub.d/20_linux_xen ###

  87. ### BEGIN /etc/grub.d/20_ppc_terminfo ###
  88. ### END /etc/grub.d/20_ppc_terminfo ###

  89. ### BEGIN /etc/grub.d/30_os-prober ###
  90. menuentry 'Windows 8 (loader) (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-0003-5C78' {
  91.     insmod part_msdos
  92.     insmod fat
  93.     set root='hd0,msdos1'
  94.     if [ x$feature_platform_search_hint = xy ]; then
  95.       search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  0003-5C78
  96.     else
  97.       search --no-floppy --fs-uuid --set=root 0003-5C78
  98.     fi
  99.     drivemap -s (hd0) ${root}
  100.     chainloader +1
  101. }
  102. menuentry 'Windows 8 (loader) (on /dev/sda2)' --class windows --class os $menuentry_id_option 'osprober-chain-000A37880008179F' {
  103.     insmod part_msdos
  104.     insmod ntfs
  105.     set root='hd0,msdos2'
  106.     if [ x$feature_platform_search_hint = xy ]; then
  107.       search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos2 --hint-efi=hd0,msdos2 --hint-baremetal=ahci0,msdos2 --hint='hd0,msdos2'  000A37880008179F
  108.     else
  109.       search --no-floppy --fs-uuid --set=root 000A37880008179F
  110.     fi
  111.     drivemap -s (hd0) ${root}
  112.     chainloader +1
  113. }
  114. ### END /etc/grub.d/30_os-prober ###

  115. ### BEGIN /etc/grub.d/40_custom ###
  116. # This file provides an easy way to add custom menu entries.  Simply type the
  117. # menu entries you want to add after this comment.  Be careful not to change
  118. # the 'exec tail' line above.
  119. ### END /etc/grub.d/40_custom ###

  120. ### BEGIN /etc/grub.d/41_custom ###
  121. if [ -f  ${config_directory}/custom.cfg ]; then
  122.   source ${config_directory}/custom.cfg
  123. elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  124.   source $prefix/custom.cfg;
  125. fi
  126. ### END /etc/grub.d/41_custom ###
复制代码

作者: lbw2007    时间: 2015-12-22 14:30
2011kenfance 发表于 2015-12-22 14:01
你要从网上下载G2LDR,G2LDR.MBR两个文件放在根目录


其实我想问的重点是下一步:
G2LDR.MBR去引导哪一个文件?我的PBR是空的(至少我在分区表中看不到)
作者: lbw2007    时间: 2015-12-22 23:09
本帖最后由 lbw2007 于 2015-12-23 11:37 编辑

功夫不负有心人,成功了,
在这里分享给像我一样的小白:

一开始的思路是错的,忽略了core.img,直接去引导core.img是最简单最直接的。只是文件夹和文件名称被改了就把我给难住了,很失败……
现在我的引导方式是grub4dos——grub2。
菜单如下:
  1. root (hd0,4)
  2. kernel /grub2/i386-pc/core.img
  3. boot
复制代码

接下来的工作是想办法直接用grub4dos去引导vmlinuz,之前一直失败。
在此也感谢楼上们的帮助!
作者: lsc1117    时间: 2016-5-8 21:11
2011kenfance 发表于 2015-12-22 11:16

可以分享一下这个BCD文件吗?
作者: chromatin2    时间: 2016-5-27 15:17
G2LDR.MBR引导的是g2ldr
作者: lsc1117    时间: 2016-6-28 11:46
寒风飘过 发表于 2015-12-22 02:40
切换自如   你BPR没保存好。以前我做的时候 win的引导死活切换不到G2。  G4D SYSLINUX都成功。

...

一直不上线吗?求分享你这个PE(包括BCD文件在内)的模板,如果能整个PE分享就再好不过了。




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3