【分享】使用 g2ldr 通过 windows 启动菜单引导 Ubuntu 9.10(附制作方法)

启动讨论 grub/grub2/syslinux/grub4dos/Lilo
回复
头像
onshoestring
论坛版主
帖子: 4666
注册时间: 2009-09-06 5:53

Re: 【分享】从 9.10 的 grub2 制作 g2ldr,并从 win 菜单启动(12月2日更新)

#16

帖子 onshoestring » 2009-12-02 22:50

请教一下
这几个参数是干什么的:-d /boot/grub -o ~/core.img
这句是干什么的cat /boot/grub/lnxboot.img ~/core.img > ~/g2ldr
g2ldr.mbr从那里来的?用dd命令从mbr生成的?
上次由 onshoestring 在 2009-12-02 23:05,总共编辑 1 次。
mancomeon
帖子: 131
注册时间: 2008-05-14 14:18

Re: 【分享】从 9.10 的 grub2 制作 g2ldr,并从 win 菜单启动(12月2日更新)

#17

帖子 mancomeon » 2009-12-02 23:05

不知道 multiboot 是什么意思??
和linux命令有什么不同?

现在新版本的Grub2有没有办法加载硬盘上的ISO文件,并启动它?
头像
ptptptptptpt
帖子: 3711
注册时间: 2006-09-19 18:16

Re: 【分享】从 9.10 的 grub2 制作 g2ldr,并从 win 菜单启动(12月2日更新)

#18

帖子 ptptptptptpt » 2009-12-02 23:20

onshoestring 写了:请教一下
这几个参数是干什么的:-d /boot/grub -o ~/core.img
这句是干什么的cat /boot/grub/lnxboot.img ~/core.img > ~/g2ldr
g2ldr.mbr从那里来的?用dd命令从mbr生成的?
-d /boot/grub 指定创建 core.img 的文件的来源
-o ~/core.img 指定输出文件
详见 grub-mkimage -h

cat /boot/grub/lnxboot.img ~/core.img > ~/g2ldr 就是把那两个文件合成一个。lnxboot.img 对启动很关键,具体机制得看源码了。

g2ldr.mbr 是在 windows 下用 grubinst.exe 生成的。 http://grub4dos.sourceforge.net/wiki/in ... B%E7%BB%8D
头像
ptptptptptpt
帖子: 3711
注册时间: 2006-09-19 18:16

Re: 【分享】从 9.10 的 grub2 制作 g2ldr,并从 win 菜单启动(12月2日更新)

#19

帖子 ptptptptptpt » 2009-12-02 23:26

mancomeon 写了:不知道 multiboot 是什么意思??
和linux命令有什么不同?

现在新版本的Grub2有没有办法加载硬盘上的ISO文件,并启动它?
grub1 里面的 kernel 命令,到了 grub2 里面,分解为多个——
linux:加载 linux 内核
linux16:应该是加载实模式 linux 内核
multiboot:加载 multiboot 格式内核。core.img 就是 multiboot 格式的。
......

Grub2 可以挂载 iso 文件,可以读取 iso 中的文件,但不能把它当成光驱启动。

menuentry "Boot ubuntu 9.10 desktop iso" {
insmod loopback
insmod iso9660
loopback loop (hd0,5)/ubuntu9.10.iso
linux (loop)/casper/vmlinuz boot=casper noacpi iso-scan/filename=/ubuntu9.10.iso ro quiet splash --
initrd (loop)/casper/initrd.lz
}
头像
smallapple
论坛版主
帖子: 7868
注册时间: 2009-03-28 15:12

Re: 【分享】从 9.10 的 grub2 制作 g2ldr,并从 win 菜单启动(12月2日更新)

#20

帖子 smallapple » 2009-12-02 23:32

ptptptptptpt,
是否可以考虑把主要模块都放到g2ldr下,然后用 configfile 来调用 grub.cfg ?
头像
ptptptptptpt
帖子: 3711
注册时间: 2006-09-19 18:16

Re: 【分享】从 9.10 的 grub2 制作 g2ldr,并从 win 菜单启动(12月2日更新)

#21

帖子 ptptptptptpt » 2009-12-02 23:39

