无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: hilsonma
打印 上一主题 下一主题

[分享] Grub2的简单使用

    [复制链接]
31#
 楼主| 发表于 2020-1-12 22:25:56 | 显示全部楼层
wangziqiang 发表于 2020-1-12 21:06
w大神的我在用,确实是挺方便的。你的菜单我也在用,两者各有千秋!顺便请教个问题,grub2菜单中当前目录 ...

grub2现在没有当前目录的变量,只有当前分区的变量root,grub2中叫root设备。
你在grub2命令行中输入set就可以看到当前grub2有哪些环境变量。
其中prefix是配置文件grub.cfg所在目录,cmdpath是启动文件bootx64.efi(grubx64.efi)所在目录,这两个变量在合适的时候可以使用。

在grub2中一般都是要使用全路径的,即设备名(分区)开始直到文件扩展名为止。多数时候可以省略设备名,这时默认根设备即root变量所指分区。部分命令可以使用相对路径,这时没有写全的部分都是使用命令默认值,如果不知道默认值就老实写全路径,这样可以减少路径出错。

点评

谢谢!  详情 回复 发表于 2020-1-13 02:34
回复

使用道具 举报

32#
 楼主| 发表于 2020-1-16 20:34:11 | 显示全部楼层
本帖最后由 hilsonma 于 2020-1-16 20:45 编辑
wangziqiang 发表于 2020-1-12 17:11
我好像在哪里见过,这种方式,定制时把所有文件打包,加载到内存,然后从内存加载,前几天我试了一下,失败 ...
@zhxy9804 @wangziqiang
附件就是你要的全打包方式。将附件的bootx64.efi替换到 \efi\boot\bootx64.efi 就是我的启动模板。
第一个菜单项启动Windows需要将附件的bcd放到 Windows分区 \Windows\Boot\EFI
第二个菜单项启动WinPE需要将你的PE镜像wim文件命名为pe.wim放到任一分区的根目录,包括藏到ESP.
第三个菜单项将任意分区根目录下的pe目录列为自动菜单,你也可以将你的菜单文件放到pe目录自动成为子菜单
boot.7z (833.71 KB, 下载次数: 79)

点评

你好,我想你还是没明白我说的意思,我的意思就是想要个模板 模板的作用就是搞明白逻辑结构,谁启动谁,谁引导谁 你也看到,我做过bootmgr的双启动模板,已经搞清了逻辑结构 现在这个uefi的grub2好搞,bios的呢,还是一头  详情 回复 发表于 2020-1-17 08:36
收到了,感谢啊  详情 回复 发表于 2020-1-16 21:36
回复

使用道具 举报

33#
 楼主| 发表于 2020-1-17 16:07:55 | 显示全部楼层
zhxy9804 发表于 2020-1-17 08:36
你好,我想你还是没明白我说的意思,我的意思就是想要个模板
模板的作用就是搞明白逻辑结构,谁启动谁,谁引 ...

其实我没有看到你做的bootmgr的双启动模板,所以不太明白你的意思。
bootmgr是ms在bios平台下的启动管理器,哪来的双启,如果是指bios/uefi双启,那ms的就是bootmgr/bootmgfw.efi,grub2的就是g2ldr/grubx64.efi/grubia32.efi
但你下面又来个双启动的bios模板,我就又不明白你的真实意愿了,我搞不清楚你的概念。

bios是之前的电脑主板rom上的基本开机程序,现在的一般是uefi,由于习惯上的原因,也有人把现在的uefi叫做uefi-bios,如果非要这样叫,就要带上传统bios和uefi-bios这样对应着叫,让人明白。我建议就叫bios和uefi,传统的bios就叫bios,新的bios其实是uefi就叫uefi.

如果你是指这两个平台的启动叫双启,那我现在是bios下用g4d,uefi下用grub2, 不是一定要双平台都用同一种启动软件。
回复

