无忧启动论坛

 找回密码
 注册
搜索
最纯净的「微PE装机优盘」UEPON大师作品系统gho:最纯净好用系统下载站数据恢复、数据保护、视频编辑
Win To Go 极致利器(IXUNCIS固态U盘)无忧启动网成立20周年!广告联系 QQ:184822951 微信:wuyouceo
楼主: wintoflash

[发布] grub2文件管理器(BIOS/UEFI启动 ISO/WIM/VHD...)

    [复制链接]
发表于 2021-2-21 19:08:40 | 显示全部楼层
liuzhaoyzz 发表于 2021-2-21 19:03
替换后正常加载菜单,没有任何问题。直接上图。
我感觉光盘iso里面的loopback.cfg是不是被wintoflash替 ...

逻辑坏道了吧,重启下电脑,chkdsk一下iso所在分区估计就好了。

点评

应该不是这个原因,因为这个iso用grubfm可以直接启动,如果iso所在的磁盘有坏块,grubfm怎么能够启动? 而且我用手工写的partnew菜单也可以整体启动这个iso,足以证明硬盘没有坏块。  详情 回复 发表于 2021-2-21 20:26
回复

使用道具 举报

发表于 2021-2-21 19:16:04 | 显示全部楼层
liuzhaoyzz 发表于 2021-2-21 19:03
替换后正常加载菜单,没有任何问题。直接上图。
我感觉光盘iso里面的loopback.cfg是不是被wintoflash替 ...

那说明你的grub.cfg有问题。
  1. set default=0
  2. set fallback=1
  3. set timeout=2
  4. set pager=20
复制代码

pager 能设成这个值吗?
https://www.gnu.org/software/gru ... tml_node/pager.html

  1. set grub_draw_border=1
  2. set menu_color_normal=white/black
  3. set menu_color_highlight=white/blue
  4. set gfxmode=auto,800x600,1024x768
  5. terminal_output gfxterm
  6. menuentry "/linux/veket/veket-20.10.iso-loopback" "/linux/veket/veket-20.10.iso" {
复制代码

这里第二个参数似乎没用到。
  1. iso_path="/linux/veket/veket-20.10.iso"
  2. export iso_path
复制代码

不建议这样设置变量。设置变量,要用set AAA=BBB,设置全局变量,用export AAA=BBB。
  1. search --set=root --file $iso_path
  2. probe -u ($root) -s rootuuid
  3. echo $rootuuid
  4. export rootuuid
  5. loopback -d loop
  6. loopback loop $iso_path
  7. root=(loop)
复制代码

同上,不建议这样设置变量。
错误:root 应该被设为(loop),而应该设为loop。root 变量里面存储的应该是不带括号的盘符。
https://github.com/a1ive/grub2-f ... les/iso/loop.sh#L12

  1. configfile /boot/grub/loopback.cfg
  2. }
复制代码

点评

1、set pager=20没问题,本人亲测,我一直用的,这个参数的意思,好像是设置grub2每页显示的命令行行数,但我不确定。 2、设置全局变量两种用法都可以,没问题。 set AAA=BBB; export AAA; 上面的用法,grubfm里  详情 回复 发表于 2021-2-21 20:38
回复

使用道具 举报

发表于 2021-2-21 20:26:01 | 显示全部楼层
江南一根葱 发表于 2021-2-21 19:08
逻辑坏道了吧,重启下电脑,chkdsk一下iso所在分区估计就好了。

应该不是这个原因,因为这个iso用grubfm可以直接启动,如果iso所在的磁盘有坏块,grubfm怎么能够启动?
而且我用手工写的partnew菜单也可以整体启动这个iso,足以证明硬盘没有坏块。
回复

使用道具 举报

发表于 2021-2-21 20:38:31 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2021-2-21 20:54 编辑
xbmc 发表于 2021-2-21 19:16
那说明你的grub.cfg有问题。

pager 能设成这个值吗?