smallapple 写了:ptptptptptpt,
是否可以考虑把主要模块都放到g2ldr下,然后用 configfile 来调用 grub.cfg ?
有想过,只是考虑到 ubuntu 中的 grub 会升级,以后的 grub.cfg 可能会跟现在做的 g2ldr 不兼容。
而 core.img 永远是 multiboot 格式

而且,貌似 grub2 必须得搭配一个默认目录。我好像试过只放一个 g2ldr 和 g2ldr.mbr 在C盘,会出错。但也可能是别的原因,懒得琢磨了。我能忍受多一个目录。你要是喜欢干净,可以研究一下 :em01
jisare
帖子: 42
注册时间: 2007-06-22 17:49

Re: 【分享】从 9.10 的 grub2 制作 g2ldr,并从 win 菜单启动(12月2日更新)

#22

帖子 jisare » 2009-12-03 14:51

请教bean/pt/smallapple
此方法生成的g2ldr可以直接引导c盘grub2目录下grub.cfg文件中的以下项目吗?

代码: 全选

menuentry ubuntu9.10
{
set root=...
linux ...
initrd ...
}
还是一定要引导core.img?

我试了一下,或者uuid找不到,删除uuid那一行,提示文件找不到
头像
smallapple
论坛版主
帖子: 7868
注册时间: 2009-03-28 15:12

Re: 【分享】从 9.10 的 grub2 制作 g2ldr,并从 win 菜单启动(12月2日更新)

#23

帖子 smallapple » 2009-12-03 15:03

要直接使用要把相关模块编进去,我不清楚UUID包含在哪个模块内。把 search 和 normal 加进去试试
bean
帖子: 238
注册时间: 2008-06-03 12:25

Re: 【分享】从 9.10 的 grub2 制作 g2ldr,并从 win 菜单启动(12月2日更新)

#24

帖子 bean » 2009-12-03 15:34

smallapple 写了:要直接使用要把相关模块编进去,我不清楚UUID包含在哪个模块内。把 search 和 normal 加进去试试
搜索uuid的功能在search里面。
bean
帖子: 238
注册时间: 2008-06-03 12:25

Re: 【分享】从 9.10 的 grub2 制作 g2ldr,并从 win 菜单启动(12月2日更新)

#25

帖子 bean » 2009-12-03 15:41

ptptptptptpt 写了:
smallapple 写了:ptptptptptpt,
是否可以考虑把主要模块都放到g2ldr下,然后用 configfile 来调用 grub.cfg ?
有想过,只是考虑到 ubuntu 中的 grub 会升级,以后的 grub.cfg 可能会跟现在做的 g2ldr 不兼容。
而 core.img 永远是 multiboot 格式

而且,貌似 grub2 必须得搭配一个默认目录。我好像试过只放一个 g2ldr 和 g2ldr.mbr 在C盘,会出错。但也可能是别的原因,懒得琢磨了。我能忍受多一个目录。你要是喜欢干净,可以研究一下 :em01
其实可以用source (.) 命令来导入grub.cfg的内容,然后外加一个引导grub2的项以防万一,比如说:

代码: 全选

search --set -f /boot/grub/grub.cfg
source /boot/grub/grub.cfg

menuentry "Boot grub2" {
  multiboot /boot/grub/core.img
  boot
}
头像
ptptptptptpt
帖子: 3711
注册时间: 2006-09-19 18:16

Re: 【分享】从 9.10 的 grub2 制作 g2ldr,并从 win 菜单启动(12月2日更新)

#26

帖子 ptptptptptpt » 2009-12-03 16:27

jisare 写了:请教bean/pt/smallapple
此方法生成的g2ldr可以直接引导c盘grub2目录下grub.cfg文件中的以下项目吗?

代码: 全选

menuentry ubuntu9.10
{
set root=...
linux ...
initrd ...
}
还是一定要引导core.img?

我试了一下,或者uuid找不到,删除uuid那一行,提示文件找不到
应该可以的。你看看 set root=... 是不是弄错分区号了

要不贴一下 sudo fdisk -l 的结果给大伙看看
头像
ptptptptptpt
帖子: 3711
注册时间: 2006-09-19 18:16

Re: 【分享】从 9.10 的 grub2 制作 g2ldr,并从 win 菜单启动(12月2日更新)