使用道具 举报

34#
 楼主| 发表于 2020-1-17 16:44:06 | 显示全部楼层
zhxy9804 发表于 2020-1-17 10:33
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=417233&extra=page%3D1
你写的这篇,既然uefi下能用 ...

磁盘仿真,本来就是g4d早就有了,而grub2没有,所以wintoflash就开发出来的,是应用在uefi平台的。
如果你留意并学习wintoflash的grubfm的话就能发现,他的grubfm在bios平台下也是调用g4d的.

bios是基于中断的,就是int13, int9 之类。而uefi 是没有这些概念的,所以两个平台下的引导是并不能相通的。
有人已经在bios下模拟uefi并成功,而uefi下模拟bios还没有应该也没有必要。毕竟现在新出的电脑都是uefi,bios随着旧电脑的淘汰会逐渐消失。

点评

还是麻烦一下,这个core.img是怎么回事呢?  发表于 2020-1-17 17:00
回复

使用道具 举报

35#
 楼主| 发表于 2020-1-17 17:02:33 | 显示全部楼层
zhxy9804 发表于 2020-1-17 14:45
好,明白
那还是麻烦告诉一下grub2双启动光盘的做法吧,我想了解一下结构跟原理

基于我前面的表达,如果你的双启是指bios/uefi双启的话,就没有必要一定做grub2双启,虽然也可以做到。在bios下我始终觉得g4d比grub2好,双启都用grub2的话唯一的好处就是可以共用一个菜单文件,菜单文件而已,有必要一定用同一个吗?一个菜单文件的内容,将其不同平台的部分,分成两个菜单文件来表达,或者会更简单更清晰吧。

所以真的做双启光盘,可以bootmgr/bootmgfw.efi,也可以g4d/grub2 (grldr/grubx64.efi)
你可以参考微PE的双启光盘,就是bootmgr/bootmgfw.efi的
将bootmgr换成grldr,将bootmgfw.efi换成grubx64.efi 就可以了,当然菜单文件(配置文件)要相应更改(包括路径)
同理,如果你硬要bios下用grub2引导,就把bootmgr换成g2ldr就可以了
要注意的是,bootmgr是支持udf文件系统的,而grldr/g2ldr是不支持的。

点评

bios下g2确实不能与g4d比,efi下那没得比。但网络启动g2不行,无论是bios还是efi  详情 回复 发表于 2020-1-17 17:33
回复

使用道具 举报

36#
 楼主| 发表于 2020-1-17 17:41:53 | 显示全部楼层
zhxy9804 发表于 2020-1-17 17:00
双启动,就是bios跟uefi都适应,的确是两套文件比如我做的双启动光盘都是bootmgr,只是bootgmr分两种形式罢了
...

core.img,就是bios平台下的引导镜像,相当于uefi下的grubx64.efi
由于bios平台是基于扇区引导,所以还要加一个与扇区引导对应的引导镜像,就是grub2下载包里i386-pc目录下的boot.img ,如果你看我7楼中的定制脚本就会明白,我的定制脚本是直接生成g2ldr 的。
回复

使用道具 举报

37#
 楼主| 发表于 2020-1-17 17:48:40 | 显示全部楼层
hhh333 发表于 2020-1-17 17:33
bios下g2确实不能与g4d比,efi下那没得比。但网络启动g2不行,无论是bios还是efi,网启应该来说是ipxe的 ...

明白,谢谢。我前面的表达不包括网启,我对网启不熟悉。目前我只对本地启动有一定的了解,网启还没有涉及。
回复

使用道具 举报

38#
 楼主| 发表于 2020-1-17 20:28:23 | 显示全部楼层
zhxy9804 发表于 2020-1-17 19:40
你看,uefi下,只需要把对应的文件放到指定的位置,然后就一切ok
bios下,这个core.img,谁来引导它呢?