1、set pager=20没问题,本人亲测,我一直用的,这个参数的意思,好像是设置grub2每页显示的命令行行数,但我不确定。
2、menuentry "/linux/veket/veket-20.10.iso-loopback" "/linux/veket/veket-20.10.iso" {
第二个参数相当于直接在标题栏定义一个变量,可以直接用$2来引用这个变量,我一直这样用,借鉴的别人的。这个不影响的。
3、设置全局变量三种用法都可以,没问题。
①AAA=BBB;
export AAA;
这个用法,来自于loopback官网,应该经过了很多人的检验。
②set AAA=BBB;
export AAA;
上面的用法,grubfm里面就有,前面的帖子,307楼,已经贴出来过了。
③或者直接
export AAA=BBB
4、root=loop或者root=(loop)都是没有问题的。
上面的三个直接上图说明。

我写的菜单,虽说都是照葫芦画瓢,但是别人的瓢应该也是经过很多人的检验的,不然loopback.cfg方案有问题老外早就提出来了。
grub2很灵活,写法很多,有时候大括号、小括号、分号可有可无。

我改成了下面的,结果一样卡死:
set pager=0
menuentry "/linux/veket/veket-20.10.iso-loopback" "/linux/veket/veket-20.10.iso" {
export iso_path="/linux/veket/veket-20.10.iso";
search --set=root --file $iso_path;probe -u ($root) -s rootuuid;echo $rootuuid;export rootuuid;
loopback -d loop;
loopback loop $iso_path
set root=loop
configfile /boot/grub/loopback.cfg
}


GPT_test-2021-02-21-20-34-13.png

点评

以你的习惯,菜单不是应该这样写么 menuentry "/linux/veket/veket-20.10.iso-loopback" "/linux/veket/veket-20.10.iso" { search --set=iso_path -f -q $2; loopback -d loop; loopback loop $iso_path; exp  详情 回复 发表于 2021-2-21 21:03
回复

使用道具 举报

发表于 2021-2-21 21:03:28 | 显示全部楼层
本帖最后由 江南一根葱 于 2021-2-22 13:16 编辑
liuzhaoyzz 发表于 2021-2-21 20:38
1、set pager=20没问题,本人亲测,我一直用的,这个参数的意思,好像是设置grub2每页显示的命令行行数, ...

以你的习惯,菜单不是应该这样写么

menuentry "/linux/veket/veket-20.10.iso-loopback" "/linux/veket/veket-20.10.iso" {
search --set=root -f -q $2;export iso_path=$2;
loopback -d loop; loopback loop $iso_path ;export root=loop;
configfile (loop)/boot/grub/loopback.cfg
}
还有为啥一定要弄个set pager=


点评

其实问问题之前,各种写法,各种可能,我已经尝试遍了,否定,否定,再否定,$2这种我试了不行才改的。。。  详情 回复 发表于 2021-2-21 21:48
回复

使用道具 举报

发表于 2021-2-21 21:48:25 来自手机 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2021-2-21 21:51 编辑
江南一根葱 发表于 2021-2-21 21:03
以你的习惯,菜单不是应该这样写么

menuentry "/linux/veket/veket-20.10.iso-loopback" "/linux/veke ...


其实问问题之前,各种写法,各种可能,我已经尝试遍了,否定,否定,再否定,$2这种我试了不行才改的。。。

set pager我也忘了当初倒底为什么要设置成20。

你上面类似的写法,我也尝试过,现在感觉不应该是语法上面的原因,应该还是有哪里没有考虑到。
回复

使用道具 举报

发表于 2021-2-21 22:44:46 来自手机 | 显示全部楼层
启动一个菜单有这么复杂?

点评

你试试不用grubfm,自己写菜单启动veket.iso试试看。 https://cloud.189.cn/t/zaIN7jfEZFrm  详情 回复 发表于 2021-2-22 10:19
回复

使用道具 举报

发表于 2021-2-22 10:19:05 | 显示全部楼层
江南一根葱 发表于 2021-2-21 22:44
启动一个菜单有这么复杂?

你试试不用grubfm,自己写菜单启动veket20.iso试试看。
https://cloud.189.cn/t/zaIN7jfEZFrm

点评

[attachimg]475695[/attachimg] 我怎么写都是能出菜单的 我怀疑你vmware瞎建虚拟机类型了  详情 回复 发表于 2021-2-22 13:15
回复

使用道具 举报

发表于 2021-2-22 13:15:45 | 显示全部楼层
本帖最后由 江南一根葱 于 2021-2-22 13:18 编辑
liuzhaoyzz 发表于 2021-2-22 10:19
你试试不用grubfm,自己写菜单启动veket20.iso试试看。
https://cloud.189.cn/t/zaIN7jfEZFrm

99999.gif
我怎么写都是能出菜单的,只不过我这个是超精简的grub2,启动会提示“booting blind mode“
我怀疑你vmware瞎建虚拟机类型了

点评

我这边,照着你的截图输入菜单,vm也是直接卡死。用你335楼的http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=420085&pid=4244279&fromuid=298214菜单,也是卡死。 奇怪了。 虚拟机类型我选择的  详情 回复 发表于 2021-2-22 13:43
回复

使用道具 举报

发表于 2021-2-22 13:43:27 | 显示全部楼层
江南一根葱 发表于 2021-2-22 13:15
我怎么写都是能出菜单的,只不过我这个是超精简的grub2,启动会提示“booting blind mode“
我怀疑你 ...

我这边,照着你的截图输入菜单,vm也是直接卡死。用你335楼的http://bbs.wuyou.net/forum.php?m ... &fromuid=298214菜单,也是卡死。
奇怪了。
虚拟机类型我选择的是windows的,启动linux也没事啊,问题是实体机也不行,虚拟机只是方便重现问题,虚拟机和实体机结果是类似的。

点评

99.99%是电脑问题了,最小系统法, 实体机改成在u盘上启 检测内存条有没有坏块。  详情 回复 发表于 2021-2-22 15:16
回复

使用道具 举报

发表于 2021-2-22 15:16:16 | 显示全部楼层
liuzhaoyzz 发表于 2021-2-22 13:43
我这边,照着你的截图输入菜单,vm也是直接卡死。用你335楼的http://bbs.wuyou.net/forum.php?mod=redire ...

99.99%是电脑问题了,最小系统法,
实体机改成在u盘上启
检测内存条有没有坏块。

点评

我这边能想的办法都想了,找不出原因,我不想在优盘上面搞,换了两台电脑都试了,都不行,不可能说两台电脑都有问题,硬盘都坏了吧? 清华大学开源软件镜像站 | Tsinghua Open Source Mirror https://mirrors.t  详情 回复 发表于 2021-2-24 15:45
回复

使用道具 举报

发表于 2021-2-24 15:45:10 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2021-2-24 15:47 编辑
江南一根葱 发表于 2021-2-22 15:16
99.99%是电脑问题了,最小系统法,
实体机改成在u盘上启
检测内存条有没有坏块。

我这边能想的办法都想了,找不出原因,我不想在优盘上面搞,换了两台电脑都试了,都不行,不可能说两台电脑都有问题,硬盘都坏了吧?

清华大学开源软件镜像站 | Tsinghua Open Source Mirror
https://mirrors.tuna.tsinghua.edu.cn/puppy/puppy-fossa/
fossapup64-9.5.iso,只有409MB
MD5:6a45e7a305b7d3172ebd9eab5ca460e4  fossapup64-9.5.iso

你那边,在你的电脑上面试试这个发行版,看看能不能loopback.cfg方案启动?
顺便说下,grub2-bios-loopback.cfg,启动没有问题,就是grub2-uefi-loopback.cfg启动有问题。


点评

直接用Grubfmx64.efi写菜单呢  详情 回复 发表于 2021-2-24 16:01
回复

使用道具 举报

发表于 2021-2-24 16:01:26 | 显示全部楼层
本帖最后由 江南一根葱 于 2021-2-24 16:16 编辑
liuzhaoyzz 发表于 2021-2-24 15:45
我这边能想的办法都想了,找不出原因,我不想在优盘上面搞,换了两台电脑都试了,都不行,不可能说两台电 ...

直接用Grubfmx64.efi写菜单呢?看你好像是gpt磁盘试的?我是mbr磁盘测试

点评

我只会用原始菜单,不会用Grubfmx64.efi写菜单。虚拟机里面有个GPT分区,iso是放在我的物理硬盘,物理硬盘直接挂载虚拟机中的。 你那边MBR磁盘,测试能否用loopback.cfg启动我说的iso?  详情 回复 发表于 2021-2-24 16:49
回复

使用道具 举报

发表于 2021-2-24 16:49:52 | 显示全部楼层
江南一根葱 发表于 2021-2-24 16:01
直接用Grubfmx64.efi写菜单呢?看你好像是gpt磁盘试的?我是mbr磁盘测试

我只会用原始菜单,不会用Grubfmx64.efi写菜单。虚拟机里面有个GPT分区,iso是放在我的MBR物理硬盘,物理硬盘直接挂载虚拟机中的。

你那边MBR磁盘,测试能否用loopback.cfg启动我说的iso?

点评

menuentry "/linux/veket/veket-20.10.iso-loopback" "/linux/veket/veket-20.10.iso" { search -n -s -f $2 export iso_path=($root)$2 loopback loop $iso_path set root=loop configfile /boot/grub/loopbac  详情 回复 发表于 2021-2-24 17:02
回复

使用道具 举报

发表于 2021-2-24 17:02:05 | 显示全部楼层
liuzhaoyzz 发表于 2021-2-24 16:49
我只会用原始菜单,不会用Grubfmx64.efi写菜单。虚拟机里面有个GPT分区,iso是放在我的MBR物理硬盘,物理 ...

menuentry "/linux/veket/veket-20.10.iso-loopback" "/linux/veket/veket-20.10.iso" {
search -n -s -f $2
export iso_path=($root)$2
loopback loop $iso_path
set root=loop
configfile /boot/grub/loopback.cfg
}

点评

不行啊,用这个菜单,结果是一样的,虚拟机卡死了。  详情 回复 发表于 2021-2-24 17:53
回复

使用道具 举报

发表于 2021-2-24 17:53:51 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2021-2-24 19:06 编辑
hilsonma 发表于 2021-2-24 17:02
menuentry "/linux/veket/veket-20.10.iso-loopback" "/linux/veket/veket-20.10.iso" {
search -n -s - ...

不行啊,用这个菜单,结果是一样的,虚拟机卡死了。



哦,你们说的意思是,进入grubfmx64.efi之后,手工输入命令是吗?我试了手工输入命令,可以启动veket.iso。
说明不是脚本的问题,脚本没有问题。
有问题的可能是缺乏某个模块,可能grubfmx64.efi里面的模块全些,grubfmx64.efi大小7.3MB,不知道都是什么模块?
我试了用grub2-latest2021-02-10里面的build_grub.bat生成,也不行啊,不知道缺乏什么模块倒底?

我在grubfm源代码里面找到了\grub2-filemanager\arch\x64\builtin.lst
acpi affs afs alias all_video at_keyboard bfs bitmap bitmap_scale blocklist bmp boot bsd btrfs cat chain cmp commandline configfile cpio cpuid crc crscreenshot date datehook dd disk dm_nv echo efi_gop efi_mouse efiload efinet eval exfat expr ext2 extcmd f2fs fat fatfs fb file fixmmap font fshelp gcry_arcfour gcry_blowfish gcry_camellia gcry_cast5 gcry_crc gcry_des gcry_dsa gcry_idea gcry_md4 gcry_md5 gcry_rfc2268 gcry_rijndael gcry_rmd160 gcry_rsa gcry_seed gcry_serpent gcry_sha1 gcry_sha256 gcry_sha512 gcry_tiger gcry_twofish gcry_whirlpool getargs getenv getkey gfxmenu gfxterm gfxterm_background gfxterm_menu gptsync grubfm gzio halt hashsum help hexdump hfs hfsplus http iso9660 jfs jpeg keylayouts keystatus legacycfg linux linuxefi loadbios loadenv loopback ls lsmmap lua lvm lzopio map mdraid09 mdraid09_be memdisk minicmd msdospart multiboot multiboot2 nes net newc normal ntboot ntfs ntfscomp nttools part_apple part_bsd part_gpt part_msdos partnew parttool png probe progress raid5rec raid6rec random read reboot regexp reiserfs sbpolicy search setenv setkey shell sleep squash4 stat syslinuxcfg tar terminal terminfo test tftp tga time tr true udf version vhd video video_colors video_fb videoinfo wimboot xfs xzio zfs

我用这个里面的模块全部加载,试了下,也还是不行,上面的模块加载之后,grubx64.efi大小是3.78MB。
那么grubfmx64.efi,7.3MB里面都是什么模块?

加上了optional.lst里面的这些模块也不行:
afsplitter crypto cryptodisk geli json luks luks2 pbkdf2

@wintoflash,大神是不是没有上线?有空请看看,指点下。

点评

他跑路了。 linux 或 其他一些 OS 启动的时候会要求 grub2 把显示模式之类的东西传给内核。如果grub2没有加载显示方面的模块,内核在没有加载显示驱动之前就没办法打印调试信息,所以是“瞎子”模式。  详情 回复 发表于 2021-2-24 19:44
怀疑是模块问题我325#说过了啊 我的模块更精简 http efinet net linux linuxefi efiload acpi blocklist newc boot chain configfile cpio echo exfat fat vhd fb getargs getkey gzio iso9660 loadenv loopback l  详情 回复 发表于 2021-2-24 19:06
回复

使用道具 举报

发表于 2021-2-24 19:06:50 | 显示全部楼层
liuzhaoyzz 发表于 2021-2-24 17:53
不行啊,用这个菜单,结果是一样的,虚拟机卡死了。

怀疑是模块问题我325#说过了啊
我的模块更精简
http efinet net linux linuxefi efiload acpi blocklist newc boot chain configfile cpio echo exfat fat vhd fb getargs getkey gzio iso9660 loadenv loopback ls lzopio map memdisk minicmd  ntboot ntfs part_gpt part_msdos progress  probe regexp sbpolicy search  terminal terminfo test udf version wimboot xzio commandline

不过我的模块会报错blind,能出菜单

点评

用你的这些个模块加载试了试,果然能够出菜单,选择之后就挂了。  详情 回复 发表于 2021-2-24 19:10
回复

使用道具 举报

发表于 2021-2-24 19:10:35 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2021-2-24 19:14 编辑
江南一根葱 发表于 2021-2-24 19:06
怀疑是模块问题我325#说过了啊
我的模块更精简
http efinet net linux linuxefi efiload acpi blocklis ...

用你的这些个模块加载试了试,果然能够出菜单,选择之后,提示“Booting in blind mode”,意思是进入“瞎子”模式,没有任何命令回显,等候了1分钟,系统居然启动了!
那摆脱“瞎子”模式,需要什么模块?!
GPT_test-2021-02-24-19-09-51.png
回复

使用道具 举报

发表于 2021-2-24 19:26:04 | 显示全部楼层
哦,搞定了,加上all_video模块就可以了!
https://ask.csdn.net/questions/5145593
这个all_video模块,是个什么鬼?我又没有什么视频要播放,为什么需要这个all_video模块?!
实在是匪夷所思!
启动的时候需要显示几个省略号,难道这个就算是video?!

感谢大家!
@wintoflash,@大葱,@hilsonma,@xbmc,@2011whp...

点评

[attachimg]475775[/attachimg]  详情 回复 发表于 2021-2-25 13:38
回复

使用道具 举报

发表于 2021-2-24 19:44:47 | 显示全部楼层
liuzhaoyzz 发表于 2021-2-24 17:53
不行啊,用这个菜单,结果是一样的,虚拟机卡死了。
@wintoflash,大神是不是没有上线?有空请看看,指点下。

他跑路了。
这个all_video模块,是个什么鬼?我又没有什么视频要播放,为什么需要这个all_video模块?!

linux 或 其他一些 OS 启动的时候会要求 grub2 把显示模式之类的东西传给内核。如果grub2没有加载显示方面的模块,内核在没有加载显示驱动之前就没办法打印调试信息,所以是“瞎子”模式。

点评

虚拟机卡死的原因找到了,定制打包的时候,不能有gfxterm模块,只要有个这个模块,运行loopback.cfg的时候,就会卡死。奇怪得很。 问题是没有这个gfxterm模块,就没有办法加载汉字啊。。。 大葱为啥把gfxterm  详情 回复 发表于 2021-2-24 21:29
回复

使用道具 举报

发表于 2021-2-24 21:29:38 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2021-2-24 22:28 编辑
xbmc 发表于 2021-2-24 19:44
他跑路了。

linux 或 其他一些 OS 启动的时候会要求 grub2 把显示模式之类的东西传给内核。如果grub ...

虚拟机卡死的原因找到了,定制打包的时候,不能有gfxterm模块,只要有个这个模块,运行loopback.cfg的时候,就会卡死。奇怪得很。

问题是没有这个gfxterm模块,就没有办法加载汉字啊。。。

大葱为啥把gfxterm模块去掉?



哦,发现在grub.cfg菜单项目中,加上一句terminal_output console,就可以了,gfxterm可以正常打包!

menuentry "/linux/puppy/fossapup64-9.5.iso-loopback.cfg" "/linux/puppy/fossapup64-9.5.iso" {
terminal_output console
search --no-floppy --set --file $2
export iso_path=$2
loopback loop $2;set root=loop
configfile (loop)/boot/grub/loopback.cfg
}






点评

我这个定制的grub2是配合ipxefm网启专用的,日常使用也不需要网启linux,可能模块越少问题越少。。  详情 回复 发表于 2021-2-25 09:58
回复

使用道具 举报

发表于 2021-2-25 09:58:38 | 显示全部楼层
liuzhaoyzz 发表于 2021-2-24 21:29
虚拟机卡死的原因找到了,定制打包的时候,不能有gfxterm模块,只要有个这个模块,运行loopback.cfg的时 ...

我这个定制的grub2是配合ipxefm网启专用的,日常使用也不需要网启linux,可能模块越少问题越少。。
回复

使用道具 举报

发表于 2021-2-25 13:38:50 | 显示全部楼层
liuzhaoyzz 发表于 2021-2-24 19:26
这个all_video模块,是个什么鬼?我又没有什么视频要播放,为什么需要这个all_video模块?!

grub2 显示模型.jpg
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2021-3-6 09:53

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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