无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 7022|回复: 17
打印 上一主题 下一主题

[讨论] 两个需求建议,不知道好不好实现

[复制链接]
跳转到指定楼层
1#
发表于 2019-5-30 10:34:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在使用grub2的过程中,遇到了很多不方便,如果GRUB2的命令行命令ls或者search.file模块可以支持通配符*和?并且增加一个--set参数,使得我可以在菜单中使用它列出我需要的文件目录名并存到某个变量,然后我就可以用 for in 循环这些文件,那么启动菜单的功能可以更加容易实现。
不知道论坛里没有开发组的成员,希望这个建议可以被早点实现。
2#
发表于 2019-5-31 00:15:02 | 只看该作者
楼主好想法,希望早日实现,能出个成品
回复

使用道具 举报

3#
发表于 2019-5-31 08:57:05 | 只看该作者
本帖最后由 青青草 于 2019-5-31 08:59 编辑
wintoflash 发表于 2019-5-30 10:45
如果你加了regexp模块,就自动支持通配符 (*可以,?没用过不清楚)
search.file是个阉割版模块,正常情况下 ...


       分区格式为 FAT,卷标为 SYSTEM 的磁盘根目录下有文件夹WXPE,该文件夹下有:10PEX64.wim、10PEX86.wim、WIN7PEX64.wim 等等。
      下面的代码,目的是:以64位 wim 的文件名为菜单条名称,分别启动相应的PE。该段代码错在哪了?
  • if [ "${grub_platform}" == "efi" ]; then
  •    for dev in (*); do       
  •         test -e ${dev};
  •         if test "$?" = "1"; then
  •                 continue;
  •         fi;
  •         regexp --set=device '\((.*)\)' $dev;
  •         probe --set=fs -f "${device}";
  •         probe --set=label -l "${device}";
  •         if [ "$fs" = "fat" ]; then
  •              if [ "$label" = "SYSTEM" ]; then
  •                 set czdz=($device)/WXPE/*;
  •                 for file in $czdz; do                                
  •                      test -f ${file};                   
  •                           if [ "${grub_cpu}" == "x86_64" ]; then                            
  •                                regexp --set=pewim '^.*\/(.*[6][4].*\.[wW][iI][mM]$)' $file;       
  •                                regexp --set=pemane '^.*\/(.*[6][4].*)\.[wW][iI][mM]$' $file;                                         
  •                           fi;
  •                           if test -f ($device)/WXPE/$pewim; then                                         
  •                                menuentry "启动 $pemane ($device)" "$device"  --users zhc{       
  •                                     insmod progress        
  •                                     set root=$2;
  •                                      loopback wimboot (memdisk)/boot/grub/wimboot.gz
  •                                      wimboot @:boot.wim:($root)/WXPE/$pewim @:bootmgfw.efi:    (wimboot)/bootmgfw.efi @:bcd:(wimboot)/bcd @:boot.sdi:(wimboot)/boot.sdi
  •                }
  •                         fi;                                
  •                           unset $pewim
  •                           unset $pemane
  •                done;       
  •             fi;
  •         fi;       
  •   done;
  • fi;
特此请教,谢谢了!
回复

使用道具 举报

4#
发表于 2019-5-31 09:31:39 | 只看该作者
wintoflash 发表于 2019-5-31 09:08
menuentry "启动 $pemane ($device)" "$device" "$pewim"  --users zhc{   
set pewim=$3

解决了。谢谢!
回复

使用道具 举报

5#
发表于 2019-6-1 17:23:12 | 只看该作者
wintoflash 发表于 2019-5-31 09:08
menuentry "启动 $pemane ($device)" "$device" "$pewim"  --users zhc{   
set pewim=$3

再请教个问题:
      1、用您修改的grub2定制的grldr 【BIOS】,可以放在UD区吗?
      2、读取UD区文件需要加载哪个模块?依稀记得您好像在哪个帖子里有提到过,却找不到了。

点评

1.可以。我是这样用的 2.好像是fb  详情 回复 发表于 2019-6-1 17:47
回复

使用道具 举报

6#
发表于 2019-6-1 17:47:02 | 只看该作者
青青草 发表于 2019-6-1 17:23
再请教个问题:
      1、用您修改的grub2定制的grldr 【BIOS】,可以放在UD区吗?
      2、读取UD区 ...

1.可以。我是这样用的
2.好像是fb

点评

记得当时曾经成功定制了可以放在UD区的grldr,后来U盘坏了,就没有再弄。 昨天新买了一个U盘,想重新定制一个放在UD区的grldr,却怎么也想不起来当初是怎么定制成功的; 唉,老了... ... 依稀记得好像是:  详情 回复 发表于 2019-9-5 11:02
谢谢! 另外,在grub2中,UD区是如何标识的?如,路径 UD区/WXPE/bios.cpio,应如何书写?  详情 回复 发表于 2019-6-2 08:43
回复

使用道具 举报

7#
发表于 2019-6-2 08:43:15 | 只看该作者
ksafei 发表于 2019-6-1 17:47
1.可以。我是这样用的
2.好像是fb

谢谢!
      另外,在grub2中,UD区是如何标识的?如,路径 UD区/WXPE/bios.cpio,应如何书写?

点评

下个grub2文件管理器抄一下好了嘛,ud貌似一直是(hd0)  详情 回复 发表于 2019-6-2 10:12
回复

使用道具 举报

8#
发表于 2019-6-2 10:12:51 | 只看该作者
本帖最后由 江南一根葱 于 2019-6-2 10:14 编辑
青青草 发表于 2019-6-2 08:43
谢谢!
      另外,在grub2中,UD区是如何标识的?如,路径 UD区/WXPE/bios.cpio,应如何书写?


下个grub2文件管理器抄一下好了嘛,ud貌似一直是(hd0),模块是fb.mod,我直接用grubfm来生成的,又不怕缺模块,又能抄。。

点评

谢谢!  详情 回复 发表于 2019-6-2 17:40
回复

使用道具 举报

9#
发表于 2019-6-2 17:40:58 | 只看该作者
江南一根葱 发表于 2019-6-2 10:12
下个grub2文件管理器抄一下好了嘛,ud貌似一直是(hd0),模块是fb.mod,我直接用grubfm来生成的,又不怕 ...

谢谢!
回复

使用道具 举报

10#
发表于 2019-6-2 17:41:16 | 只看该作者
wintoflash 发表于 2019-6-2 10:17
第一块硬盘 (hd0) ud区 (hd0) 第一分区 (hd0,1) 第二分区 (hd0,2)
第二块硬盘 (hd1) ud区 (hd1) 第一 ...

谢谢!
回复

使用道具 举报

11#
发表于 2019-9-5 11:02:44 | 只看该作者
ksafei 发表于 2019-6-1 17:47
1.可以。我是这样用的
2.好像是fb

记得当时曾经成功定制了可以放在UD区的grldr,后来U盘坏了,就没有再弄。
昨天新买了一个U盘,想重新定制一个放在UD区的grldr,却怎么也想不起来当初是怎么定制成功的;
唉,老了... ...
     依稀记得好像是:
loopback bios (hd0)/bios.cpio
set prefix=(bios)/boot/grub
insmod part_gpt
insmod iso9660
insmod bios
insmod ext2
insmod blocklist
insmod echo
insmod test
insmod configfile
normal (bios)/boot/grub/bios.cfg

今天试了,却无法进入菜单。能否帮我纠正一下,错在哪里了?
谢谢!

点评

1.需加fb模块 2. ud区 (hd0)  详情 回复 发表于 2019-9-5 12:33
回复

使用道具 举报

12#
发表于 2019-9-5 12:33:43 | 只看该作者
青青草 发表于 2019-9-5 11:02
记得当时曾经成功定制了可以放在UD区的grldr,后来U盘坏了,就没有再弄。
昨天新买了一个U盘,想重新定 ...

1.需加fb模块
2. ud区 (hd0)

点评

fb模块已加载,ud区 (hd0) 也知道,但定制就是不成功。 能否将定制时的grub-bios.cfg和bios.cfg私信给我,供我参考? 谢谢了!  详情 回复 发表于 2019-9-5 17:07
回复

使用道具 举报

13#
发表于 2019-9-5 17:07:51 | 只看该作者
ksafei 发表于 2019-9-5 12:33
1.需加fb模块
2. ud区 (hd0)

fb模块已加载,ud区 (hd0) 也知道,但定制就是不成功。

能否将定制时的grub-bios.cfg和bios.cfg私信给我,供我参考?
谢谢了!

点评

起初以为是grub2引导ud区内的grldr问题,仔细看了下你的需求可能是grub2定制的问题,这个我也不懂  详情 回复 发表于 2019-9-5 18:35
已发短信,一些高深的问题还是要请教wintoflash大  详情 回复 发表于 2019-9-5 18:11
回复

使用道具 举报

14#
发表于 2019-9-5 18:11:40 | 只看该作者
本帖最后由 ksafei 于 2019-9-5 18:21 编辑
青青草 发表于 2019-9-5 17:07
fb模块已加载,ud区 (hd0) 也知道,但定制就是不成功。

能否将定制时的grub-bios.cfg和bios.cfg私信给 ...


已发短信,高深的问题还是请教wintoflash大吧
回复

使用道具 举报

15#
发表于 2019-9-5 18:35:49 | 只看该作者
青青草 发表于 2019-9-5 17:07
fb模块已加载,ud区 (hd0) 也知道,但定制就是不成功。

能否将定制时的grub-bios.cfg和bios.cfg私信给 ...

起初以为是grub2引导ud区内的grldr问题,仔细看了下你的需求可能是grub2定制的问题,这个我也不懂

点评

谢谢! 我是想将grub2定制的grldr和单文件bios.cpio直接置于UD区,以前好像可以,难道是我记错了?  详情 回复 发表于 2019-9-5 19:25
回复

使用道具 举报

16#
发表于 2019-9-5 19:21:12 | 只看该作者
wintoflash 发表于 2019-5-30 10:45
如果你加了regexp模块,就自动支持通配符 (*可以,?没用过不清楚)
search.file是个阉割版模块,正常情况下 ...

请教大侠:
      能否将grub2定制的grldr和单文件bios.cpio直接置于UD区?

builds-master\grub-mkimage.exe -d builds-master\i386-pc -C auto -c cfg\grub-bios-UD.cfg -p /boot/grub -o core.img -O i386-pc -v gzio fb biosdisk blocklist loopback tar part_msdos newc cpio fat iso9660 lua ext2 exfat ntfs search_fs_file regexp test
   Copy /B builds-master\i386-pc\lnxBoot.img+Core.img  grldr

grub-bios-UD.cfg内容如下:
loopback bios (hd0)/bios.cpio
set prefix=(bios)/boot/grub
insmod part_gpt
insmod iso9660
insmod bios
insmod ext2
insmod blocklist
insmod echo
insmod test
insmod configfile
normal (bios)/boot/grub/bios.cfg

这样似乎不可以。唉......
回复

使用道具 举报

17#
发表于 2019-9-5 19:25:25 | 只看该作者
ksafei 发表于 2019-9-5 18:35
起初以为是grub2引导ud区内的grldr问题,仔细看了下你的需求可能是grub2定制的问题,这个我也不懂

谢谢!
我是想将grub2定制的grldr和单文件bios.cpio直接置于UD区,以前好像可以,难道是我记错了?
回复

使用道具 举报

18#
发表于 2019-9-6 12:12:27 | 只看该作者
wintoflash 发表于 2019-9-5 20:15
有问题,应该单独开贴提问.
ud区和其他区没什么区别.你在ud区不行,那在其他区也不行.
另外就是注意,UD区 ...

谢谢!
我再试试。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-23 08:03

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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