uefi 基于文件引导,uefi在完成初始化后就到启动序列,通常默认引导efi分区的 \efi\boot\bootx64.efi
bios 基于扇区引导,bios在完成初始化后就到启动序列,通常默认引导第一硬盘的第一扇区,也就是该硬盘的MBR,再由MBR进行下一步引导

所以bios平台需要处理扇区引导。当安装windows时,windows会将其主引导记录写入mbr,分区引导记录写入dbr,引导的时候就是mbr引导dbr,dbr引导bootmgr这样一个过程。

core.img的引导,我也不是很清楚,我想象的是,boot.img引导core.img,将boot.img与core.img合在一起成为g2ldr, 可以将它当作g4d的grldr来引导,我是使用wee来引导grldr的,所以我会改让wee引导g2ldr,而wee是安装到mbr上的。
操作上就是将wee安装到mbr,将boot.img和core.img合成g2ldr,让wee引导g2ldr.

至于光盘上,我原本想象的是grldr_cd.bin 引导g2ldr,,上面wintoflash提过是cdboot.img引导core.img, 这样我就不是很了解了,不知cdboot.img 的作用会不会类似grldr_cd.bin,又是怎样变成光盘引导。反正我都不使用grub2做bios引导,所以就不去关心了,也帮不到你。

点评

好的,明白了,谢谢,大体了解的差不多了 g2ldr如何生成呢?  详情 回复 发表于 2020-1-17 20:35
回复

使用道具 举报

39#
 楼主| 发表于 2020-1-17 21:18:39 | 显示全部楼层
zhxy9804 发表于 2020-1-17 20:35
好的,明白了,谢谢,大体了解的差不多了
g2ldr如何生成呢?

用我7楼的脚本。
也可以自行输入命令:
Copy /B i386-pc\boot.img+core.img g2ldr

点评

明白了!嘿嘿,其实啊,有时候莫名其妙就想不通呢 特别想追根究底搞个明白不行  详情 回复 发表于 2020-1-17 22:06
回复

使用道具 举报

40#
 楼主| 发表于 2020-1-20 12:46:04 | 显示全部楼层
hhh333 发表于 2020-1-20 11:44
有个问题请教一下:
以上是grub.cfg的开头代码,开主题时主题中的背景是可以显示的,但把主题关了,指定的 ...
开主题时主题中的背景是可以显示的,但把主题关了,指定的背景图并没显示出来

说明主题中有背景图片,但
background_image $prefix/background.jpg
这一句中的图片不存在,应该将这一句中的图片路径指向主题中的图片,类似:
background_image $prefix/themes/winly/background.jpg
请按实际图片路径修正

set default=0
# default 本身默认为0,这一句建议注释掉,不是0时再使用
set fallback=0
# fallback 的值跟default一样时没有意义,建议注释掉

点评

图片是存在的,改成background_image $prefix/themes/winly/wallpaper.png也不显示,不显示图片改背景色background_color #0F7F7F也不行。  详情 回复 发表于 2020-1-20 13:02
回复

使用道具 举报

41#
 楼主| 发表于 2020-1-20 13:18:06 | 显示全部楼层
hhh333 发表于 2020-1-20 13:02
图片是存在的,改成background_image $prefix/themes/winly/wallpaper.png也不显示,不显示图片改背景色b ...

进grub2命令行输入相关语句看有什么提示
由短句到长句逐句试,直到找出问题根源

点评

不过还有是点奇怪,主题显示背景不需要这个  详情 回复 发表于 2020-1-20 13:22
回复

使用道具 举报

42#
 楼主| 发表于 2020-1-20 14:23:50 | 显示全部楼层
hhh333 发表于 2020-1-20 13:22
不过还有是点奇怪,主题显示背景不需要这个

这不奇怪,grub2是模块化的,所有命令都需要模块支持
主题不是以命令的形式设置的,是以变量的形式设置的,是由图形终端模块支持的,如果你不包含gfxterm定制的话,你设置主题结果就会跟你刚才使用命令设置背景图一样
回复