#27

帖子 ptptptptptpt » 2009-12-03 16:34

bean 写了: 其实可以用source (.) 命令来导入grub.cfg的内容,然后外加一个引导grub2的项以防万一,比如说:

代码: 全选

search --set -f /boot/grub/grub.cfg
source /boot/grub/grub.cfg

menuentry "Boot grub2" {
  multiboot /boot/grub/core.img
  boot
}
恩,确实。不过出来的菜单恐怕会有点乱 :em06

对了,这个 source 是把整个 grub.cfg 导进来呢,还是只导入 menuentrys ?
mancomeon
帖子: 131
注册时间: 2008-05-14 14:18

Re: 【分享】从 9.10 的 grub2 制作 g2ldr,并从 win 菜单启动(12月2日更新)

#28

帖子 mancomeon » 2009-12-03 16:37

Pt:
请教一事:

代码: 全选

grub-mkimage -d /boot/grub -p /grub2 -o ~/core.img part_msdos biosdisk fat ntfs ext2 reiserfs
cat /boot/grub/lnxboot.img ~/core.img > ~/g2ldr
用上面命令产生的文件 g2ldr,其实应该是所谓的g2ldr.mbr吧?

因为是这样的:我把这个g2ldr放到C盘,用win7可以引导启动它。但是我看网上说到,win7的话,只能引导g2ldr.mbr文件,而不能引导 g2ldr.

另外一个问题是关于上面说到的引导ISO文件:
像Ubuntu ISO这种可以像你写的那样引导之,但如果其它一些可引导ISO文件(举例如 winpe.iso),当中并无
/casper/vmlinuz 和/casper/initrd.lz文件 ,又当如何?
bean
帖子: 238
注册时间: 2008-06-03 12:25

Re: 【分享】从 9.10 的 grub2 制作 g2ldr,并从 win 菜单启动(12月2日更新)

#29

帖子 bean » 2009-12-03 16:42

ptptptptptpt 写了:
bean 写了: 其实可以用source (.) 命令来导入grub.cfg的内容,然后外加一个引导grub2的项以防万一,比如说:

代码: 全选

search --set -f /boot/grub/grub.cfg
source /boot/grub/grub.cfg

menuentry "Boot grub2" {
  multiboot /boot/grub/core.img
  boot
}
恩,确实。不过出来的菜单恐怕会有点乱 :em06

对了,这个 source 是把整个 grub.cfg 导进来呢,还是只导入 menuentrys ?
source是全部设置都导入的。
头像
ptptptptptpt
帖子: 3711
注册时间: 2006-09-19 18:16

Re: 【分享】从 9.10 的 grub2 制作 g2ldr,并从 win 菜单启动(12月2日更新)

#30

帖子 ptptptptptpt » 2009-12-03 16:45

mancomeon 写了:Pt:
请教一事:

代码: 全选

grub-mkimage -d /boot/grub -p /grub2 -o ~/core.img part_msdos biosdisk fat ntfs ext2 reiserfs
cat /boot/grub/lnxboot.img ~/core.img > ~/g2ldr
用上面命令产生的文件 g2ldr,其实应该是所谓的g2ldr.mbr吧?

因为是这样的:我把这个g2ldr放到C盘,用win7可以引导启动它。但是我看网上说到,win7的话,只能引导g2ldr.mbr文件,而不能引导 g2ldr.
不是的,出来的是 g2ldr 而不是 g2ldr.mbr 。关于 g2ldr.mbr 请看20楼。
win7 不能直接引导体积大于 64K 的g2ldr,但小于 64k 的可以。
而XP只能装入8K,所以必须使用g2ldr.mbr。
xp可以直接使用 grldr 是因为 grldr 开头的8K就是 grldr.mbr。
因此,综合考虑,还是建议统一都使用 g2ldr.mbr 。

mancomeon 写了: 另外一个问题是关于上面说到的引导ISO文件:
像Ubuntu ISO这种可以像你写的那样引导之,但如果其它一些可引导ISO文件(举例如 winpe.iso),当中并无
/casper/vmlinuz 和/casper/initrd.lz文件 ,又当如何?
没有办法,目前 :em04
回复