使用道具 举报

43#
 楼主| 发表于 2020-1-26 17:04:14 | 显示全部楼层
zhxy9804 发表于 2020-1-21 11:23
真的是的来,待会还有问题要请教--------
打开ISO,感觉没看懂,grub2文件在哪里呢?

应该是
[BOOT]\2-Boot-NoEmul.img\EFI\BOOT\bootx64.efi
[BOOT]\2-Boot-NoEmul.img\EFI\BOOT\bootia32.efi
这两个吧

这种定制iso的方法我还没有学会,反正我现在少用iso,暂不学那么多了。
回复

使用道具 举报

44#
 楼主| 发表于 2020-1-27 23:51:33 | 显示全部楼层
slipper 发表于 2020-1-27 23:23
请问支持安全引导吗?

可以使用之前的引导方案,效果自行测试。
回复

使用道具 举报

45#
 楼主| 发表于 2020-3-31 22:29:54 | 显示全部楼层
2012zhiwen 发表于 2020-3-31 18:41
楼主你好,能否在efi环境下通过BCD引导GRUB2呢

不能。

况且efi环境下bcd更容易出错,我现在都是使用grub2引导操作系统分区的bootmgfw.efi,这样可以避免bcd出错。
回复

使用道具 举报

46#
 楼主| 发表于 2020-5-12 16:33:37 | 显示全部楼层
lyj0512 发表于 2020-5-12 12:22
修改了,没显示中文,中文的地方直接被屏蔽,也没乱码,就像没写上中文一样,比如 正常启动Windows 只显 ...

你说的情况通常是虚拟机的原因,实体机下显示是正常的。
虚拟机下需要使用图形终端才能正常显示中文。

terminal_output gfxterm
loadfont unicode

定制efi文件要包含gfxterm efi_gop efi_uga 这三个模块

字体文件放在grub.cfg所在文件夹里的子文件夹 fonts 里面。
字体文件放其他位置也可以但加载字体时需使用全路径(由设备名开始到文件扩展名为止)

点评

应该是兼容的问题。。。用本机测试:虚拟机和实体进入都不显示中文,也不乱码,也不是显示空格,而是中文被直接屏蔽只显示英文。换另一个电脑实体进入测试有显示中文了,加入一些其它字有个别字还是被屏蔽。。。  详情 回复 发表于 2020-5-12 20:17
回复

使用道具 举报

47#
 楼主| 发表于 2020-5-14 07:10:50 | 显示全部楼层
cbl 发表于 2020-5-13 20:02
大神能再发一个帖子说一说有关grub2的背景图使用方法以及主题的应用吗?先谢了

我原先是效率至上,不喜欢主题的,后来看到linux都是图像模式启动,就想着既然都开了图像模式了,加个简单的背景图,调一下菜单的显示位置,好象也不太影响开机效率,所以就学习了主题的应用。

现在你要求分享,我一下子发不了贴,容我组织一下,稍后再发贴。

点评

cbl
谢谢大神,那我就期待您的作品。。。  详情 回复 发表于 2020-5-14 15:03
回复

使用道具 举报

48#
 楼主| 发表于 2020-5-14 07:23:45 | 显示全部楼层
cbl 发表于 2020-5-13 20:02
大神能再发一个帖子说一说有关grub2的背景图使用方法以及主题的应用吗?先谢了

有一个使用背景图的命令,background_image ,不过既然使用背景图了,还不如直接使用主题。在主题里,背景图是作为一个属性项来设置的,而使用主题是不需要使用额外的命令的,只需要一个主题文件(文本文件)和相应的图片放在主题文件所在的目录,然后在grub2的配置文件grub.cfg中将theme变量指定为想要使用的主题文件。
回复

使用道具 举报

49#
 楼主| 发表于 2020-5-14 15:56:11 | 显示全部楼层

点评

cbl
非常感激大神百忙之中抽空写下关于grub2主题相关的知识要点,本人一定好好拜读一下大神的作品,在不懂的时还望大神不吝赐教!  详情 回复 发表于 2020-5-14 21:14
回复

使用道具 举报

50#
 楼主| 发表于 2020-8-24 06:56:08 | 显示全部楼层
d9o 发表于 2020-8-23 18:00
楼主,请问uefi下glub2能实现复制功能吗?
bios下用glub4dos的vhd模块(某大神作品)可以实现这个功能。
我 ...

有dd模块,但我在我的电脑上试了没有成功,你可以试一试,也可以另行发贴求助。

我自己是进了PE再复制复制还原,未能在grub2菜单实现。

点评

d9o
楼主能提供DD模块的下载和用法吗?不胜感激。  详情 回复 发表于 2020-8-24 17:58
回复

使用道具 举报

51#
 楼主| 发表于 2020-8-24 21:40:45 | 显示全部楼层
d9o 发表于 2020-8-24 17:58
楼主能提供DD模块的下载和用法吗?不胜感激。

请参看7楼,下载wintoflash版本的grub2,里面就包含了dd.mod ,定制efi时包含dd模块即可。

用法可参看grub2的命令行帮助或wintoflash的中文手册



点评

d9o
谢谢楼主,学习学习。  详情 回复 发表于 2020-8-25 13:15
回复

使用道具 举报

52#
 楼主| 发表于 2020-9-16 18:00:23 | 显示全部楼层
langyun 发表于 2020-9-16 12:01
大大好像有弄出新玩具
是不是启动可以选择不同wim或vhd等等之类的选项列表

是的,可以将wim/vhd/iso等放到一个文件夹,使用grub2自定义命令将这个文件夹自动列成菜单供选择启动。

点评

这是EFI的,家里的不想折腾 想折腾办公室的,有BIOS启动的吗?  详情 回复 发表于 2020-9-17 10:36
回复

使用道具 举报

53#
 楼主| 发表于 2020-9-17 15:42:02 | 显示全部楼层
本帖最后由 hilsonma 于 2020-9-17 15:51 编辑
langyun 发表于 2020-9-17 10:36
这是EFI的,家里的不想折腾

想折腾办公室的,有BIOS启动的吗?

bios的我使用 grldr+siso
参见http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=419354&pid=4001350&fromuid=586362 里面的新附件

也可以使用 grldr + grub2
见附件 u.7z (2.53 MB, 下载次数: 143)


以上提及的附件都是用于U盘的,开机直接出自动菜单。
如果用于硬盘,建议将自动菜单作为主菜单的一个子菜单。
如果修改硬盘启动强烈建议事先准备启动U盘提防硬盘启动出错。
回复

使用道具 举报

54#
 楼主| 发表于 2021-5-15 08:19:41 | 显示全部楼层
hhh333 发表于 2021-5-14 10:48
一段时间不搞这个又要到这里来学习一下。
老大,请教一个问题,bios版本的g2从光盘启动,看了一下root是hd ...

这是因为 grub2 不认 "$root" > "hd30" 这样的表达,本来按说明文件是可以这样用的,但事实就是不认,所以我也不懂了。
回复

使用道具 举报

55#
 楼主| 发表于 2021-6-21 18:30:36 | 显示全部楼层
liking163 发表于 2021-6-20 15:27
提示无效,不知道怎么解决

不明白你的问题,能不能上图看看。
回复

使用道具 举报

56#
 楼主| 发表于 2022-4-1 15:22:08 | 显示全部楼层
本帖最后由 hilsonma 于 2022-4-1 15:30 编辑
2010hfj 发表于 2022-4-1 11:14
能够引导iso 吗 单独引导一个pe  感觉都有带你落伍了

可以的。参见这个贴子 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=418198

可以将目录列成自动菜单。
可以查找并引导efi、wim、vhd、vhdx、iso 和 cfg (grub2配置文件)。


grub2本身是用map命令实现引导的,比如说 diy 目录里的 pe.iso
  1. search -n -s -f /diy/pe.iso
  2. map /diy/pe.iso
复制代码
回复

使用道具 举报

57#
 楼主| 发表于 2022-9-5 15:28:50 | 显示全部楼层
jasonwang 发表于 2022-9-4 21:57
怎么加载其它efi启动文件呢? 加载了一个,怎么出错了

一般是使用chainloader
但如果是linux内核的efi文件有可能需要使用 linuxefi
我很少用这些,你可以试试看。

象你前面的举例,好象是grub2再加载grub2,我认为没必要这样,善用配置文件grub.cfg就可以了。也可以多个配置文件相互套用,个人认为多个配置文件套用要比多个内核套用好。
回复

使用道具 举报

58#
 楼主| 发表于 2023-5-7 16:23:40 | 显示全部楼层
langyun 发表于 2023-5-6 22:36
大大,我现在主力使用deepin系统,启动菜单是xieboot,我想换到Linux自带的grub启动菜单,但是win菜单是二 ...

建议使用wintoflash的grub2,先使用bcdboot在win10分区建立启动文件,然后菜单如下:
  1. menuentry "Win10" {
  2.     search -n -s -f /EFI/Microsoft/Boot/bootmgfw.efi
  3.     chainloader /EFI/Microsoft/Boot/bootmgfw.efi
  4. }

  5. menuentry "Win8" {
  6.     search -n -s dev_vhd -f /vhd/win8.vhdx
  7.     search -n -s dev_efi -f /EFI/Microsoft/Boot/bootmgfw.efi
  8.     ntboot --testmode=no --timeout=0 -e ($dev_efi)/EFI/Microsoft/Boot/bootmgfw.efi ($dev_vhd)/vhd/win8.vhdx
  9. }
复制代码

点评

我直接使用linux系统自带的grub启动文件可以吗? # # DO NOT EDIT THIS FILE # # It is automatically generated by grub-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub  详情 回复 发表于 2023-5-7 20:29
回复

使用道具 举报

59#
 楼主| 发表于 2023-5-7 21:56:44 | 显示全部楼层
本帖最后由 hilsonma 于 2023-5-7 21:57 编辑
langyun 发表于 2023-5-7 20:29
我直接使用linux系统自带的grub启动文件可以吗?

#

自带的没有ntboot模块,要启动vhd还要另外做启动文件

还有就是自带的我没有用过,不知道怎么修改主菜单。

你上面这个,人家都强调了,不要直接修改。

点评

是的,VHD启动显示 错误:无法找到命令ntboot 没修改,是通过修改40_custom,再命令修改启动菜单的。  详情 回复 发表于 2023-5-8 10:15
回复

使用道具 举报

60#
 楼主| 发表于 2023-5-9 06:37:46 | 显示全部楼层
langyun 发表于 2023-5-8 10:15
是的,VHD启动显示 错误:无法找到命令ntboot

那就不用ntboot
把vhd启动项做到win10菜单,这样,一级菜单是deepin和win,win是二级菜单,有win10和win8.vhd

还有一个做法就是在第三分区做vhd启动菜单,启动文件bootmgfw.efi改名为boot8.efi
在其他分区如第二分区做win10启动菜单,启动文件bootmgfw.efi改名为boot10.efi

这样就可以在deepin的菜单中加两个启动项,一个是找boot10.efi并引导,另一个是找boot8.efi并引导。这样就只有一个主菜单,就是deepin的菜单,3个启动项,分别是deepin,win10,win8

点评

VHD的boot8.efi放在哪里?VHD文件系统里面还是外面哪边?  详情 回复 发表于 2023-5-16 16:46
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-6 15:36

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表